След натрупване на осем месеца разработки публикация на фоновия процес , който периодично проверява наличната памет (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
