البحث في الموقع
المحتوى عن 'نظام لينكس'.
-
لقد اقتضى التعرّف على مشكلة اختناق العتاد hardware bottlenecks، ضرورة امتلاك خبرات عالية في العديد من المجالات التقنية، وقد أصبح من السهل مؤخرًا كشف هذه المشاكل باستخدام أدوات مراقبة الأداء مفتوحة المصدر ذات الواجهات الرسومية التي تسمح لأي مستخدم بتشخيص المشكلة التي يعاني منها، دون شراء أدوات مكلفة، ودون الحاجة إلى تعلّم الأوامر المعقدة. تُعَد الحواسيب أنظمةً متكاملةً تقدم أداءً بسرعة تتناسب مع أبطأ المكونات العتادية الموجودة فيها، فعندما تكون إحدى المكونات أقلّ قدرةً من المكونات الأخرى، فإنه حتمًا سيسبب تأخير عمل كامل النظام. ويُعرف ما سبق باسم "اختناق الأداء"، حيث تتيح إزالة الاختناقات الحادة إمكانية تحسين أداء النظام، بحيث يشعر المستخدم بأنّ الحاسب يعمل بسرعة عالية. ستشرح هذه المقالة كيفية التعرف على الاختناقات الخاصة بالعتاد في أنظمة لينكس، حيث تنطبق التقنيات المذكورة على كل من الحواسب الشخصية والمخدّمات، حيث ستركز المقالة على الحواسب الشخصية ولن تتضمن اختناقات خاصة بالخوادم مثل تلك الناتجة عن إدارة الشبكة المحلية LAN، أو أنظمة قواعد البيانات التي تحتاج عادةً أدوات خاصة لكشف الاختناق. ستتضمن المقالة أيضًا تعريفًا بمشكلة اختناق الأداء، كما ستتناول بعضًا من الأدوات التي يمكن استخدامها في كشف حدوث الاختناقات، إلى جانب تقديمها لبعض الإرشادات لكشف الاختناق أينما حدث ضمن الحاسوب، ومحاولة حل المشاكل المرتبطة به. ستركز هذه المقالة تحديدًا على الأدوات مفتوحة المصدر ذات الواجهات الرسومية لكشف ومعالجة مشاكل الاختناقات المختلفة، حيث نجد أن معظم المقالات حول اختناقات الأداء في نظام لينكس تكون معقدة، نظرًا لاستخدام هذه المقالات لأوامر مخصصة، تحتاج إلى مختصين إلى استخدامها؛ إلا أنّ المشاكل الأكثر شيوعًا تُكشف ببساطة من قِبل المستخدم دون الحاجة إلى مثل هذا التعقيد. تجعل الأدوات ذات الواجهات الرسومية التي تتيحها منصة Open Source لكشف اختناق الأداء أمرًا بسيطًا، فالهدف من هذه المقالة أن تقدّم للقارئ مقاربةً بسيطةً يمكن استخدامها في أية حالة تواجه المستخدم. من أين نبدأ يتألف الحاسوب من ستة موارد عتادية أساسية وهي: المعالجات الذاكرة التخزين منافذ اتصال USB الاتصال بالانترنت المعالج الرسومي يمكن لأيٍ من الموارد السابقة في حال أصبح أداؤه سيئًا، أن يسبب اختناقًا في الأداء، ويجب عند تشخيص الاختناق أن نراقب الموارد الستة سابقة الذكر. توجد العديد من الأدوات مفتوحة المصدر التي يمكن استخدامها لمراقبة الموارد المختلفة في الحاسوب، حيث سنستخدم أداة GNOME System Monitor لأن مخرجاتها سهلة الفهم. ويمكن الحصول على هذه الأداة بسهولة من مستودعات توزيعات لينكس، حيث سيكون علينا فقط تشغيل الأداة ومن ثم نضغط على تبويب الموارد Resources، ويمكن التعرف على العديد من مشاكل الأداء مباشرةً. الشكل 1: تكتشف الأداة System Monitor العديد من المشاكل. تُظهر لوحة Resources ثلاثة أقسام رئيسية هي تاريخ وحدة المعالجة المركزية CPU History، وتاريخ الذاكرة والذاكرة المبدلة Memory and Swap History، وتاريخ الشبكة Network History، حيث يمكن بمجرد إلقاء نظرة سريعة أن نلاحظ إذا كانت المعالجات غارقةً في العمل، أو إذا كان الحاسب قد نفّذ من الذاكرة، أو أنه يستهلك كامل عرض المجال الخاص بالانترنت يجب تفقد هذه الأداة عند الشعور بأن أداء الحاسب قد أصبح سيئًا لأنها تبين بسهولة بعض الأدلة على مشاكل الأداء الأكثر شيوعًا. التعرف على اختناقات المعالج يجب أن نتعرف على العتاد المتاح لدينا عند تشخيص الاختناق، حيث تتوفر العديد من الأدوات للتعرف على مواصفات الحاسوب المستخدم وتفاصيل العتاد الكاملة، وتُعَد الأداة HardInfo من أفضل الأدوات، وذلك لأنها شائعة وتمتلك واجهات رسومية سهلة القراءة. بعد تشغيل الأداة HardInfo يحصل اختيار التبويب Computer -> Summary، فتظهر لوحة تتضمن معلومات وحدة المعالجة المركزية مثل عدد الأنوية cores والنياسب أو الخيوط threads، والسرعات speeds، كما أنها تتضمن معلومات عن اللوحة الأم وبقية مكونات الحاسب. الشكل 2: تُظهر واجهة أداة HardInfo التفاصيل عن العتاد المتوفر في الجهاز. تبيّن الأداة HardInfo أن الحاسب المستخدم في المثال يمتلك وحدة معالجة مركزية فيزيائية واحدة، والتي تتضمن معالجين أو نواتين. حيث تدعم كل نواة استخدام خيطين أو ما يعرف بالمعالجات المنطقية، مما يجعل العدد الكلي المتاح أربع معالجات منطقية، وهذا بالضبط ما أظهره الجزء الخاص بتاريخ المعالج من أداة System Monitor في الشكل 1. يحدث اختناق المعالج عندما يعجز المعالج عن تلبية الطلبات الواردة، إليه لأنه يكون بحالة انشغال كامل. يمكن التعرف على هذه الحالة عندما تُظهِر أداة System Monitor أن استخدام المعالج المنطقي تجاوز 80% أو 90% لفترة زمنية مستمرة. حيث نجد في المثال التالي أن ثلاثة من المعالجات المنطقية الأربعة قد استُهلِكت استهلاكًا كاملًا، وهذا ما يُعَد اختناقًا لأنقدرة وحدة المعالجة المركزية المتاحة لم تعد كافيةً لتنفيذ أي من الأعمال الأخرى في حال ورودها. الشكل 3: اختناق في عمل المعالج معرفة أي تطبيق هو سبب المشكلة؟ يجب أن نعرف أي تطبيق أو مجموعة التطبيقات التي تستهلك وحدة المعالجة المركزية، حيث يمكن أن نشاهد العمليات مرتّبةً وفقًا إلى نسبة استهلاكها لوحدة المعالجة المركزية عند الضغط على تبويب Processes في أداة System Monitor ومن ثم بالضغط على ترويسة % CPU، كما يمكن عندها معرفة أي من التطبيقات يخنق النظام. الشكل 4: التعرف على العمليات المسيئة. تستهلك كل من العمليات الثلاثة الأولى نسبة 24% من موارد وحدة المعالجة المركزية الإجمالي، حيث نلاحظ وجود أربعة معالجات منطقية في النظام، مما يعني أنّ كل عملية تستهلك معالجًا كاملًا كما يُظهر الشكل 3. تبيّن لوحة العمليات Processes أنّ برنامجًا اسمه analytical_AI هو سبب المشكلة، حيث يمكن الضغط بالزر اليميني عليه ضمن اللوحة لنجد المزيد من التفاصيل حول استهلاكه لموارد الحاسوب، متضمنةً نسبة استهلاك الذاكرة وعدد الملفات المفتوحة وتفاصيل عمليات الإدخال والإخراج، والمزيد من التفاصيل الأخرى. يمكن في حال كان المستخدم يتمتع بصلاحيات المدير Administrator إدارة هذه العملية، إذ يمكن تغيير أولويتها وإيقافها، أو إعادتها للعمل، أو إنهائها أو قتلها، مما يؤدي إلى حل مشكلة الاختناق مباشرةً. الشكل 5: الضغط بالزر اليميني على العملية لإدارتها. كيف يمكن أن نحل مشاكل اختناق المعالجة؟ يمكن في البدائة إدارة العملية التي تكون سبب المشكلة فور حدوثها، حيث يمكن منع الاختناق من الحدوث باستبدال هذا التطبيق بآخر، أو من خلال محاولة تجنب استخدامه أو تغيير سلوك المستخدم عند استخدام هذا التطبيق، إضافةً إلى إمكانية جدولة التطبيق في ساعات عدم استخدام الحاسب من قِبل المستخدم. يمكن أن تُعالَج مشكلة مخفية في الذاكرة الرئيسية والتي يكون لها تأثير مباشر على عمل وحدة المعالجة المركزية، كما يمكن العمل على إجراء تحسينات في أداء التطبيق أو النظام البرمجي، أو قد تحتاج إلى ترقية العتاد آنذاك لأنه لم يَعُد كافيًا بالنسبة للتطبيقات التي تشغلّها. اختناقات المعالج الشائعة يمكن أن نصادف العديد من الاختناقات الشائعة عند مراقبة وحدات المعالجة المركزية باستخدام أداة System Monitor، حيث يمكن في بعض الأحيان حدوث حالة اختناق في أداء أحد المعالجات المنطقية، بينما تكون المعالجات المتبقية ذات مستوى استخدام منخفض، وذلك يعني أنّ أحد التطبيقات المستخدمة لم يُطوّر بذكاء بحيث يستفيد من ميزة وجود أكثر من معالج منطقي في الحاسوب، مما سبب الوصول إلى أقصى أداء ممكن على المعالج المستخدم. ولكن من وجهة نظر مختلفة، نجد أنّ المعالجات المتبقية حرة ومتاحة لتنفيذ أي من الأعمال الأخرى، أي أنّه لم تُشَغَّل كامل موارد الحاسب بما يعيق تنفيذ أعمال جديدة. يمكن أن نجد معالجًا منطقيًا عالقًا دائمًا بنسبة استخدام 100، وقد يعني ذلك أنه إما مشغول جدًا أو أنه توجد عملية ما قد أصبحت بحالة جمود، كما يمكن أن نتأكد بأن العملية قد أصبحت جامدةً عندما لا تمارس العملية أي نشاط متعلق بـ قرص التخزين (مثلما ستُظهِر لوحة العمليات Processes في أداة System Monitor). وفي الختام يمكن ملاحظة أنه عندما تصبح جميع المعالجات المنطقية في حالة اختناق، فإن الذاكرة تصبح مستخدمةً كليًا أيضًا. يمكن أن تسبب حالات نفاد الذاكرة Out-of-memory اختناقات في المعالج، وفي هذه الحالة يجب العمل على حل مشاكل الذاكرة المخفية والابتعاد عن التركيز الكثيف على حل مشكلة المعالج، والتي تُعَد عارضًا من أعراض المشكلة الحقيقية. التعرف على اختناقات الذاكرة تمتلك الحواسب الشخصية الحديثة اليوم كميةً وافرةً من الذاكرة، لذا نجد أن اختناقات الذاكرة قد أصبحت أقل شيوعًا موازنةً بالسنين الماضية، ومع ذلك يمكن أن نصادف هذه المشكلة عند تشغيل برامج ذات استهلاك ذاكرة كثيف، وخصوصًا إذا لم يكن الحاسب يمتلك حجمًا كافيًا من الذاكرة العشوائية RAM. يستخدم نظام لينكس الذاكرة من أجل البرامج ومن أجل تخبئة المعطيات المخزّنة على القرص، حيث تفيد الثانية في تسريع الوصول إلى المعطيات الموجودة على القرص، ويمكن لنظام لينكس أن يقرأ المعطيات الذي خزنها على جزء القرص الصلب المستخدم كذاكرة في أي وقت، وتقديم هذه المعطيات للبرامج التي تحتاجها. تُظهر لوحة الموارد Resources ضمن أداة System Monitor؛ إجمالي الذاكرة والكمية المستخدمة منها، ويمكن في لوحة العمليات Processes مشاهدة استخدام الذاكرة لكل عملية على حدى. يظهر الشكل الجزء من لوحة الموارد Resources ضمن أداة System Monitor التي تتعقب تراكم استخدام الذاكرة. الشكل 6: اختناق الذاكرة. نلاحظ إلى يمين الذاكرة وجود جزء التبادل، وهو مساحة القرص التي يستخدمها نظام لينكس عندما تصبح نسبة الذاكرة المتاحة منخفضة، حيث تُكتَب محتويات الذاكرة إلى القرص من أجل متابعة العمليات، مما يحقق استخدام جزء التبادل مثل توسعة بطيئة بعض الشيء لذاكرة الوصول العشوائي. يمكن أن نبحث بصورة رئيسية عن مشكلتين في أداء الذاكرة وهي: تظهر الذاكرة وكأنها مستخدمة كثيرًا، ويمكن مشاهدة نشاط متكرر أو متزايد على جزء التبادل. أصبح كل من جزئي الذاكرة والتبادل مستخدمين كليًا. تشير الحالة الأولى إلى وجود بطء في الأداء لأن جزء التبادل أبطأ من الذاكرة، وذلك نظرًا لتواجده على القرص الصلب. ويمكن أن يتعايش بعض المستخدمين مع مستوى الأداء بحيث لا يَعُدونه بطيئًا. تُعَد مسألة اختيار حجم التبادل أمرًا هامًا، حيث يرتبط تحديده بخيارات المستخدم، لذا فعليه أن يقرر على سبيل المثال معدل نشاط جزء التبادل وسرعته والتوقعات منه وغيرها من القضايا التي تؤثر إجمالًا على أداء الحاسب، إذ يرتبط تحديد حجم جزء التبادل المستخدم بحجم الذاكرة الإجمالي الموجود وعادةً لا يتجاوز نسبة 20% من إجمالي الذاكرة. أما الحالة الثانية التي تحدث عندما تكون كلٍ من الذاكرة وجزء التبادل، فهما مُستخدمان كليًا فهي حالة اختناق الذاكرة، أين يبدو الحاسب وكأنه لا يستجيب، ومن الممكن أن يصل إلى حالة تجمد thrashing والتي لا يكون فيها الحاسب قادرًا على تنفيذ الكثير من العمليات إضافةً إلى عمليات إدارة الذاكرة. يظهر الشكل 6 أعلاه حاسوبًا قديمًا يمتلك ذاكرة نفاذ عشوائي ذات حجم 2 غيغابايت، وبما أنّ استهلاك الذاكرة تجاوز 80%، فقد بدأ النظام بالكتابة في جزء التبادل، وهو ما سبب انحسارًا في مدى استجابة الحاسب. تُظهر هذه الصورة بأن استهلاك الذاكرة قد تجاوز 90% وأن الحاسب قد دخل في حالة الجمود. يُعَد الحل النهائي لمشاكل الذاكرة، إما باستخدام ذاكرة أقل إن أمكن ذلك عبر إغلاق التطبيقات غير المستخدمة ومعرفة التطبيقات التي تعمل باستمرار في الخلفيّة مع إيقاف التطبيقات غير الضرورية منها، أو وبدراسة مواصفات الحاسوب ومعرفة حجم الذاكرة الأعظمي المسموح به، حيث يمكن استبدال الذواكر الموجودة ضمن الجهاز بأكبر منها أو توسعة الذاكرة الإجمالية عبر إضافة ذواكر إضافية بشرط دراسة التوافق بين الذواكر الجديدة والقديمة. التعرف على اختناقات التخزين توجد اليوم العديد من الأشكال لوسائط التخزين فبعض منها يكون أقراص HDD أو أقراص SSD. يمكن أن تكون واجهات الربط مع هذه الأقراص منافذ PCIe وSATA وThunderbolt وUSB.مهما كان نوع وسيط التخزين الذي تمتلكه فيمكن اتباع نفس الإجرائية للتعرف على اختناقات الأقراص. نقوم بتشغيل أداة System Monitor ثم من لوحة العمليات Processes نراقب معدلات الإدخال والإخراج من أجل العمليات بشكل إفرادي مما يتيح التعرف على العمليات التي تقوم بمعظم عمليات الإدخال والإخراج من وإلى القرص. لا تُظهر هذه الأداة معدل النقل التراكمي للقرص، لذا يجب مراقبة الاستهلاك الإجمالي على أحد الأقراص لكشف حدوث اختناق في التخزين، ويمكن تحقيق ذلك باستخدام الأمر atop، وهو متاح في معظم منصات تنزيل البرمجيات. يمكن أن نكتب الأمر atop ضمن موجه الأوامر، حيث يُظهر الخرج أدناه بأن الجهاز sdb مشغول بنسبة 101%، ويعني ذلك بوضوح أنّه قد وصل الجهاز إلى حد استخدامه الأعظمي وأنه يُقيِّد سرعة النظام على تنفيذ الأعمال. الشكل 7: يتعرف الأمر atop على اختناق القرص. يمكن أن نلاحظ أن أحد المعالجات ينتظر القرص الصلب بنسبة 85% من وقته لكي يؤدي مهامه، ويحدث ذلك عندما يصبح جهاز التخزين بحالة اختناق. عمليًا، سيراقب العديد من المستخدمين حدوث انتظار المعالج لوحدات الإدخال والإخراج لكشف حدوث اختناقات التخزين، حيث يمكن استخدام الأمر atop لكشف حدوث اختناق القرص الصلب بسهولة، ومن ثم يمكن استخدام لوحة العمليات Processes من أداة System Monitor للتعرف على العمليات الإفرادية التي تسبب مشكلة الاختناق. كيفية التعرف على اختناقات منفذ USB يستخدِم العديد من الناس منافذ USB باستمرار طوال اليوم، ومع ذلك لا يتأكدون مما إذا كان استخدام هذه المنافذ مثاليًا، وذلك مهما كان نوع الجهاز الذي توصله عبر منفذ USB، لهذا يجب التأكد من الحصول على أفضل أداء ممكن من هذه الجهاز. الشكل 8: تتفاوت سرعة منافذ USB كثيرًا (Howard Fosdick, بناءً على شكل قدمه Tripplite و Wikipedia, منشورة برخصة CC BY-SA 4.0). يظهر التبويب USB Devices ضمن أداة HardInfo المعايير الخاصة بمنافذ USB التي يدعمها الحاسوب، حيث تتيح معظم الحواسيب إمكانية استخدام منافذ USB بسرعات مختلفة، كما يمكن أن نعرف السرعة لأحد منافذ الـ USB بالاعتماد على لون المنفذ. يمكن أيضًا معرفة سرعة المنفذ الموجود في الحاسب عن طريق موازنة لونه مع الألوان المستخدمة في الشكل السابق، كما يمكن العودة إلى الدليل الورقي أو الإلكتروني المُرفق بالحاسب الشخصي، والذي يتضمن عدد المنافذ الموجودة على الحاسب وسرعة كل منها. إذا أردنا مشاهدة السرعات الحقيقية التي نحصل عليها، فيمكننا اختبارها باستخدام الأداة GNOME Disks مفتوحة المصدر، حيث سنشغّل الأداة ومن ثم اختيار Benchmark Disk، وعند تشغيل عملية الاختبار، ستظهر السرعة الحقيقية الأعظمية التي يمكن الحصول عليها من أحد المنافذ الذي أوصِل إليه جهاز ما. يمكن أن نحصل على سرعات نقل متفاوتة من أجل أحد المنافذ، وذلك تبعًا لنوع الجهاز الموصول بالمنفذ، حيث يعتمد تحديد معدل المعطيات على تشكيلة مكونة من المنفذ والجهاز الموصول به. فعلى سبيل المثال، عند وصل جهاز ما يمكن أن يعمل بسرعة 3.1 وقد وُصل بمنفذ ذي سرعة 2.0، فإن الجهاز سيعمل بسرعة 2.0 دون مشاكل ولن يظهر أي إنذار بأن الجهاز يعمل بسرعة أقل من سرعته الأعظمية؛ بينما إذا وُصِل جهاز يعمل بسرعة 2.0 إلى منفذ 3.1، فسيعمل ولكن بسرعة 2.0. لذا فمن أجل الحصول على عمل USB سريع، يجب أن نضمن أن كلًا من المنفذ والجهاز يدعمان السرعة. وتوفر الأداة GNOME Disks الوسائل اللازمة للتحقق من ذلك. إذا أردنا كشف حدوث اختناقات خاصة بمنافذ USB، فيمكن استخدام نفس الإجراء الذي نفذناه عند التعامل مع أقراص الحالة الصلبة والأقراص الصلبة، حيث نشغّل الأمر atop لكشف وجود اختناق خاص بوسيط التخزين الموصول عن طريق USB، ومن ثم نستخدم برنامج System Monitor من أجل الحصول على تفاصيل فيما يخص العملية التي سببت المشكلة. كيفية التعرف على اختناقات اتصال الإنترنت تُظهر لوحة الموارد Resources ضمن أداة System Monitor، سرعة الاتصال بالإنترنت في الزمن الحقيقي كما هو ظاهر في الشكل 1. توجد العديد من الأدوات المبنية بلغة بايثون لاختبار سرعة الانترنت الأعظمية، ولكن يمكننا اختبار السرعة باستخدام المواقع على الانترنت مثل Speedtest وFast.com وSpeakeasy، حيث يجب علينا إغلاق كل شيء وتشغيل عملية اختبار السرعة فقط، وذلك للحصول على أفضل نتيجة ممكنة، إضافةً إلى إطفاء اتصال VPN وتشغيل الاختبارات في أوقات متفرقة من اليوم، وموازنة النتائج من عدة مواقع اختبار سرعة. يمكن عندها موازنة النتائج لديك مع سرعة التنزيل والرفع، والتي يدعي مزود الخدمة تقديمها لك، وبهذا الشكل يمكن التأكد من أن مزود خدمة الإنترنت يقدم السرعة الحقيقية التي ادّعى توفيرها للمستخدم. يمكن في حال وجود موجه Router مستقل أن يتم الاختبار بوجوده وبغيابه، وبهذا يمكن أن نحكم فيما إذا كان الموجه يمثل نقطة الاختناق أم لا. وفي حال وجود خدمات اللاسلكي WiFi، فيجب أن يَجري الاختبار بوجودها وبغيابها، أي بوصل الكابل مباشرةً بين الجهاز المحمول وجهاز المودم)، ففي الحقيقة توجد عدة حالات اشتكى فيها المستخدمون من مزود الخدمة الخاص بهم علمًا أنّ مشكلتهم الحقيقية كانت الاختناق في خدمات الاتصال اللاسلكي والذي كان بإمكانهم حلها بأنفسهم، ففي حال كان أحد البرامج يستهلك كامل اتصال الانترنت، فيجب معرفته باستخدام الأمر nethogs، وهو متاح لدى أغلب منصات تنزيل البرمجيات. لقد أظهرت أداة System Monitor في أحد الأيام فجأةً وجود استهلاك إنترنت مفاجئ، وعند كتابة الأمر nethogs في موجه الأوامر، حدث التعرف فورًا على سبب استهلاك عرض المجال بأنه عملية تحديث لمضاد الفايروسات Clamav الشكل 9: تتعرف الأداة Nethogs على البرامج التي تستهلك عرض المجال. التعرف على اختناقات معالج الرسوم يجب معرفة نوع معالج الرسوم الموجود في الحاسب، فإذا كان يحدث توصيل الشاشة إلى اللوحة الأم من الخلف في الحاسب الشخصي، فهذا يدل على وجود معالج رسومي مدمج؛ أما إذا كان توصيل الشاشة إلى اللوحة الأم عن طريق بطاقة إضافية تُركّب على اللوحة الأم، فهذا يعني وجود نظام فرعي مستقل لمعالجة الرسوم، والتي تُعرف بإسم بطاقة الفيديو Video Card، أو بطاقة الرسوميات Graphics Card. تكون البطاقات هذه أكثر قوةً وكلفةً من المعالجات الرسومية المدمجة باللوحة الأم، علمًا أن الحواسيب المحمولة تستخدم المعالجات الرسومية المدمجة دومًا ولا يمكن إضافة بطاقة رسومية إليها. تُظهر لوحة PCI Devices ضمن أداة HardInfo، معلومات حول وحدة معالجة الرسوميات لديك، كما يمكن أن تُظهر كمية الذاكرة المخصصة للفيديو (عن طريق البحث عن الذاكرة المعنونة باسم قابلة للجلب المسبق Prefetchable). الشكل 10: توفر الأداة HardInfo معلومات عن المعالجة الرسومية. تعمل وِحدتَي المعالجة المركزية و معالجة الرسوميات بتكامل، حيث يمكن ببساطة أن نقول أن وحدة المعالجة المركزية تحضر الإطارات Frames لوحدة معالجة الرسوميات لتُظهِرها، ويحدث الاختناق في معالج الرسوم عندما تنتظر وحدة المعالجة المركزية العمل من وحدة معالجة الرسوميات، والتي تكون مشغولةً كليًا، حيث يمكن كشف ذلك عن طريق مراقبة معدلات استخدام كلا الوحدتين، إذ تتيح الأدوات مفتوحة المصدر Conky وGlances ذلك بسهولة. فيما يلي مثال تم الحصول عليه باستخدام الأداة Conky، ويمكن ملاحظة أن النظام يمتلك كميةً وافرةً من قدرة المعالجة في وحدة المعالجة المركزية؛ أما وحدة معالجات الرسوميات، فهي مستهلكة بنسبة 25%، فلو تخيلنا أنّ هذا الرقم قارب الـ 100%، فعندها نعلم أنّ وحدة المعالجة المركزية تنتظر وحدة معالجة الرسوميات، وأنه توجد حالة اختناق في وحدة معالجة الرسوميات. الشكل 11: تظهر أداة Conky استخدام وحدة المعالجة المركزية ووحدة معالجة الرسوميات (صورة مقتبسة من منتدى AskUbuntu). يمكن في بعض الحواسيب أن نضطر إلى استخدام أدوات مصنّعة خصيصًا من قِبل الشركة المصنعة لبطاقة الفيديو، وتتوفر هذه الأدوات للتنزيل من موقع GitHub. الخلاصة تتألف الحواسيب من مجموعة من الموارد العتادية المتكاملة، حيث يمكن أن تسبب أي منها في حال تأخرها عن تنفيذ الأعمال المسندة إليها؛ اختناقًا في الأداء قد يُسبب بطء أداء النظام كاملًا، لهذا يجب أن نكون قادرين على التعرف على الاختناقات وتصحيحها للحصول على الأداء المثالي. اقتضى التعرّف على مشكلة اختناق العتاد hardware bottlenecks امتلاك خبرات عالية في العديد من المجالات التقنية، وحديثًا أصبح من السهل كشف هذه المشاكل باستخدام أدوات مراقبة الأداء مفتوحة المصدر ذات الواجهات الرسومية التي تسمح لأي مستخدم بتشخيص المشكلة التي يعاني منها، دون شراء أدوات مكلفة، ودون الحاجة إلى تعلّم الأوامر المعقدة. جميع الصورة منشورة برخصة CC BY-SA 4.0 لصاحبها Howard Fosdick إلا إن ذكر خلاف ذلك. ترجمة -وبتصرف- للمقال Identify Linux performance bottlenecks using open source tools لصاحبه Howard Fosdick. اقرأ أيضًا 4 أدوات مفتوحة المصدر من أجل مراقبة نظام لينكس ما هو نظام التشغيل لينكس؟ دليل المستخدم للروابط في نظام ملفات لينكس عشرون أمرا في لينكس يفترض أن يعرفها كل مدير نظم 4 أدوات مفتوحة المصدر من أجل مراقبة نظام لينكس
-
يُعَد امتلاك المعلومات المناسبة هو الخطوة الأولى لحل أي مشكلة حاسوبية، سواءً كانت هذه المشكلة مرتبطةً بنظام التشغيل لينكس أو بالعتاد الذي يشغّله النظام. توجد العديد من الأدوات المتاحة منها ما يكون مضمّنًا في معظم توزيعات لينكس، ومنها لا يكون مثبّتًا افتراضيًا، ويجب على المستخدم أن يثبتها في حال رغبته باستخدام الأداة. تقدّم هذه الأدوات الكثير من المعلومات المفيدة في تشخيص المشاكل الخاصة بالحاسوب. تناقش هذه المقالة بعض الأدوات التفاعلية التي تعمل بالأوامر CLI، والتي يمكن تثبيتها بسهولة على توزيعات لينكس ريد هات Red Hat وفيدورا Fedora وسينتوس CentOs وكل التوزيعات المشتقّة منها، حيث تتوفر العديد من الأدوات ذات الواجهات الرسومية التي يمكن استخدامها لنفس الغرض إلا أنها لا تكون قابلةً للاستخدام في جميع الأحيان، نظرًا لعدم امتلاك بعض الخوادم القدرة على العرض رسوميًا. تقدّم المقالة أربع أدوات أساسية ضمن بيئة نظام لينكس لمراقبة النظام وتشخيص المشاكل فيه وهي top وatop وhtop وglances، حيث تراقب هذه الأدوات نسبة استخدام الذاكرة ووحدة المعالجة المركزية CPU، كما تتيح معظمها معلومات عن العمليات قيد التشغيل، إضافةً إلى العديد من الجوانب الأخرى، وتظهر هذه المعلومات تقريبًا بالزمن الحقيقي لنشاط النظام. متوسط الحمل يمثّل متوسط الحمل Load average متوسط عدد التعليمات التي تنتظر أن ينفذها المعالج، فهو مقياس حقيقي لأداء وحدة المعالجة المركزية خلافًا لنسبة استهلاك وحدة المعالجة المركزية، والتي تُعَد مقياسًا غير دقيق كونها تتضمّن زمن انتظار متعلّق بعملية الإدخال والإخراج حيث يكون عندها المعالج خاملًا. نفترض أنّ النظام يمتلك معالجًا وحيدًا، وبالتالي عندما يكون متوسط الحمل مساويًا للواحد، فهذا يعني أنّ المعالج ينفذ الطلبات الواردة إليه دون تأخير وأن نسبة استخدامه ممتازة؛ أما عندما يصبح متوسط الحمل أقل من واحد، فيعني ذلك أنّ المعالج غير مستخدم حسب المطلوب، وأنّه قادر على تنفيذ المزيد من العمل، وعندما يصبح متوسط الحمل أكبر من واحد، فالمعالج هنا يكون قد أصبح مشغولًا مع وجود بعض التعليمات بحالة انتظار لفترة زمنية قبل أن ينفّذها المعالج. في نظام أحادي المعالج وعندما يكون متوسط الحمل مساويًا 1.5 فإنّ ثلث التعليمات الواردة تنتظر لفترة زمنية قبل أن يبدأ تنفيذها، أما في حال النظم متعددة المعالجات، فلو فرضنا أنه يوجد نظام متعدد المعالجات يمتلك أربع معالجات، فإن متوسط الحمل المثالي يساوي أربعة. فإذا كان هذا المتوسط مساويًا 3.24 فسيعني ذلك أنّ ثلاثة معالجات منها مستخدمة كليًا وقد بلغت نسبة استخدام المعالج الرابع 76%. تكون قيمة متوسط الحمل المثالية مساويةً لعدد المعالجات في النظام، ويعني ذلك أنّ جميع المعالجات مستخدَمة بطاقتها القصوى، ولا تضطر أية تعليمة للانتظار حتى تُنفّّذ. تعطي هذه القيمة على المدى الطويل نظرةً عامّةّ للاستخدام العام للموارد في الحاسوب. الإشارات تسمح جميع أدوات المراقبة المذكورة سابقًا بإرسال إشارات Signals للعمليات قيد التشغيل، وتكون لكل إشارة وظيفة محددة مرتبطة بها، كما يمكن أن يعرّف البرنامج الذي يستقبل هذه الإشارة، الوظيفة التي تحدث عند استلامه للإشارة. يسمح الأمر Kill بإرسال الإشارات إلى العمليات أيضًا دون الحاجة لاستخدام برامج المراقبة، ويمكن تنفيذ الأمر kill -l لاستعراض جميع الإشارات التي يمكن استخدامها مع العمليات المختلفة، وتُستخدَم ثلاث من هذه الإشارات من أجل إيقاف العمليات والتي تسمى أحيانًا بقتل العملية kill a process. SIGTERM (15): ترسَل هذه الإشارة افتراضيًا من قِبل الأداة top وبقية أدوات المراقبة عند الضغط على المحرف k، وتُعَد هذه الإشارة هي الأقل فعاليةً، لأنها تشترط امتلاك البرنامج المستقبل لها على جزء برمجي للتعامل مع هذه الإشارة Signal Handler. يجب أن يعترض الجزء البرمجي المذكور الإشارة الواردة إلى العملية والتصرف بطريقة صحيحة، وعند غياب هذا الجزء البرمجي، فستتجاهل العملية الإشارة الواردة إليها؛ أما الغاية من وجود إشارة SIGTERM، فهي إخبار البرنامج أنّ المستخدم يرغب بإنهاء البرنامج لوجوده، مما يجب أن يدفعه لتحرير الموارد التي استخدمها هذا البرنامج وإغلاق الملفات المفتوحة، وذلك دون اتخاذ أية إجراءات قسرية من قِبل المستخدم. SIGKILL (9): تُستخدم هذه الإشارة لقتل أي من العمليات التي يرغب المستخدم بإيقافها، حيث لا تهتم هذه الإشارة لوجود جزء برمجي مخصص ينشط عند استلام الإشارة، إذ تُقتل العملية أولًا، ومن ثم تُقتل جلسة الصدفة shell التي يعمل ضمنها البرنامج. لا تُعد هذه الطريقة لطيفةً عند الحاجة للتخلص من عملية ما ويجب الأخذ بالحسبان أنً قتل العملية قسريًا باستخدام هذه الإشارة يمكن أن يؤثر على العمليات المرتبطة بها. SIGINT (2): تُستخدم هذه الإشارة عند فشل الإشارة SIGTERM في التخلّص من العملية المطلوبة، مع عدم رغبة المستخدم بقتل العملية قسريًا، ولسبب ما لا يرغب المستخدم في إيقاف جلسة الصدفة shell الخاصة بالعملية، وإنما يريد قتل العملية فقط ومقاطعة الجلسة فقط دون إزالتها. تكافئ هذه الإشارة إرسال الأمر CTRL-C للبرنامج أو السكريبت وهو قيد العمل مما يسبب توقفه بصورة دائمة. يمكن تجربة الأوامر السابقة بإنشاء جلسة موجه أوامر جديدة ومن ثم إنشاء ملف ضمن المجلد""/tmp باسم cpuHog، ثم تحويله لبرنامج تنفيذي وإعطائه الأذونات "rwxrxrx" وكتابة المحتوى التالي ضمن الملف: #!/bin/bash # This Little program is a cpu hog X=0; while[1]; do echo $X;X=$(X+1);done نفتح موجه أوامر في نافذة مختلفة ونضع النافذتين متجاورتين لكي نشاهد النتائج، ومن ثم نشغل الأمر top، وبعدها نشغل برنامج cpuHog الذي كتبناه باستخدام الأمر التالي: /tmp/cpuHog يعمل البرنامج بطريقة عدّاد، مع طباعة القيمة التي وصل إليها إلى المخرج الذي نختاره، وهو افتراضيًا الشاشة. يستهلك هذا البرنامج دورات المعالجة الخاصة بالمعالج، لذا سنشاهد ارتفاعًا ملحوظًا في نسبة استخدام المعالج ضمن نتائج الأمر top. يزداد متوسط الحمل أيضًا مع مرور الزمن، ويمكن فتح نوافذ جديدة وتشغيل البرنامج فيها وملاحظة التغير الذي يحصل على استهلاك المعالج. يمكن عند الحاجة لقتل العملية ضمن الأداة top بالضغط على الحرف K، وستظهر رسالة تطلب رقم التعريف الخاص بالعملية PID التي يريد المستخدم قتلها. وبعد إدخال هذا الرقم نضغط على "Enter"، وعندها ستسأل الأداة المستخدِم عن الإشارة التي يرغب بإرسالها، والتي تكون افتراضيًا "15". يمكن في هذه المرحلة تجربة الإشارات المختلفة وملاحظة الاختلافات فيما بينها. أداة top تُعَد هذه الأداة من أهم الأدوات المستخدمة عند تشخيص المشاكل، وتتميز بأنها متاحة دومًا وموجودة في جميع توزيعات لينكس افتراضيًا دون الحاجة الى تنصيبها. تقدّم هذه الأداة الكثير من المعلومات حول النظام قيد العمل، فنجد فيها معطيات حول استهلاك الذاكرة وأحمال المعالج، وقائمة بالعمليات قيد التشغيل، وإلى جانب كل عملية نجد نسبة استهلاكها لموارد الحاسوب. تُحدّث هذه المعلومات كل ثلاثة ثواني، أي أننا قد نَعُد الأداة وكأنها تعمل في الزمن الحقيقي. تسمح هذه الأداة باستخدام أجزاء الثواني إذا احتاج المستخدِم لاستعمالها، ولكن من النادر أن تؤثر القيم الضئيلة على الأداء الكلي للحاسوب، كما تتميز الأداة بأنها تفاعلية ويمكن للمستخدم أن يرتّب النتائج الظاهرة حسب اهتمامه. يظهر الشكل (1) عينةً من نتائج عمل الأداة top، ويقسم هذا الخرج إلى جزأين أساسيين وهما جزء الملخص "Summary" وجزء العملية "Process" بالترتيب. حيث يمكن الاستفادة من الأوامر التفاعلية الخاصة بالأداة من قِبل المستخدِم لتغيير طريقة العرض الخاصة بالأداة لتناسب المستخدِم، إضافةً إلى التحكم بالعمليات كليًا، إذ تعرض الأداة كل الأوامر المتاحة بالضغط على h لاستعراض المساعدة الخاصة بالأداة والتي تكون موزّعةً على صفحتين، بحيث يحدث الانتقال إلى الصفحة الثانية بالضغط على h مرتين، ويمكن الخروج من الصفحة بالضغط على q. جزء الملخص يقدم هذا الجزء ملخّصًا عامًا عن النظام، حيث يُظهر السطر الأول منه زمن عمل النظام منذ آخر عملية إقلاع له، ومن ثم متوسط الحمل محسوبًا على مدة زمنية تعادل 1، 5، 15 دقيقة على الترتيب، بينما السطر الثاني يظهر عدد العمليات النّشطة في الحاسوب وحالة كل من هذه العمليات. تظهر في السطر الثالث إحصائيات خاصة بالمعالج، بحيث قد تكون هذه الإحصائيات مقتصِرةً على سطر واحد يتضمن الإحصائيات عن جميع المعالجات الموجودة في الحاسوب، ويمكن أن نجد سطرًا لكل معالج على حدة، كما يمكن تبديل طريقة الإظهار بين المعلومات المجمّعة عن المعالج، والمعلومات عن المعالجات إفراديًا بالضغط على الرقم 1، بحيث ستظهر القيم بشكل نسبة مئوية من وقت المعالج المتاح للتنفيذ. نجد في النتائج القيم التالية: us:userspace: تشير إلى وقت المعالج المخصص للتطبيقات والبرامج الي تعمل ضمن مجال المستخدم وليس ضمن نواة نظام التشغيل. sy:system calls: تشير إلى وقت المعالج المخصص لاستدعاءات النظام، وهي الوظائف التي تنفَّذ ضمن نواة نظام التشغيل. تجدر الإشارة إلى أنّ هذه النسبة لا تتضمن الزمن الخاص بعمل النواة نفسها. ni:nice: تشير إلى وقت المعالج المخصص للعمليات التي تعمل بمستوى لطافة إيجابي (*)، ويمكن النظر إلى رقم اللطافة الخاص بالعمليات وكأنه أولوية، لكن توجد اختلافات دقيقة بين المصطلحين ليست من موضوع هذه المقالة. id:idle: تشير إلى وقت المعالج الذي يكون فيها خاملًا. wa:wait: تشير إلى الوقت الذي يكون فيه المعالج بحالة انتظار لإتمام عمليات الإدخال والإخراج، وبالطبع يمثل هذا الوقت هدرًا في عمل المعالج. hi:hardware interrupts: تشير إلى الوقت الذي يصرفه المعالج في معالجة المقاطعات العتادية الواردة إليه. si:software interrupts: تشير إلى الوقت الذي يصرفه المعالج في معالجة المقاطعات البرمجية الوارد إليه. st:steal time: تشير إلى الوقت الذي يقضيه المعالج المنطقي حتى ينهي المعالج الفيزيائي تخديم معالج منطقي آخر والانتقال إليه. يعرض السطرين الأخيرين في هذا الجزء استهلاك الذاكرة حيث يظهر كل من استهلاك الذاكرة العشوائية وذاكرة التبادل. الشكل (1): يُظهر الأمر top المعلومات الكاملة عن معالج رباعي النوى مستخدم كليًا. يمكن الضغط على l لإيقاف عرض متوسط الحمل أو تشغيله، كما يمكن الضغط على t وm من أجل تغيير طرق العرض الخاصة بمعلومات العمليات والذاكرة. جزء العمليات يتضمن هذا الجزء المعلومات عن العمليات قيد التشغيل في النظام، حيث تظهر هذه المعلومات على شكل أعمدة، ويتضمن العرض الافتراضي مجموعةً من الأعمدة، كما يمكن إضافة المزيد منهم من قِبل المستخدِم حسب ما يجده مفيدًا له. فيما يلي المعلومات التي تظهر افتراضيًا: PID: يعبر عن رقم التعريف الخاص بالعملية، وهو رقم فريد خاص بالعملية يميزها عن كل العمليات الأخرى. USER: يعبر عن اسم المستخدم الذي يملك العملية. PR: يعبر عن أولوية العملية. NI: يعبر عن رقم اللطافة الخاص بالعملية. VIRT: يعبر عن إجمالي الذاكرة الافتراضية المخصصة للعملية. RES: يعبر عن الذاكرة الفيزيائية غير القابلة للتبادل المخصصة للعملية، وهي مقاسة بالكيلوبت ما لم يذكر خلاف ذلك. SHR: يعبر عن كمية الذاكرة المشتركة المخصصة للعملية. S: يعبر عن حالة العملية، وقد يكون R إذا كانت العملية قيد التشغيل، أو S إذا دخلت العملية في حالة النوم أو Z إذا تحولت العملية إلى عملية ميتة-حية (زومبي). كما توجد بعض الحالات الأقل شيوعًا مثل T للمتوقفة، أو D لحالة النوم غير القابل للمقاطعة. % CPU: يعبر عن وقت المعالج الذي استهلكته العملية خلال فترة القياس. % MEM: يعبر عن نسبة الذاكرة الفيزيائية المستهلكة من قبل العملية. Time +: يعبر عن وقت المعالج الكلي المخصص للعملية منذ بدء عملها لأول مرة. COMMAND: يعبر عن الأمر الذي استُخِدم لتشغيل العملية. يمكن الضغط على Page Up وPage Down للتنقل بين قائمة العمليات قيد التنفيذ، ويمكن ضبط المدة الزمنية لأخذ القراءات باستخدام d وs، وتكون هذه المدة افتراضيًا ثلاث ثواني، بحيث يمكن تعديلها لتصبح جزءًا من الثانية، لكن ذلك يزيد من استهلاك الأداة لموارد الحاسوب ومن المفضل ضبط هذه القيمة بحيث تعادل ثانيةً واحدةً كي لا تؤثر سلبًا على أداء الحاسب وتعطي معلومات وافرة عن هذا الأداء. يفيد الضغط على < و > في التنقل بين الأعمدة إلى اليمين أو اليسار، كما يمكن الضغط على k من أجل قتل العملية أو الضغط على r من أجل تعديل مستوى لطافتها، وفي كلتا الحالتين يجب تحديد رقم التعريف الخاص بالعملية، حيث يجب أن نحدد رقم الإشارة عند قتل العملية. عادةً ما تبدأ المحاولات بالإشارة 15 وفي حال عدم نجاحها يمكن استخدام الإشارة 9 لقتل العملية قتلًا مؤكدًا. الضبط يمكن للمستخدِم الذي يعدّل معلومات العرض الخاصة بالأداة، استخدام الأمر W (يجب استخدام الحرف الكبير Uppercase)، وذلك لكتابة التغييرات إلى ملف الضبط، والذي يوجد عادةً في المسار""~/.toprc في المساحة المخصصة للمستخدِم. أداة atop تتيح هذه الأداة معلومات أكثر تفصيلًا موازنةً بالأداة top. ومن أهم المعلومات الإضافية التي يمكن الحصول عليها باستخدام هذه الأداة، هي نشاط الإدخال والإخراج، حيث تتحدث القيم الظاهرة على الشاشة بعد انقضاء عشرة ثواني، ويمكن تغيير هذه المدة بالضغط على i واستخدام قيمة تناسب حاجة المستخدم. لا تستطيع هذه الأداة استخدام أجزاء الثانية مثل سابقتها، لكن يمكن استخدام الأمر h للحصول على المساعدة، وتوجد عدة صفحات ضمن دليل المساعدة يمكن التنقل بينها بالضغط على المسطرة Space. تتميز هذه الأداة بقدرتها على تخزين معلومات الأداء الخام ضمن ملف واستعراض محتوياته لاحقًا من أجل الدراسة المعمقة، مما يفيد في كشف بعض المشاكل الخفية وخصيصًا تلك التي تظهر في الوقت الذي لا يكون فيه النظام خاضعًا للمراقبة. يستخدم البرنامج atopsar لاستعراض محتويات الملفات المخزّنة حسب حاجة المستخدم. الشكل (2): يقدم نظام المراقبة atop المعلومات حول نشاط الأقراص والشبكة إضافة إلى نشاط المعالج. جزء الملخص تقدّم الأداة atop نفس المعلومات التي تقدّمها الأداة top، إلا أنّها تعرض بعض المعلومات الإضافية مثل المعلومات المتعلقة بنشاط الشبكة والأقراص والحجوم المنطقية ضمن الأقراص. يبين الشكل (2) أعلاه بعضًا من هذه المعلومات، تجدر الإشارة إلى أنّ عدد الأعمدة الذي يظهر هو مرتبط بأبعاد الشاشة، بحيث إذا كانت كافيةً فستعرض الأداة كافة الأعمدة بما تتضمنه من معلومات، وإلا فإنها تهمل بعضًا منها. تتميز هذه الأداة موانةً بجميع أنظمة المراقبة الأخرى بنها تعرض تردد المعالج الحالي، إضافةً إلى تبيان معامل توسيع التردد scaling factor، وتظهر هاتين القيمتين في أقصى اليمين ضمن السطر الثاني. جزء العملية تعرض الأداة atop بعضًا من الأعمدة التي تعرضها الأداة top، ولكنها تضيف بعض المعلومات مثل معلومات الإدخال والإخراج الخاصة بالقرص وعدد النياسب (الخيوط threads)، إضافةً إلى إحصائيات عن تغير كل من الذاكرتين الافتراضية والحقيقية لكل عملية. كما هو الحال في جزء الملخص، يمكن إظهار كامل الأعمدة إذا سمحت أبعاد الشاشة بذلك، وإلا فلن تظهر بعض الأعمدة مثل العمود المخصص لعرض رقم التعريف الحقيقي للمستخدم RUID الذي يملك العملية، ورقم التعريف الفعلي للمستخدم EUID، وتكون هاتين المعلومتين هامتين عند تشغيل بعض البرامج مع التلاعب بهوية المستخدم الذي ينفذ أمر التشغيل للبرنامج. تقدّم الأداة معلومات تفصيلية عن القرص والذاكرة والشبكة والجدولة الخاصة بكل عملية. يمكن الضغط على d وm وn وs بالترتيب لمشاهدة أي من التفاصيل السابقة، كما يمكن الضغط على g لإعادة الإظهار إلى وضعه الطبيعي. يمكن للمستخدم ترتيب العرض وفقًا لمعيار محدد، حيث يمكن الضغط على C للترتيب اعتمادًا على استهلاك وحدة المعالجة المركزية، أو الضغط على M للترتيب اعتمادًا على استهلاك الذاكرة، أو الضغط على D للترتيب اعتمادًا على استهلاك القرص، أو الضغط على N للترتيب اعتمادًا على استهلاك الشبكة، أو الضغط على A للترتيب التلقائي، ويعني ذلك الترتيب وفقًا للمورد الأكثر إشغالًا من قبل العملية. لن تعمل عمليات الترتيب الخاصة بالشبكة إلا بوجود مكتبة netatop إلى جانب الأداة atop، ويمكن الضغط على k لقتل أي عملية ولا تمتلك هذه الأداة القدرة على تعديل مستوى اللطافة مثل سابقتها. لا تعرِض هذه الأداة أجهزة الشبكة والتخزين التي لا تكون نشطةً ضمن فترة جلب المعلومات، مما قد يعطي انطباعًا خاطئًا عن ضبط الجهاز المستخدَم، فقد يوهم بعض المستخدمين بأن أحد الأجهزة لا يعمل بطريقة صحيحة، ولتجنب ذلك يمكن الضغط على f لعرض جميع الموارد وحتى الخاملة منها. الضبط يشير الدليل الخاص بالأداة atop الموجود ضمن نظام لينكس إلى ملفات الضبط الخاصة بالمستخدم وملفات الضبط العامة، وذلك باستثناء توزيعتي فيدورا وسينتوس. حيث لا توجد أية طريقة لحفظ تعديلات المستخدِم على ملفات الضبط وبالتالي لا تكون هذه التغييرات دائمة. أداة htop تشبه هذه الأداة إلى حد كبير الأداة top، ولكنها تعرض بعض المعلومات الإضافية التي لا تقدمها تلك الأداة، حيث لا تقدم هذه الأداة المعلومات عن القرص والشبكة والإدخال والإخراج كما في atop. الشكل (3): تمتلك الأداة htop طريقة إظهار جذابة للمستخدمين، كما أنها تعرض شجرة العملية كاملةً. جزء الملخص يتضمن جزء الملخص للأداة htop عمودين أساسيين يتميزان بالمرونة الشديدة وقدرة المستخدم على ضبطهما بالشكل والترتيب الذي يناسبه، حيث يمكن للمستخدم مشاهدة استهلاك المعالج عن طريق الشريط الظاهر أمامه، كما يمكن استخدام شريط واحد لكامل وحدة المعالجة المركزية، إلى جانب إمكانية استعمال شريط لكل معالج موجود، أو تجميع العرض من عدة معالجات معًا ضمن شريط واحد. يُعَد العرض بهذه الطريقة أكثر سهولةً للمستخدم، إلا أنّه يُغفِل العديد من المعلومات الأساسية التي قد تهمّه، ومنها النسبة المستهلكة من المعالج لكل مستخدم، إضافةً إلى وقت الخمول الخاص بالمعالج وغيرها من المعلومات التي تعرضها الأدوات السابقة. يمكن تعديل ضبط هذا الجزء بالضغط على F2 حيث تُعرض الخيارات المتاحة ويضيف المستخدم ما يشاء من هذه الخيارات وترتيبها ضمن العرض كما يشاء. جزء العملية يشبه جزء العملية الخاص بهذه الأداة إلى حد كبير الأدوات السابقة، حيث يمكن ترتيب العمليات اعتمادًا على نسبة استهلاك المعالج، أو الذاكرة، أو المستخدم، أو رقم تعريف العملية، مع ملاحظة أنه لا يمكن استخدام وظيفة الترتيب عندما يختار المستخدم العرض بالشكل الشجري. يختار المستخدم العمود الذي سيكون الترتيب وفقًا له، وذلك بالضغط على F6 لتُعرض مجموعة الأعمدة التي يمكن الترتيب وفقًا لها، وبعد إقدام المستخدم على الاختيار، فسيضغط على Enter لتنفيذ عملية الترتيب. يمكن التنقّل بين العمليات باستخدام الأسهم وذلك لاختيار عمليةٍ ما، وبعد الاختيار يمكن قتل العملية بالضغط على k، ومن ثم تظهر قائمة بالإشارات ليختار المستخدِم واحدةً منها، بحيث تُرسل إلى العملية. يمكن أيضًا الضغط على المفتاحين F7 وF8 لتغيير مستوى اللطافة للعملية المختارة. يمكن الضغط على F5 لأية عملية لتُعرض شجرة العملية كاملةً، وبالتالي يمكن تحديد العملية الأب الذي ولّد هذه العملية، وتُعَد هذه المسألة هامةً جدًا عند تشخيص مشاكل العمليات، وخصيصًا ظهور عمليات "ميتة-حية" في النظام. الضبط يمتلك كل مستخدم ملف ضبط خاص به مخزنًا في المسار"~/.config/htop/htoprc"، وتُحفَظ التغييرات التي يجريها المستخدم في هذا الملف تلقائيًا. لا تمتلك هذه الأداة ضبطًا عامًا وإنما يوجد الضبط فقط ضمن ملفات المستخدم. أداة glances تتميز هذه الأداة بقدرتها على عرض الكثير من المعلومات عن الجهاز موازنةً بجميع الأدوات السابقة، كما تعرض الأداة إلى جانب المعلومات التي تعرضها الأدوات السابقة على سبيل المثال: درجات الحرارة الخاصة بمكونات الحاسب، إضافةً إلى سرعة دوران المروحة المستخدمة مع كل مكون، والكثير من المعلومات المفيدة. تُعَد السلبية الوحيدة لهذه الأداة أنها تستهلك نسبةً كبيرةً من الموارد موازنةً بسابقاتها، وتتراوح نسبة استهلاكها للمعالج بين 10% و18% من إجمالي استخدام المعالج، وهذه النسبة كبيرة جدًا خصوصًا في الأنظمة المحدودة بالموارد. جزء الملخص يحتوي جزء الملخص لأداة glances على معظم المعلومات التي تقدّمها أدوات المراقبة الأخرى، حيث تعرض الأداة معلومات استخدام المعالج بشكل شريط و بشكل عددي في حال كانت أبعاد الشاشة تسمح بذلك، وإلا فإنها ستعرض النتائج بالشكل العددي فقط. الشكل (4): يُظهر الشكل واجهة الأداة glances متضمنةً معلومات الشبكة والقرص ونظام الملفات ومعلومات الحساسات. كما في الأدوات السابقة، يمكن الضغط على 1 لتغيير طريقة عرض معلومات المعالج إما لتعرِض المعلومات عن إجمالي استخدام المعالج أو عرض المعلومات الخاصة بكل معالج على حدى. جزء العملية يعرض هذا الجزء المعلومات الاعتيادية عن كل من العمليات قيد التشغيل، حيث يمكن أن تُرتَّب العمليات تلقائيًا بالضغط على a، أو بالاعتماد على استهلاك المعالج c، أو بالاعتماد على استهلاك الذاكرة m، أو بالاعتماد على اسم العملية p، أو بالاعتماد على اسم المستخدم u، أو بالاعتماد على معدل الإدخال والإخراج i، أو بالاعتماد على الوقت t. يعني أن الترتيب التلقائي في الأداة هو اختيار عرض العمليات بالاعتماد على المورد الأكثر استخدامًا، فإذا كان استهلاك المعالج أكبر من 70%، فسيعتمد ترتيب العمليات على استهلاك كل عملية من وقت المعالج، وإذا كان استهلاك الذاكرة أكبر من 70%، فيعتمد الترتيب على استهلاك كل عملية من الذاكرة. تُظهر الأداة الإنذارات والتحذيرات في أسفل الشاشة متضمّنةً تاريخ ومدة بقاء الإنذار. حيث يفيد وجود الإنذارات بإخبار المستخدِم عند وقوع المشكلة، وبالتالي لا يكون مضطرًا لمراقبة الشاشة ومتابعة تغير الأرقام بدقة دائمًا. ويمكن تشغيل وإيقاف الإنذارات بالضغط على l، كما يمكن إزالة الإنذارات الحالية بالضغط على w، ويمكن إزالة الإنذارات والتحذيرات معًا بالضغط على x. لا تقتل هذه الأداة العمليات لأنها مجرد أداة للمراقبة، كما أنها لا تغير من مستوى اللطافة للعملية للسبب ذاته، وإذا رغب المستخدم بذلك فيجب عليه استخدام الأوامر kill أو renice خارج هذه الأداة. الشريط الجانبي تمتلك الأداة glances شريطًا جانبيًا جميلًا والذي يعرِض معلومات غير موجودة في كل من top وhtop. يمكن أن تعرِض atop بعضًا من المعلومات التي تعرضها هذه الأداة، ولكن فقط glances هي القادرة على عرض معلومات حساسات الحرارة من الأدوات السابقة، كما يمكن عرض المعلومات عن الأقراص ونظام الملفات والشبكة والحساسات، بالضغط على d أو f أو n أو s بالترتيب، ويمكن اظهار الشريط الجانبي بالضغط على 2، كما يمكن عرض الإحصائيات في أسفل الشاشة بالضغط على D. الضبط لا تتطلب الأداة glances ملفًا للضبط لكي تعمل بصورة صحيحة، ولكن في حال رغبة المستخدم بوجوده، فيوجد ملف الضبط العام ضمن المجلد الحامل لهذه التسمية ""/etc/glances/glances.conf، فعندما ينشئ المستخدم ملف الضبط الخاص به ضمن المسار ""~/.config/glances/glances.conf، فإنه سيصبح ملف الضبط الفعال، ويتجاوز ملف الضبط العام. يمكن ضمن هذه الملفات تحديد عتبات الإنذارات والتحذيرات فقط، في حين فيجب إعادة ضبط أية تعديلات أخرى على الأداة مثل تعديل الشريط الجانبي أو غيره في كل مرة بعد تشغيل الأداة. يتضمن توثيق الأداة معلومات كافية عن استخدام الأداة glances، وتكون موجودةً افتراضيًا ضمن المسار التالي: "/usr/share/doc/glances/glances-doc.html" وعلى الرغم من أنه قد ذُكِر في الوثيقة أنه يمكن ضبط الأداة كاملةً عن طريق الملف، إلا أنّه لم تُذكر أية طريقة لتحقيق ذلك ضمن الملف. الخلاصة يجب على المستخدم قراءة الدليل الخاص بكل أداة من أدوات المراقبة للتعرف على الطريقة التي تناسب المستخدم في ضبطها والتفاعل معها، ويمكن دومًا الاستعانة بالأمر h ضمن الأدوات للاستفادة من المساعدة التفاعلية الموجودة ضمنها، والتي تقدّم الكثير من المعلومات حول تنفيذ عمليات الاختيار والترتيب في الأداة. يمكن أن تقدّم هذه الأدوات الكثير من المعلومات عن سبب المشاكل التي تصادف المستخدم، كما يمكن أن تحدد أيًا من العمليات هو الأكثر استهلاكًا للمعالج، أو تحديد كمية الذاكرة الحرّة المتاحة، إضافةً إلى معرفة أي من العمليات قد أوقفت مؤقتًا لأنها تنتظر عمليات الإدخال والإخراج، أو لأنها تنتظر الشبكة. يمكن بالمراقبة المستمرة لهذه الأدوات أن يستطيع المستخدِم التمييز بين السلوك الطبيعي للنظام عن السلوك غير الطبيعي الذي يظهر بالنهاية على هيئة مشكلة في الأداء، كما يجب الأخذ بالحسبان أنّ هذه الأدوات تستهلك من موارد الحاسوب الذي تراقبه، حيث تستهلك الأداة glances نسبةً تتراوح بين 10% و20% من وقت المعالج، بينما لا تستهلك الأدوات المتبقية أكثر من 3% من نفس المورد، ويجب التفكير بذلك جيدًا عند اختيار الأداة المناسبة بتقدير نوع المعلومات التي يحتاج المستخدم مراقبته إضافةً إلى معرفة مواصفات الجهاز الذي يُراقَب. ترجمة -وبتصرف- للمقال "4 open source tools for Linux system monitoring" لصاحبه David Both. اقرأ أيضًا ما هو نظام التشغيل لينكس؟ مدخل إلى مصطلحات ومفاهيم التخزين في لينكس عشرون أمرا في لينكس يفترض أن يعرفها كل مدير نظم دليل المستخدم للروابط في نظام ملفات لينكس