نظرة عامة
عندما يستنفد نظام لينكس موارده من الذاكرة العشوائية، يتدخل نظام OOM Killer للتضحية ببعض العمليات حفاظاً على استقرار النواة، وهنا تبرز أهمية أداة choom. يستعرض هذا الدليل التطبيقي كيفية توظيف هذا الأمر لفحص درجات التقييم وتعديل تفضيلات الاستبعاد، بالإضافة إلى تحصين العمليات الحيوية ضد الإنهاء المفاجئ عبر أوامر عملية ومباشرة على الطرفية.
1. التعريف بأداة choom وتجهيز حزم النظام الأساسية
قبل البدء في إدارة أولويات العمليات، يتعين علينا تجهيز البيئة بتثبيت حزمتي util-linux و procps الضامنتين لوجود الأدوات اللازمة.

تكمن الوظيفة الجوهرية لأمر choom في قراءة وتعديل متغير oom_score_adj، وهو المعيار الذي تستند إليه نواة لينكس لتحديد أي العمليات سيتم إسقاطها قسراً عند اختناق الموارد.
يمكننا إلقاء نظرة على بنية الصياغة وخيارات التشغيل المتاحة عبر المعامل --help:
⚙️ [أهم الخيارات المدعومة]
-p, --pid : تحديد معرف العملية (PID) المستهدفة بالقراءة أو التعديل.-n, --adjust : تعيين قيمة التعديل على تقييم OOM ضمن النطاق الممتد من -1000 إلى 1000.-h, --help : إظهار دليل التعليمات والمساعدة المختصرة.-V, --version : استعراض رقم إصدار الأداة الحالي.

2. الاستعلام عن نقاط OOM للعمليات النشطة
لإجراء التجارب العملية على بيئة حية، سنطلق عملية تجريبية تعمل في الخلفية لمدة عشر دقائق عبر الأمر sleep 600 &.

نقوم بالتقاط معرف العملية الخلفية وتخزينه في المتغير TARGET_PID، ثم ننفذ choom -p لاستخراج قيمة oom_score_adj الحالية.
تحصل أي عملية قياسية لم تخضع لتعديل مسبق على القيمة الافتراضية 0.

للتحقق من مطابقة مخرجات الأداة لما هو مسجل فعلياً داخل طبقة النواة، سنقرأ محتوى الملف oom_score_adj مباشرة من شجرة نظام الملفات /proc.
تُظهر نتيجة القراءة القيمة 0 أيضاً، مما يثبت دقة التزامن بين إعدادات النواة والبيانات المعروضة عبر choom.

3. تعديل معامل أولوية OOM للعمليات قيد التشغيل
لتعديل درجة تعرض العملية للإيقاف، نمرر المعامل -n مصحوباً بالقيمة 500 ونشغل choom بصلاحيات الجذر عبر sudo.
رفع قيمة oom_score_adj إلى رقم موجب يجعل العملية كبش فداء مبكراً، بحيث تختارها النواة للتصفية أولاً في حال حدوث عجز حاد في الذاكرة.

نقوم بإعادة الاستعلام عن العملية المستهدفة باستخدام الأمر choom -p للتأكد من سريان التعديل الجديد.
يؤكد الناتج تبدل القيمة من المعيار المبدئي 0 إلى 500 بشكل فوري ومستقر في النظام.

4. إطلاق العمليات بحصانة مسبقة ضد OOM وتنظيف البيئة
عند التعامل مع الخدمات الحساسة التي لا يُسمح بإيقافها، يمكن بدء تشغيلها مع تمرير قيمة -1000 مباشرة لعزلها تماماً عن نطاق رادار OOM Killer.
إن إسناد الحد الأدنى -1000 يمنح العملية حصانة تامة تمنع نواة النظام من المساس بها أو التضحية بها حتى في أسوأ ظروف استنزاف الذاكرة.

نسند معرف العملية الجديدة إلى المتغير TARGET_PID ونتحقق من تطبيق الإعداد عبر استدعاء choom -p.
تُظهر شاشة الإخراج القيمة -1000 بوضوح، مؤكدة اكتساب البرنامج للحصانة المطلوبة منذ لحظة انطلاقه الأولى.

بعد اكتمال مراحل الاختبار، ننهي العمليات العالقة ونحرر موارد الجهاز بتنفيذ أمر الإلغاء pkill -f 'sleep 600' || true.
تضمن هذه الخطوة إغلاق كافة مسارات الاختبار الخلفية والحفاظ على بيئة النظام نظيفة وجاهزة للاستخدام الروتيني.

قدمنا في هذا المقال دليلاً عملياً لكيفية استغلال أداة choom لمراقبة سلوك OOM Killer وحماية البنى التحتية الحيوية في لينكس.
بادر بمواءمة أولويات العمليات في خوادمك التشغيلية لضمان استمرارية الخدمات الهامة حتى في أحلك أوقات الضغط على الذاكرة.