earlyoom - ديمون نفاد الذاكرة المبكر
earlyoom - ديمون نفاد الذاكرة المبكر
earlyoom هو ديمون خفيف الوزن في مساحة المستخدم يمنع الحالة الكلاسيكية Linux “النظام كله تجميد عندما نفدت RAM” مشكلة. عندما تنخفض الذاكرة، فإن قاتل OOM في النواة غالباً ما يتفاعل متأخراً جداً، بعد أن أصبحت الآلة بالفعل غير مستجيبة من الإرهاق. يراقب earlyoom ذاكرة الوصول العشوائي والمبادلة المتاحة وعندما تنخفض أدناه العتبات القابلة للتكوين يقتل أكبر مستهلك ذاكرة في وقت مبكر — الحفاظ على تفاعل النظام بدلاً من التعليق. إنها بسيطة وخالية من الاعتماديات وتُستخدم على نطاق واسع على أجهزة سطح المكتب والخوادم.
التثبيت
| النظام الأساسي | الأمر |
|---|---|
| Debian/Ubuntu | sudo apt install earlyoom |
| Fedora | sudo dnf install earlyoom (الافتراضي على Fedora Workstation) |
| Arch Linux | sudo 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 نواة
| الجانب | earlyoom | systemd-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