لا تستطيع نواة Linux معالجة حالات نفاد الذاكرة بأمان

في القائمة البريدية لمطوري Linux kernel نشأ مشكلة في التعامل مع حالة الذاكرة المنخفضة في Linux:

هناك مشكلة معروفة أصابت العديد من الأشخاص لسنوات عديدة ويمكن إعادة إنتاجها في أقل من بضع دقائق على أحدث إصدار من Linux kernel 5.2.6. تم ضبط جميع معلمات kernel على القيم الافتراضية.

الخطوات التالية:

  • قم بالتمهيد باستخدام المعلمة "mem=4G".
  • قم بإيقاف تشغيل دعم المبادلة (sudo Swapoff -a).
  • نقوم بتشغيل أي متصفح ويب، على سبيل المثال، Chrome/Chromium و/أو Firefox.
  • نبدأ في فتح علامات التبويب مع المواقع ونشاهد كيف يتناقص مقدار الذاكرة الحرة.

بمجرد ظهور موقف تتطلب فيه علامة التبويب الجديدة ذاكرة وصول عشوائي (RAM) أكبر مما هو متاح، يتجمد النظام بالكامل تقريبًا. سيكون لديك صعوبة حتى في تحريك مؤشر الماوس. سوف يومض مؤشر القرص الصلب دون توقف (لا أعرف السبب). لن تتمكن من تشغيل تطبيقات جديدة أو إغلاق التطبيقات قيد التشغيل حاليًا.

يمكن أن تستمر هذه الأزمة الصغيرة دقائق أو أكثر. أعتقد أن النظام لا ينبغي أن يتصرف بهذه الطريقة. أعتقد أنه يجب القيام بشيء ما لتجنب مثل هذا "التجميد".

أنا متأكد تمامًا من أنه من الممكن تغيير بعض معلمات sysctl لتجنب هذا النوع من المواقف، ولكن هناك شيء يخبرني أن هذا قد يكون الإعداد الافتراضي للجميع لأن المستخدمين غير التقنيين الذين يواجهون هذه المشكلة سوف يتخلون ببساطة عن استخدام Linux ولن يفعلوا ذلك. الرعاية للبحث عن حلول على جوجل.

В تعليقات على Reddit، يقترح بعض المستخدمين تمكين المبادلة، لكن هذا لا يحل المشكلة، بل يؤدي فقط إلى تأجيلها وغالبًا ما يزيد الأمر سوءًا. كحل محتمل في المستقبل، قد يكون الأمر الذي ظهر في النواة متورطا 4.20 وتحسينها في جوهرها 5.2 النظام الفرعي PSI (معلومات توقف الضغط)، والذي يسمح لك بتحليل المعلومات حول وقت الانتظار لتلقي الموارد المختلفة (وحدة المعالجة المركزية، الذاكرة، الإدخال / الإخراج). يتيح هذا النظام الفرعي تنظيم مراقبة نقص الذاكرة في مرحلة مبكرة، وتحديد مصدر المشكلات وإنهاء التطبيقات غير المهمة دون التسبب في تأثيرات ملحوظة للمستخدم.

المصدر: opennet.ru

إضافة تعليق