SYSTEMD-OOMD.SERVICE(8)

الاسم
systemd-oomd.service, systemd-oomd - قاتل نفاد الذاكرة (OOM) في مساحة المستخدم

موجز

systemd-oomd.service

/usr/lib/systemd/systemd-oomd

الوصف

systemd-oomd هي خدمة نظام تستخدم cgroups-v2 ومعلومات ضغط التوقف (PSI) للمراقبة واتخاذ إجراء تصحيحي قبل حدوث OOM في مساحة النواة.

يمكنك تفعيل المراقبة والإجراءات على الوحدات بتعيين ManagedOOMSwap= و ManagedOOMMemoryPressure= في تكوين الوحدة، انظر systemd.resource-control(5). يسترجع systemd-oomd معلومات حول هذه الوحدات من systemd(1) عند بدئه ويراقب التغييرات اللاحقة.

سيتم مراقبة مجموعات Cgroups للوحدات التي تم تعيين ManagedOOMSwap= أو ManagedOOMMemoryPressure= فيها إلى kill. يستطلع systemd-oomd دورياً إحصائيات PSI للنظام وتلك المجموعات cgroups ليقرر متى يتخذ إجراءً. إذا تم تجاوز الحدود المكونة، سيختار systemd-oomd مجموعة cgroup لإنهائها، ويرسل SIGKILL إلى جميع العمليات فيها. لاحظ أن مجموعات cgroup السليلة فقط هي المرشحة المؤهلة للقتل؛ الوحدة التي تم تعيين خاصيتها إلى kill ليست مرشحة (إلا إذا قام أحد أسلافها بتعيين خاصيتهم إلى kill). أيضًا فقط مجموعات cgroup الطرفية ومجموعات cgroup التي تم تعيين memory.oom.group فيها إلى 1 هي المرشحة المؤهلة؛ انظر OOMPolicy= في systemd.service(5).

يمكن استخدام oomctl(1) لسرد مجموعات cgroup المراقبة ومعلومات الضغط.

انظر oomd.conf(5) لمزيد من المعلومات حول تكوين هذه الخدمة.

انظر org.freedesktop.oom1(5) و org.freedesktop.LogControl1(5) لوصف واجهة برمجة تطبيقات D-Bus.

متطلبات النظام والتكوين

يجب أن يعمل النظام بنظام systemd مع تسلسل هرمي كامل موحد لـ cgroup لميزات cgroups-v2 المتوقعة. علاوة على ذلك، يجب تشغيل محاسبة الذاكرة لجميع الوحدات المراقبة بواسطة systemd-oomd. أسهل طريقة لتشغيل محاسبة الذاكرة هي ضمان تعيين قيمة DefaultMemoryAccounting= إلى true في systemd-system.conf(5).

يجب ترجمة النواة بدعم PSI. هذا متاح في لينكس 4.20 وما فوق.

يوصى بشدة بتمكين المبادلة (swap) في النظام لكي يعمل systemd-oomd على النحو الأمثل. مع تمكين المبادلة، يقضي النظام وقتاً كافياً في مبادلة الصفحات للسماح لـ systemd-oomd بالتفاعل. بدون المبادلة، يدخل النظام في حالة تعطل حي (livelocked) بسرعة أكبر وقد يمنع systemd-oomd من الاستجابة في وقت معقول. انظر "دفاعاً عن المبادلة: مفاهيم خاطئة شائعة"[1] لمزيد من التفاصيل حول المبادلة. سيتم تجاهل أي إجراءات قائمة على المبادلة في الأنظمة بدون مبادلة. بينما يمكن لـ systemd-oomd تنفيذ إجراءات قائمة على الضغط على مثل هذا النظام، ستكون زيادات الضغط أكثر حدة وقد تتطلب ضبطاً أكثر للحصول على العتبات والسلوك المطلوبين.

كن على علم أنه إذا كنت تنوي تمكين المراقبة والإجراءات على user.slice أو user-$UID.slice أو مجموعات cgroup السلفية الخاصة بهما، فمن المستحسن بشدة أن تتم إدارة برامجك بواسطة مدير مستخدم systemd لمنع تشغيل عدد كبير جداً من العمليات تحت نفس نطاق الجلسة (وبالتالي تجنب موقف حيث تؤدي المهام كثيفة الذاكرة إلى تشغيل systemd-oomd لقتل كل شيء تحت مجموعة cgroup). إذا كنت تستخدم بيئة سطح مكتب مثل GNOME أو KDE، فهي بالفعل تفرخ العديد من مكونات الجلسة مع مدير مستخدم systemd.

توصيات الاستخدام

يعمل ManagedOOMSwap= مع قيم المبادلة على مستوى النظام، لذا فإن تعيينه على الشريحة الجذرية -.slice، والسماح لجميع مجموعات cgroup السليلة بأن تكون مرشحة مؤهلة قد يكون الأكثر منطقية.

يميل ManagedOOMMemoryPressure= إلى العمل بشكل أفضل على مجموعات cgroup أسفل الشريحة الجذرية. بالنسبة للوحدات التي تميل إلى وجود عمليات أقل حساسية لزمن الوصول (مثل system.slice)، قد يكون حد أعلى مثل المبدئي 60% مقبولاً، حيث يمكن لتلك العمليات عادةً تجاوز حالات التباطؤ الناتجة عن نقص الذاكرة دون عواقب وخيمة. ومع ذلك، قد تفضل خدمة مثل user@$UID.service قيمة أقل بكثير مثل 40%.

الخيارات

--dry-run
    قم بتشغيل تجريبي لـ systemd-oomd: عند تشغيل عملية قتل، اطبعها في السجل بدلاً من قتل مجموعة cgroup.

    أُضيف في الإصدار 253.

-h، --help
    اطبع نص مساعدة قصير واخرج.

--version
    اطبع سلسلة إصدار قصيرة واخرج.

إشارات

SIGHUP
    عند استقبال إشارة العملية SIGHUP، سيعيد systemd-oomd تحميل ملف التكوين الخاص به.

    أُضيف في الإصدار 258.

انظر أيضًا

systemd(1), systemd-system.conf(5), systemd.resource-control(5), oomd.conf(5), oomctl(1), org.freedesktop.oom1(5)

ملاحظات

1.  "دفاعاً عن المبادلة: مفاهيم خاطئة شائعة"
    https://chrisdown.name/2018/01/02/in-defence-of-swap.html

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.