Выпуск earlyoom 1.1, процесса для раннего реагирования на нехватку памяти
Как сообщает opennet.ru после пяти месяцев разработки опубликован выпуск фонового процесса earlyoom 1.1, который периодически (10 раз в секунду) проверяет объем доступной памяти (MemAvailable, SwapFree) и пытается на ранней стадии отреагировать на возникновения нехватки памяти.
Если объем доступной памяти меньше заданного значения, то earlyoom принудительно (через отправку SIGKILL) завершит работу процесса, наиболее активно потребляющего память (имеющего самое большое значение /proc/*/oom_score), не доводя состояние системы до очистки системных буферов и мешающего работе своппинга (обработчик OOM (Out Of Memory) в ядре срабатывает когда состояние нехватки памяти уже достигло критичных значений и обычно к этому моменту система уже не реагирует на действия пользователя).
Earlyoom поддерживает отправку уведомлений о принудительно завершенных процессах на рабочий стол (с помощью notify-send), а также предоставляет возможность определения правил, в которых при помощи регулярных выражений можно задать имена процессов, завершение которых предпочтительно (опция --prefer) или остановки которых стоит избегать (опция --avoid).
Основные изменения в новом выпуске:
- Устранена уязвимость, которая позволяет подставить shell-код при выводе всплывающих уведомлений через манипуляции с именем процесса;
- Время сна после неудачного завершения процесса снижено с 10 до 1 секунды;
- Всплывающие уведомления теперь отправляются после завершения процесса, а не перед;
- В дополнение к "-h" добавлена опция "--help";
- Исправлена проблема, приводящая к неверному отображению имен процессов во всплывающих уведомлениях;
- Исправлено возможное деление на ноль при использовании опции "-S".