Выпуск обработчика нехватки памяти 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.
Источник: http://www.opennet.ru/opennews/art.shtml? num=52465
© OpenNet