بحث
لينكس: 5 أدوات لإدارة العمليات المستنزفة لموارد RAM و CPU
البرمجة #لينكس #إدارة_الموارد

لينكس: 5 أدوات لإدارة العمليات المستنزفة لموارد RAM و CPU

تاريخ النشر: آخر تحديث: 2 مشاهدة 0 تعليق 6 دقائق قراءة
2 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

هل تواجه بطئاً في أداء جهاز [[لينكس]] الخاص بك؟ غالباً ما يكون السبب وراء ذلك هو عملية واحدة أو أكثر تستهلك حصة غير عادلة من موارد [[RAM]] و [[CPU]]، مما يؤثر سلباً على سلاسة عمل نظامك. هذا الدليل سيزودك بالأدوات اللازمة لتحديد هذه العمليات وإدارتها بفعالية.

تُعد موارد الذاكرة العشوائية (RAM) ووحدات المعالجة المركزية (CPU) محدودة. عندما يتم تنفيذ رمز برنامج ما، تتشكل عملية (Process). تتطلب جميع العمليات، سواء كانت تابعة لنظام التشغيل، أو بيئة سطح المكتب، أو أي أوامر وتطبيقات تقوم بتشغيلها، وقتاً من المعالج وذاكرة عشوائية. يقوم نظام لينكس ووحدة المعالجة المركزية بإدارة تخصيص الذاكرة وموازنة وجدولة عبء عمل المعالج عبر النوى والخيوط لضمان حصول جميع العمليات على حصتها. على الرغم من أن التطبيقات مصممة لعدم احتكار موارد جهازك، إلا أن الأمور قد تسوء أحياناً، وقد تحاول بعض العمليات الاستيلاء على كل ذاكرتك واحتكار معالجك. في هذه الحالات، تحتاج إلى القدرة على تحديد العملية المارقة.

التحقيق في الاستخدام العالي لذاكرة RAM

يستخدم [[لينكس]] الذاكرة العشوائية (RAM) الحرة كذاكرة تخزين مؤقتة (cache). على الرغم من أنه قد يبدو أن كل ذاكرتك مستخدمة، إلا أن هذا الانطباع قد يكون خاطئاً. إذا لزم الأمر، يتم إسقاط العناصر من ذاكرة التخزين المؤقت لتخصيص ذاكرة RAM للعمليات العادية.

أمر free

يمنحك أمر free نظرة عامة سريعة على استخدام الذاكرة. خيار -h (human) يجعل الإخراج أسهل في القراءة.

تم تشغيل الأمر ثلاث مرات في نافذة طرفية، وفي نافذة طرفية أخرى، تم تشغيل برنامج طلب كميات كبيرة من الذاكرة العشوائية. انخفضت الذاكرة العشوائية المتاحة بمعدل ينذر بالخطر، مما يستدعي تحديد العملية أو العمليات المسؤولة عن ذلك.

قراءة /proc/meminfo

يعرض الأمر less /proc/meminfo معلومات مفصلة عن استخدام الذاكرة. يختلف الإخراج حسب النواة التي تعمل بها وبنية وحدة المعالجة المركزية الخاصة بك، ولكن الحقول القياسية تكون موجودة دائماً. هذه طريقة جيدة لرؤية عرض أكثر تفصيلاً لنوع استخدام الذاكرة الذي يستحوذ على أكبر جزء من ذاكرة RAM، لكنه لا يحدد العمليات الفردية.

استخدام أمر vmstat للعثور على مستنزفات الذاكرة

يمكن أن يمنحنا أمر vmstat نظرة على استخدام الذاكرة الافتراضية بمرور الوقت. لرؤية أربع مجموعات من النتائج، بفارق خمس ثوانٍ، مع عرض القيم بوحدة MiB، يمكننا استخدام الأمر التالي: vmstat 5 4 -S M.

استخدام top و htop للعثور على مستنزفات الذاكرة

يوفر كل من top و htop لوحة تحكم ديناميكية لمعلومات النظام، مع جدول عمليات يعرض سطراً واحداً من المعلومات لكل عملية. لفرز جدول العمليات حسب استخدام الذاكرة العشوائية (RAM)، اضغط على Shift+M.

في مثال، تم تشغيل برنامج يسمى "gobble" مرتين، وهو يستخدم ثلثي الذاكرة العشوائية. لإنهاء هاتين العمليتين، اضغط على k لبدء وظيفة الإنهاء. في top، نحتاج إلى توفير معرف العملية (PID) للعملية التي نرغب في إنهاءها. بشكل افتراضي، ستستخدم وظيفة الإنهاء معرف العملية الموجود في السطر العلوي. نظراً لأننا فرزنا الجدول حسب استخدام الذاكرة العشوائية، فهذا هو المعرف الذي نريد استخدامه، لذلك يمكننا فقط الضغط على Enter.

سيُطلب منك تحديد الإشارة التي يجب إرسالها إلى العملية. إشارة [[SIGKILL]] هي الإشارة رقم تسعة. نحتاج إلى إدخال الرقم تسعة، ثم الضغط على Enter مرة أخرى. إذا كررنا هذه العملية مرتين، فسيتم إنهاء كلتا حالتي برنامج "gobble". يمكنك أيضاً تحريك شريط التظليل الصغير إلى إدخال 9 SIGKILL، ثم الضغط على Enter.

استخدام أمر ps للعثور على مستنزفات الذاكرة

يمنحنا أمر ps معرف العملية (PID)، ويمكنه أيضاً أن يمنحنا معرف العملية الأصل (PPID). إذا كان لديك العديد من العمليات التي تستهلك الذاكرة والتي تم إطلاقها بواسطة نفس العملية الأصل، فإن إنهاء العملية الأصل ينهي عملياتها الفرعية أيضاً.

سنستخدم الخيار -e (كل العمليات)، وخيار -o (تنسيق إخراج معرف من قبل المستخدم). في إخراجنا، نطلب:

  • pid: معرف العملية.
  • ppid: معرف العملية الأصل.
  • comm: اسم الأمر.
  • %mem: النسبة المئوية لذاكرة RAM المستخدمة بواسطة هذه العملية.
  • rss: حجم المجموعة المقيمة (Resident Set Size). هذه هي الذاكرة الفعلية غير المبدلة التي استخدمتها العملية، بالكيلوبايت. لاحظ أن هذا لا يحسب الذاكرة المحجوزة التي لم يتم استخدامها فعلياً، ولا يحسب الذاكرة الافتراضية. ومع ذلك، للمهمة الحالية، هذا مؤشر جيد تماماً.
  • %cpu: هذا هو وقت المعالج الذي حصلت عليه العملية حتى الآن، مقسوماً على الوقت الذي كانت فيه العملية قيد التشغيل.

نقوم بالفرز حسب الذاكرة. تعني علامة الطرح الفرز العكسي. يمكننا الحصول على أسوأ 10 عمليات من خلال توجيه النتائج عبر head:

ps -e -o pid,ppid,comm,%mem,rss,%cpu --sort=-%mem | head -10

التحقيق في الاستخدام العالي لوحدة المعالجة المركزية (CPU)

إجراء تعقب العمليات المستنزفة لوحدة المعالجة المركزية (CPU) مشابه جداً للإجراءات التي ناقشناها لمستنزفات الذاكرة. نحتاج إلى تحديد العملية أو العمليات المخالفة والحصول على معرف العملية الخاص بها.

استخدام top و htop للعثور على مستنزفات CPU

يمكننا استخدام top و htop بنفس الطريقة تقريباً التي استخدمناها بها لتعقب العمليات المستهلكة للذاكرة. بشكل افتراضي، يفرز top و htop جداول العمليات الخاصة بهما حسب عمود %CPU. إذا قمت بتغيير عمود الفرز، يمكنك الضغط على Shift+P (للمعالج) لاستعادة الفرز حسب %CPU.

في مثال، هناك عملية تسمى "drain" تحتكر تقريباً كل وقت المعالج لنفسها. بعد تحديد الجاني، يمكننا الضغط على k لاستدعاء وظيفة إنهاء العملية.

استخدام أمر mpstat لمراقبة استخدام CPU

يجب أن تكون حذراً عند إنهاء العمليات. يجب ترك بعضها، خاصة عمليات النظام، وشأنها. يمنحك أمر mpstat لقطة عن استخدام المعالج لعمليات المستخدم والنظام.

ستحتاج إلى تثبيت mpstat على [[فيدورا]] و [[مانجارو]]، لكنه كان مثبتاً بالفعل على جهاز [[أوبونتو]] الخاص بنا.

على [[فيدورا]]، تحتاج إلى كتابة:

sudo dnf install sysstat

على [[مانجارو]]، الأمر هو:

sudo pacman -S sysstat

سنستخدم الخيار -P all (جميع المعالجات)، ونطلب تقارير كل ثانيتين، بإجمالي خمسة تقارير:

mpstat -P all 2 5

يمكننا أن نرى أن الحمل على وحدة المعالجة المركزية يأتي من جانب المستخدم، وليس جانب النظام. الصف السادس هو متوسط التقارير الخمسة التي طلبناها.

استخدام ps للعثور على مستنزفات CPU

يمكننا استخدام ps للبحث عن العمليات كثيفة الاستخدام لوحدة المعالجة المركزية أيضاً. مع تعديل طفيف لأمرنا السابق، يمكننا الفرز حسب المعالج:

ps -e -o pid,ppid,comm,%mem,rss,%cpu --sort=-%cpu | head -10

الإدخال حول ps هو إشارة خاطئة، فنحن نعلم أنه لم يعمل إلا لجزء من الثانية. في السطر الثاني، يمكننا رؤية معرف العملية للعملية التي تحتكر وحدة المعالجة المركزية. باستخدام هذه المعلومات، يمكننا استخدام top أو htop، أو أمر kill، لإنهاء العملية.

الخاتمة

في معظم الأوقات، سيعمل جهاز [[لينكس]] الخاص بك بشكل جيد، مع عمل جميع العمليات ضمن التفاوتات المقبولة. إذا لاحظت أن جهاز الكمبيوتر الخاص بك أصبح بطيئاً، فقم بالتحقيق فيه باستخدام هذه الأدوات. قد تجد عملية تستهلك الذاكرة أو وحدة المعالجة المركزية بشكل مفرط تعمل بحرية.

هل واجهت مشاكل مماثلة مع استنزاف الموارد في لينكس؟ شاركنا تجربتك وأسئلتك في التعليقات أدناه!

الأسئلة الشائعة

هي العمليات التي تستهلك كميات كبيرة وغير مبررة من موارد الذاكرة العشوائية (RAM) أو وحدة المعالجة المركزية (CPU)، مما يؤدي إلى بطء أداء النظام.

يمكن مراقبة استهلاك RAM باستخدام أوامر مثل `free` للحصول على نظرة عامة، و `top` و `htop` لمراقبة ديناميكية، و `ps` للحصول على تفاصيل العمليات الفردية.

يمكن استخدام وظيفة الإنهاء (kill) داخل أدوات مثل `top` و `htop`، أو استخدام أمر `kill` مباشرة مع معرف العملية (PID) وإشارة `SIGKILL` (الرقم 9).

لا، `mpstat` (جزء من حزمة sysstat) قد لا يكون مثبتاً بشكل افتراضي على جميع التوزيعات. يتطلب التثبيت يدوياً على توزيعات مثل فيدورا ومانجارو باستخدام `dnf` و `pacman` على التوالي، بينما قد يكون مثبتاً مسبقاً على أوبونتو.

التعليقات 0

سجل دخولك لإضافة تعليق

لا توجد تعليقات بعد. كن أول من يعلق!