Випуск обробника нестачі пам'яті earlyoom 1.4

Після восьми місяців розробки опубліковано випуск фонового процесу earlyoom 1.4, який періодично перевіряє обсяг доступної пам'яті (MemAvailable, SwapFree) і намагається на ранній стадії відреагувати на нестачу пам'яті. Код проекту написаний мовою Сі та поширюється під ліцензії MIT.

Якщо обсяг доступної пам'яті менший за задане значення, то earlyoom примусово (через відправку SIGTERM або SIGKILL) завершить роботу процесу, що найбільш активно споживає пам'ять (має найбільше значення /proc/*/oom_score), не доводячи стан системи до очищення системних буферів і заважає роботі свопінгу (обробник OOM (Out Of Memory) в ядрі спрацьовує коли стан нестачі пам'яті вже досяг критичних значень і зазвичай до цього моменту система вже не реагує на дії користувача).

Earlyoom підтримує відправлення повідомлень про примусово завершені процеси на робочий стіл (за допомогою notify-send), а також надає можливість визначення правил, в яких за допомогою регулярних виразів можна задати імена процесів, завершення яких переважно (опція «-prefer») або зупинки яких варто уникати (опція «avoid»).

Основні зміни у новому випуску:

  • За рахунок відкладеного завантаження атрибутів процесів на 50% прискорено логіку вибору процесів для завершення;
  • Забезпечено відображення у лозі UID завершуваного процесу, на додаток до PID та імені процесу;
  • Додано підсвічування налагоджувального лога світло-сірим кольором;
  • Проведено чищення коду;
  • По можливості використано оголошення локальних блоків змінних;
  • Додано налаштування PATH_LEN для заміни вшитого в код значення розміру буфера;
  • Забезпечено запуск cppcheck за його наявності;
  • Додано тест продуктивності make bench;
  • Розширено набір тестів (make test);
  • Реалізовано скидання привілеїв root в unit-файлі systemd earlyoom.service. Ця зміна ламає можливість GUI повідомлень. Для увімкнення GUI повідомлень пропонується повернути root права, розкоментувавши "DynamicUser=true". Відключення root також наводить до неможливості отримання інформації про споживання пам'яті при монтуванні /proc як hidepid=1 чи hidepid=2.

Джерело: opennet.ru

Додати коментар або відгук