Если объём доступной памяти меньше заданного значения, то 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
