مراقبة أداء المعالج والذاكرة وتحليل الاختناقات (I/O Wait, CPU Throttling)


مراقبة أداء المعالج والذاكرة وتحليل الاختناقات (I/O Wait, CPU Throttling)

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

1. مراقبة أداء المعالج (CPU)

المعالج هو قلب النظام. لازم نعرف كيف شغال عشان نتجنب أي بطء.

أول أداة وأكثرها استخداماً هي top.

top يعطيك نظرة عامة لحظية على العمليات واستخدام المعالج والذاكرة. اضغط 1 داخل top عشان تشوف استخدام كل نواة (core) لحالها.

top

فيه أداة أحسن وأسهل للقراءة اسمها htop. لو مو مثبتة عندك، ثبتها:

sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/RHEL
htop

إيش الأرقام المهمة اللي نشوفها في top أو htop؟

  • us (user): الوقت اللي المعالج يقضيه في تشغيل أكواد المستخدم (تطبيقاتك، السكربتات).
  • sy (system): الوقت اللي المعالج يقضيه في تشغيل أكواد الكيرنل (نظام التشغيل نفسه).
  • ni (nice): وقت العمليات ذات الأولوية المنخفضة (nice value).
  • id (idle): وقت فراغ المعالج، ما يسوي شيء.
  • wa (I/O Wait): وهذا مهم جداً! الوقت اللي المعالج ينتظر فيه عمليات الإدخال/الإخراج (Disk I/O, Network I/O) تخلص. ارتفاعه يعني عندك مشكلة في القرص أو الشبكة.
  • st (steal): هذا تشوفه كثير في الآلات الافتراضية (VMs). يعني الـ hypervisor أخذ من وقت المعالج حقك عشان يعطيه لآلة افتراضية ثانية. ارتفاعه يعني الـ host overprovisioned.

تحليل اختناق المعالج (CPU Throttling)

أحياناً المعالج ما يوصل لأقصى أداء له مو بسبب إنه مشغول، بل لأنه مقيد. هذا ممكن يكون بسبب:

  1. حرارة عالية: النظام يقلل سرعة المعالج عشان يحميه من الحرارة الزائدة.
  2. إدارة الطاقة: في السيرفرات أو اللابتوبات، ممكن يكون فيه سياسات طاقة تقلل الأداء.

كيف نكتشفه؟

أول شيء، شوف سرعة المعالج الحالية. استخدم lscpu أو cpufreq-info (لو مثبت).

lscpu | grep "MHz"
cat /proc/cpuinfo | grep "MHz"

المهم تشوف cpu MHz أو CPU max MHz و CPU min MHz. إذا الـ cpu MHz الحالي أقل بكثير من الـ max MHz والمعالج مو مشغول (idle)، فممكن يكون فيه throttling.

كذلك، راقب درجات الحرارة. في Linux، ممكن تستخدم sensors (تحتاج تثبيت lm-sensors).

sensors

لو لقيت حرارة عالية، هذا مؤشر قوي. ممكن يكون فيه مشكلة تبريد.

2. مراقبة الذاكرة (Memory)

الذاكرة العشوائية (RAM) حيوية للأداء. لو خلصت، النظام بيبدأ يستخدم الـ Swap وهذا بطيء جداً.

أبسط أداة هي free -h.

free -h

الأرقام اللي تهمنا:

  • total: إجمالي الذاكرة المتوفرة.
  • used: الذاكرة المستخدمة فعلياً.
  • free: الذاكرة الحرة (غير مستخدمة).
  • shared: ذاكرة مشتركة بين العمليات.
  • buff/cache: هنا اللبس! Linux يستخدم جزء كبير من الذاكرة كـ buffer و cache لتحسين الأداء (مثلاً، لتخزين بيانات القرص اللي تم قراءتها مؤخراً). هذي الذاكرة تعتبر 'مستخدمة' لكنها قابلة للتحرير (reclaimable) إذا احتاجتها البرامج.
  • available: هذا هو الرقم اللي لازم تركز عليه! يوريك كم ذاكرة متوفرة للبرامج الجديدة بدون ما يضطر النظام يبدأ يحرر من الـ cache أو يستخدم الـ swap. لو هذا الرقم قليل، عندك مشكلة.
  • Swap: مساحة القرص اللي يستخدمها النظام كذاكرة إضافية لما الـ RAM تمتلئ. أي استخدام للـ Swap يعتبر مؤشر سيء للأداء.

تذكر: الـ free (الحرة) ممكن تكون قليلة لكن available (المتاحة) عالية، وهذا طبيعي وممتاز. النظام يستغل الذاكرة بالكامل. المشكلة لما الـ available تكون منخفضة.

3. تحليل اختناقات الإدخال/الإخراج (I/O Wait)

زي ما شفنا في top، الـ wa (I/O Wait) مهم. لو ارتفع، يعني المعالج ينتظر القرص أو الشبكة. غالباً تكون مشكلة قرص.

أداة vmstat تعطيك نظرة شاملة على الذاكرة، الـ swap، الـ I/O، والـ CPU.

vmstat 1 5 # يعرض تقرير كل ثانية، 5 مرات

شوف أعمدة wa (I/O Wait) تحت cpu. لو كانت عالية بشكل مستمر، عندك مشكلة.

ولتحليل القرص بشكل أدق، استخدم iostat (تحتاج تثبيت sysstat).

sudo apt install sysstat # Debian/Ubuntu
sudo yum install sysstat # CentOS/RHEL
iostat -x 1 5 # يعرض تقرير مفصل كل ثانية، 5 مرات

القيم اللي تهمنا في iostat -x:

  • %util: نسبة الوقت اللي القرص فيه مشغول بمعالجة طلبات I/O. لو وصلت 100%، القرص هو الاختناق.
  • avgqu-sz: متوسط حجم طابور الطلبات المنتظرة. كل ما زاد، يعني القرص مو قادر يواكب الطلبات.
  • await: متوسط وقت الانتظار للعمليات (بالمللي ثانية)، شامل وقت الانتظار في الطابور ووقت التنفيذ. ارتفاعه يعني بطء.
  • svctm: متوسط وقت الخدمة الفعلي للقرص (وقت التنفيذ). إذا كان await أعلى بكثير من svctm، يعني العمليات تنتظر كثيراً في الطابور.

الخلاصة

مراقبة الأداء مو بس تشوف أرقام، هي تفهم إيش معنى هذي الأرقام. ابدأ بـ top أو htop عشان تاخذ نظرة سريعة، وإذا شفت شيء غريب (مثل wa عالي أو available memory قليل)، ابدأ بالغوص أعمق باستخدام أدوات مثل vmstat و iostat.

هذا كان درس سريع ومباشر. بالتوفيق!