تخطَّ إلى المحتوى

earlyoom - ديمون نفاد الذاكرة المبكر

earlyoom - ديمون نفاد الذاكرة المبكر

earlyoom هو ديمون خفيف الوزن في مساحة المستخدم يمنع الحالة الكلاسيكية Linux “النظام كله تجميد عندما نفدت RAM” مشكلة. عندما تنخفض الذاكرة، فإن قاتل OOM في النواة غالباً ما يتفاعل متأخراً جداً، بعد أن أصبحت الآلة بالفعل غير مستجيبة من الإرهاق. يراقب earlyoom ذاكرة الوصول العشوائي والمبادلة المتاحة وعندما تنخفض أدناه العتبات القابلة للتكوين يقتل أكبر مستهلك ذاكرة في وقت مبكر — الحفاظ على تفاعل النظام بدلاً من التعليق. إنها بسيطة وخالية من الاعتماديات وتُستخدم على نطاق واسع على أجهزة سطح المكتب والخوادم.

التثبيت

النظام الأساسيالأمر
Debian/Ubuntusudo apt install earlyoom
Fedorasudo dnf install earlyoom (الافتراضي على Fedora Workstation)
Arch Linuxsudo pacman -S earlyoom
من المصدرmake && sudo make install من الريبو
التحققearlyoom --version

تفعيل الخدمة

الأمرالوصف
sudo systemctl enable --now earlyoomتفعيل وبدء الديمون
sudo systemctl status earlyoomتحقق من أنه يعمل
journalctl -u earlyoom -fمراقبة قراراته مباشرة
earlyoomتشغيل في الواجهة (اختبار)

كيف يقرر

earlyoom يراقب رقمين ويتصرف عندما كلا تنخفض أدناه عتباتهم:

الميتريكاالعلمIsh الافتراضي
RAM المجاني٪-m PERCENTعلى سبيل المثال 10٪
تبديل مجاني٪-s PERCENTعلى سبيل المثال 10٪
القتل المحفزكلاهما تحت العتبات
# اقتل عندما RAM <5٪ و swap <5٪
earlyoom -m 5 -s 5

الخيارات الرئيسية

الخيارالوصف
-m PERCENT[,KILL]عتبة ذاكرة الوصول العشوائي للتحذير/القتل (قيمتان = تحذير، قتل)
-s PERCENT[,KILL]عتبة المبادلة للتحذير/القتل
-M SIZEعتبة RAM في KiB بدلاً من الدرجة المئوية
-r INTERVALفاصل تقرير الذاكرة (ثانية)
-nتمكين إخطارات سطح المكتب على الاقتل
-N COMMANDتشغيل أمر عند الاقتل (على سبيل المثال تنبيه مخصص)
--prefer REGEXتفضيل العمليات القاتلة مطابقة الاسم
--avoid REGEXتجنب قتل العمليات مطابقة الاسم
-pإعطاء earlyoom نفسه درجة OOM مواتية
-dتمكين الإخراج تصحيح

تفضيل / تجنب العمليات

# تفضيل قتل المتصفحات/المترجمات؛ حماية خادم العرض و sshd
earlyoom -m 8 -s 8 \
  --prefer '(^|/)(chrome|firefox|cc1plus|java)$' \
  --avoid '(^|/)(Xorg|sshd|systemd)$'
التوجيهالتأثير
--preferاقتل هؤلاء أولاً إن أمكن
--avoidاقتل هؤلاء فقط كملاذ أخير

ضبط هذه يحافظ على عملية الجموح من الاستيلاء على جلسة عمل أو وصول SSH معك.

ملف التكوين

على توزيعات systemd، عادة ما تعيش الخيارات في ملف env:

# /etc/default/earlyoom  (Debian) أو ملف EnvironmentFile للوحدة
EARLYOOM_ARGS="-m 5 -s 5 -r 60 --avoid '(^|/)(sshd|Xorg)$'"

ثم sudo systemctl restart earlyoom.

earlyoom مقابل systemd-oomd مقابل OOM نواة

الجانبearlyoomsystemd-oomdقاتل النواة OOM
الطبقةديمون مساحة المستخدممساحة المستخدم (systemd, PSI-based)النواة
محفزذاكرة الوصول العشوائي/مبادلة٪معلومات ضغط الضغط (PSI)حقاً نفدت من الذاكرة (متأخر)
الحبوبيةعملية (الأكبر)cgroup/وحدةعملية
التكوينأعلام بسيطةسياسة systemd oomdمحدود (oom_score_adj)
الأفضل لـشبكة أمان بسيطة وفعالةcgroups مُدارة systemdالملاذ الأخير

على توزيعات systemd الحديثة، systemd-oomd (المستند إلى PSI) بديل؛ earlyoom يبقى شعبياً بسبب بساطته ويعمل في أي مكان.

سير العمل العام

# سطح المكتب: الحفاظ على استجابة واجهة المستخدم وإخطار عند القتل وحماية الجلسة
earlyoom -m 8 -s 4 -n --avoid '(^|/)(Xorg|gnome-shell|sshd)$'

# الخادم: عتبات محافظة وتسجيل كل إجراء
sudo systemctl enable --now earlyoom
journalctl -u earlyoom -f

الموارد