نظام يعمل ببطء؟ إذا كان الأمر كذلك ، فسيكون نظامك إما Memory أو CPU أو I / O مرتبطًا. ستوضح لك هذه المقالة طريقة سريعة لمعرفة أيها من الثلاثة ، مما يسمح لك بإجراء تحسينات مستنيرة في أداء النظام.
ذاكرة أو حساب (وحدة المعالجة المركزية) أو I / O Bound؟
عندما يعمل نظامك ببطء ، يكون ذلك دائمًا بسبب أبطأ مكون أو سلسلة من المكونات في نظامك. قد يحدث هذا أحيانًا بسبب البرامج ، ولكن غالبًا ما تكون الأجهزة هي الجاني.
على سبيل المثال ، إذا كان لديك قرص قديم جدًا وبطيء - على سبيل المثال ، قرص دوار بسرعة 5400 لفة في الدقيقة لا يزال شائعًا إلى حد ما ، يُشار إليه غالبًا باسم محرك الأقراص الثابتة أو محرك الأقراص الثابتة - فقد يكون هذا القرص هو عنق الزجاجة في جهازك النظام.
فكر في الأمر مثل الأنابيب التي تمر خلالها المياه. تخيل ذاكرة النظام ، ووحدة الحوسبة (وحدة المعالجة المركزية الخاصة بك ، أو وحدة المعالجة المركزية - الشريحة / المعالج الرئيسي في نظامك) ، والأقراص (كجزء من نظام الإدخال / الإخراج ، أو نظام الإدخال / الإخراج) كلها كأنابيب مياه. الآن ، تخيل أن المكونات الأبطأ هي أنبوب أصغر ، والمكونات الأسرع هي الأنبوب الأكبر. إذا احتجت إلى نقل 10 لترات عبر كل أنبوب ، فإن الأنبوب الأبطأ سيستغرق وقتًا أطول بكثير من الأنبوب الأكبر.
في Linux ، تتمثل الاختناقات الرئيسية في الذاكرة (RAM) أو الحوسبة (CPU) أو الإدخال / الإخراج (عمليات القرص). في حالة الذاكرة ، يمكن أن تكون السرعة عاملاً ، ولكن نفادها يمثل مشكلة كبيرة. بالنسبة لوحدة المعالجة المركزية ، إذا كنت تستخدم أجهزة قديمة ، فإن كل نواة من وحدات المعالجة المركزية تعمل بشكل أبطأ بكثير ، وقد لا يكون هناك ما يكفي منها. بالنسبة للإدخال / الإخراج ، يمكن أن تكون القراءة من محركات الأقراص الثابتة البطيئة وكذلك عمليات الكتابة المفرطة على القرص هي المشكلة.
هناك أدوات يمكنك استخدامها تجعل من السهل معرفة ما إذا كان النظام هو Memory أو Compute (CPU) أو I / O Bound. كل ما تحتاجه هو htop و iotop ، وهما أداتان شبه رسوميتان يمكن تثبيتهما بسهولة على Linux.
تثبيت htop و iotop

لتثبيت htop و iotop على توزيع Linux المستند إلى Debian / Apt (مثل Ubuntu و Mint) ، افعل:
sudo apt install htop iotop
لتثبيت htop و iotop على توزيعات Linux التي تستند إلى RedHat / Yum (مثل RedHat و Fedora) ، قم بما يلي:
sudo yum تثبيت htop iotop
وحدة المعالجة المركزية منضم

من السهل معرفة ما إذا كان النظام مرتبطًا بوحدة المعالجة المركزية أم لا. ما عليك سوى كتابة "htop" في سطر الأوامر واضغط على Enter. ثم انظر إلى أشرطة وحدة المعالجة المركزية الملونة في الجزء العلوي من الشاشة. إذا كان المعالج الخاص بك يحتوي على 16 خيطًا ، فسيكون هناك 16 شريطًا.
السؤال البسيط الذي يجب الإجابة عليه هو ما إذا كانت جميعها تقريبًا "ممتلئة" (تقترب من 100٪) ، أو ما إذا كان هناك مجال واسع للتحرك:

إذا كانت الأشرطة جيدة مثل ممتلئة ، فمن الواضح أن النظام مرتبط بوحدة المعالجة المركزية. لاحظ أيضًا أن شريطي الذاكرة (Mem) و Swap (Swp) ليسا ممتلئين بأي حال من الأحوال: هذه ليست مشكلة متعلقة بالأداء بالذاكرة.
لمزيد من المعلومات والاتجاه ، يمكنك إلقاء نظرة بعد ذلك على رقم "متوسط التحميل". على الرغم من أن هذا الرقم تعسفي للغاية ، إلا أن القليل من الإلمام بالنظام الخاص بك والفهم العام أنه إذا كان أي من هذه الأرقام الثلاثة أعلى من ضعف عدد الخيوط في نظامك ، فإن النظام يكافح من أجل مواكبة ذلك بشكل كبير هنا.
متوسط رقم التحميل الأول هو متوسط دقيقة واحدة ، ثم متوسط 5 دقائق ، والأخير متوسط 15 دقيقة. في هذه الحالة ، يكون التحميل لمدة دقيقة واحدة 270 ، وهو ما يقرب من 17 ضعف عدد الخيوط: نظامنا مرتبط بشدة بوحدة المعالجة المركزية.
أخيرًا ، هناك رقم مثير للاهتمام يجب التحقق منه وهو عدد المهام (وإلى حد أقل سلاسل الرسائل).في حين أن علامات المياه المنخفضة والعالية الدقيقة تعتمد على قدرات الجهاز / الجهاز الأساسي ، إذا كان رقم المهام مرتفعًا بشكل مفرط ، فقد تقوم وحدة المعالجة المركزية الخاصة بك بتبديل السياق (التغيير من معالجة مهمة إلى أخرى) بشكل كبير.
إذا كنت ترغب في معرفة المزيد حول ما تشير إليه الألوان المختلفة في htop ، فراجع أشرطة الألوان في htop - ماذا تعني؟
الذاكرة ملزمة
فور الوصول إلى htop ، من السهل معرفة ما إذا كان النظام مرتبطًا بالذاكرة أم لا. ما عليك سوى إلقاء نظرة على شريطي الذاكرة (Mem) والمبادلة (Swp) المذكورين سابقًا.
إذا كان شريط الذاكرة ممتلئًا تمامًا ، وشريط Swap على سبيل المثال ممتلئ بنسبة 50 ٪ ، فمن المؤكد تقريبًا أن النظام يقوم بتبديل كبير. المبادلة هي عملية تبادل محتويات الذاكرة الرئيسية مع القرص (باستخدام ملف Swap خاص أو قسم Swap) لأنه ممتلئ ، ويتحدث بشكل عام بطيئًا للغاية. بمجرد أن يبدأ النظام ويستمر في المبادلة ، سيصبح بطيئًا للغاية.
من السهل أن ترى عندما تبدأ الذاكرة في النفاد ، حيث سيصبح الشريط ممتلئًا. ومع ذلك ، قد يكون استخدام مساحة التبديل غامضًا بعض الشيء في بعض الأحيان.
على سبيل المثال ، قد يكون 20٪ قيد الاستخدام ، ولكن هناك الكثير من الذاكرة المتبقية. قد يشير هذا إلى أن نظام التشغيل قد نقل بعض مناطق الذاكرة ذات التردد المنخفض إلى القرص من أجل تحسين الذاكرة الرئيسية. نظرًا لأن مساحة كبيرة من الذاكرة لا تزال خالية ، فإن هذا الوضع جيد وليس سببًا لأي قلق.
هناك أيضًا استثناء لشريط الذاكرة الذي يبدو ممتلئًا تمامًا ، وهو التخزين المؤقت. قد يكون قد تم إعداد نظامك لحجز x مقدار الذاكرة للتخزين المؤقت.
طريقة أخرى للتحقق من ذلك بسرعة من خلال تشغيل
free -g
في سطر الأوامر (أو
free -mللأجهزة ذات الكميات الأصغر من الذاكرة مثل Raspberry Pi):

هذا سهل القراءة: 62 جيجا بايت من الذاكرة ، و 25 قيد الاستخدام ، و 12 خالية ، و 24 مخصصة حاليًا للمخازن المؤقتة وذاكرة التخزين المؤقت.الـ 32 المتاحة هي إجمالي تقريبي للحرية الفعلية (12) وكل ما تم تعيينه للمخازن المؤقتة وذاكرة التخزين المؤقت (24) مطروحًا منه ما هو قيد الاستخدام بالفعل (غير معروض) ، أو بعبارة أخرى 12 + 24=36 و 32 متاحًا ، لذلك يتم استخدام 4 جيجا بايت تقريبًا بواسطة المخازن المؤقتة والتخزين المؤقت.
ملاحظة يمكننا أيضًا معرفة مقدار مساحة التبادل المحجوزة (10 جيجا بايت) والمقدار المستخدم هنا: 0 حاليًا ، وبالتالي 10 مجانًا.
I / O ملزمة
لنفترض أنك تتحقق من htop وترى هذا:

يبدو النظام مشغولاً ، لكنه ليس مشغولاً بدرجة كافية ليتم اعتباره مرتبطًا بوحدة المعالجة المركزية. تبدو الذاكرة المستخدمة / الخالية وأشرطة التبديل جيدة أيضًا. دعنا نتحقق من iotop بعد ذلك. للقيام بذلك ، تحتاج إلى استخدام
sudo iotopلبدء iotop لأن iotop يتطلب sudo.
الشريطان العلويان هما الأكثر فائدة في التحليل السريع لما إذا كان النظام يكافح مع سرعة نقل القرص ومن ثم فهو مرتبط بالإدخال / الإخراج.

في حين أن رقم M / s ليس مرتفعًا جدًا من حيث SSD الحديث ، فإن القراءة والكتابة باستمرار لعدة ميغا بايت في الثانية إلى محرك أقراص HDD بطيء تعد عملية إدخال / إخراج مكثفة للغاية!
هذا الرقم ، عند مشاهدته لفترة قصيرة ، جنبًا إلى جنب مع قائمة العمليات الموجودة تحته (لمعرفة من هم أفضل المستخدمين) ، والقسم العلوي من إخراج htop (من حيث وحدة المعالجة المركزية والذاكرة) يعطي قيمة جيدة الشعور العام بما إذا كان النظام هو Memory أو CPU أو I / O Bound.
التخفيف من مشاكل الأداء
دائمًا ما تكون تغييرات النظام المطلوبة للتخفيف من مشكلات الأداء خاصة بالنظام بالإضافة إلى الموقف المحدد الذي يتم مواجهته. بعض الأمثلة:
هل قرص النظام / الإدخال / الإخراج مرتبط؟ قد يكون من المنطقي إيقاف بعض خدمات سجل الكتابة الكثيفة ، لترقية نظام الإدخال / الإخراج (على سبيل المثال عن طريق إضافة بطاقة SATA في جهاز كمبيوتر قديم) ، للتغيير إلى جهاز تخزين أسرع (مثل قرص يستند إلى NVMe بدلاً من HDD) ، أو ببساطة للعثور على قرص SSD أسرع.
هل نظام الذاكرة / المبادلة مرتبط؟ قد يكون من المنطقي ، على سبيل المثال ، تشغيل عدد أقل من الأجهزة الظاهرية ، أو تشغيل عمليات أقل كثافة للذاكرة ، أو إضافة المزيد من وحدات ذاكرة الأجهزة المادية.
هل وحدة المعالجة المركزية للنظام ملزمة؟ استخدم قائمة العمليات السفلية في htop للعثور على العملية التي تستهلك وحدة المعالجة المركزية. يمكنك حتى إنهائه مباشرة من داخل htop باستخدام المفتاح F9.
إذا كانت المشكلة هي وحدة المعالجة المركزية نفسها (أي أن وحدة المعالجة المركزية لا تواكب المهام الأساسية المرتبطة بالنظام بشكل واضح) ، فإن تغيير الأجهزة يكون أكثر تعقيدًا بعض الشيء. يحتاج المرء إلى العثور على وحدة معالجة مركزية أسرع ، ولا يزال متوافقًا مع المقبس الموجود على اللوحة الأم ، وحتى في هذه الحالة ، قد تكون تحسينات الأداء صغيرة. قد يكون الوقت قد حان لترقية النظام بشكل عام.
أكثر من عنق عنق للأداء؟
بالعودة إلى تشبيه أنابيب المياه لدينا ، ضع في اعتبارك أنه في بعض الأحيان يمكن أن يحدث الاختناق بسبب مجموعة من المكونات المختلفة.
على سبيل المثال ، إذا كانت بطاقة وحدة تحكم الإدخال / الإخراج قديمة أو رخيصة تتطلب 80٪ من وقت وحدة المعالجة المركزية فقط لمعالجة البيانات ، وكان القرص المتصل بها محرك أقراص ثابتة بطيء يستخدم حتى 80٪ من إمكانياته ، مع إنتاجية بطاقة الإدخال / الإخراج الأرخص ثمناً ، فإن كلاهما يخلق مشكلة عامة لن يتم حلها عن طريق معالجة أي منهما. سيحتاج كلاهما إلى الإصلاح قبل أن يصبح النظام فعالاً مرة أخرى.
التفاف
سواء كنت مهندسًا في DevOps أو مستخدم Linux للكمبيوتر المنزلي ، فإن معرفة كيفية تحليل ما إذا كان نظامك عبارة عن ذاكرة أو وحدة المعالجة المركزية أو I / O Bound سيساعدك على تنفيذ تغييرات أفضل في البرامج والأجهزة لتلبية الأداء المشكلة التي تواجهها.