محتويات الدورة

أداء لينكس / المتوسط: الآلية والتشخيص النطاقي / الدرس 9

تشخيص ضغط الذاكرة وحدود نفادها

استخدم PSI والاسترداد وأحداث cgroup وأدلة التطبيق لتمييز الضغط المكلف من الامتلاء غير الضار.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تفسير بعض وكامل ومتوسطات ومجاميع PSI.
  • فصل ضغط memory.high من فرض memory.max.
  • فحص نطاق OOM والطلب الذي سببه.

الامتلاء ليس زمناً مفقوداً

يبين الاستخدام الكمية المحسوبة ويسأل الضغط عن توقف العمل للندرة. قد يصح مخبأ كبير ثابت، ويضر الاسترداد وإعادة الجلب المتكرران قبل OOM. قارن المهل والضغط زمنياً. قد يتحمل عمل ملتزم بالعقد استرداداً خلفياً ولا تتحمله خدمة حساسة. لا تجعل كل ضغط غير صفري طلب رام تلقائياً؛ فالقرار للمدة والنطاق والأثر.

قراءة نسب التوقف بالنطاق الصحيح

يصدر PSI ضغط المعالج والذاكرة والتخزين عند الدعم. تتتبع some توقف بعض المهام وfull توقف كل غير الخامل في النطاق معاً. للمتوسطات نوافذ حديثة وللمجموع ميكروثوان تراكمية تصلح للفروق. لـ CPU full العام دلالة خاصة فلا تفسره كذاكرة full. تضيق ملفات cgroup النطاق عند الدعم. لا تجمع النسب بين الموارد والنطاقات كأحداث مستقلة.

bash قراءة الضغط وعدادات الاسترداد
cat /proc/pressure/memory
cat /proc/pressure/io
cat /proc/vmstat

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

للضغط والحد الصلب آليتان

يفرض memory.high استرداداً وخنقاً لا سقف استخدام مطلقاً. أما memory.max فحد صلب قد يفعّل OOM عند عجز الاسترداد. تقيد حدود الأسلاف ابناً يبدو غير محدود. يجيب memory.events وmemory.events.local سؤالين هرميين مختلفين؛ اتبع التوثيق. لا يحدد الحدث موقع التخصيص أو التسرب. احفظ المرحلة والهرمية مع فرق الحدث.

bash دراسة ضغط cgroup افتراضية
cat /sys/fs/cgroup/lab-report/memory.current
cat /sys/fs/cgroup/lab-report/memory.events
cat /sys/fs/cgroup/lab-report/memory.pressure

المسار افتراضي موجود بالمختبر. لا تنشئ القراءات مجموعة أو تعدل حدوداً. اربط الفروق بفترة الطلب وافحص الأسلاف منفصلين.

تصف نتيجة OOM حد الفشل

ليست فشل التخصيص وقتل النواة وحدث المجموعة وإجراء المدير تقارير متكافئة. حدد الآلية وعمر العملية. تؤيد السجلات والعدادات والنتائج باحتفاظ مختلف. ليس المقتول بالضرورة مصدر كل الطلب. افحص التزامن والبيانات والمخبأ وأعضاء المجموعة قبل اللوم. احفظ الدليل قبل الإعادة لأن التخطيطات تزول بالخروج.

تصحيح الطلب قبل إضعاف الحماية

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

الأخطاء الشائعة وإصلاحها

مساواة memory.high بـ memory.max

لماذا يحدث؟
اختلط الضغط بالفرض الصلب.
كيف تصلحه؟
افحص الملفين وفروق الأحداث.
كيف تتجنب تكراره؟
وثق الآلية والأسلاف.

لوم العملية المقتولة وحدها

لماذا يحدث؟
افتُرض أن الضحية تفسر الطلب كله.
كيف تصلحه؟
افحص الأعضاء والنمو والمرحلة.
كيف تتجنب تكراره؟
التقط دليلاً نطاقياً قبل الفشل.

رفع الحدود حتى يختفي OOM

لماذا يحدث؟
لم تقيّم سعة المضيف والتوقفات.
كيف تصلحه؟
قارن تقليل الطلب والسعة المبررة بأمان.
كيف تتجنب تكراره؟
اشترط الهامش وفحص الكمون.

اختبر فهمك

1. الاستخدام دون الحد المحلي والخدمة تتوقف. ماذا يهم؟

اعرض الحل المشروح

افحص high والأسلاف والاسترداد وإعادة الجلب وPSI والأعضاء. ليس الحد الصلب مصدر التأخير الوحيد وقد يخفي الإجمالي مجموعة العمل.

2. يزداد عداد OOM بعد تكبير الدفعة. ما التجربة؟

اعرض الحل المشروح

استعد حجم الدفعة في نسخة معزولة بطلب مطابق وقارن النمو والأحداث والتوقف والإنجاز مع ثبات البقية. يدعم التكرار آلية الطلب أكثر من رفع الحد.

أهم ما تعلمته

  • يقيس الضغط فقد التقدم لا البايتات فقط.
  • حدد نطاق OOM والطلب قبل الحدود.

المراجع الرسمية