След осем месеца разработка издание на фоновия процес , който периодично проверява обема на наличната памет (MemAvailable, SwapFree) и се опитва рано да реагира на възникване на недостиг на памет. Кодът на проекта е написан на C и под лиценз 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
