Earlyoom

Earlyoom — предотвращаем ситуацию OOM в Linux быстро и просто

Если вы работаете с «тяжелыми» приложениями в условиях нехватки оперативной памяти, вам знакома такая ситуация, как OOM — Out Of Memory, это когда запущенным программам нужно больше оперативной памяти, чем имеется в системе. В такой ситуации система обычно начинает свапиться на диск и при этом тормозить, что неприятно для пользователя. У меня в блоге уже был материал про Nohang, так вот Earlyoom делает всё то же самое, ну кроме отображения уведомлений, но в то же время менее требовательна к конфигурации компьютера.

Earlyoom автоматически завершает программу, если она приводит к исчерпыванию всей свободной ОЗУ в системе, предотвращая ситуацию нехватки оперативной памяти — OOM. Условия срабатывания такие:

sending SIGTERM when mem <= 10.00% and swap <= 10.00%,
        SIGKILL when mem <=  5.00% and swap <=  5.00%

Установка, включение автозапуска и запуск Earlyoom в различных дистрибутивах Linux

Earlyoom имеется в репозиториях всех популярных дистрибутивов Linux.

Arch Linux, Manjaro Linux

sudo pacman -S earlyoom
sudo systemctl enable earlyoom.service
sudo systemctl start earlyoom.service

Debian GNU/Linux, Ubuntu, Linux Mint

sudo apt install earlyoom
sudo systemctl enable earlyoom.service
sudo systemctl start earlyoom.service

Проверка работы

Узнать статус процесса Earlyoom можно с помощью следующей команды:

sudo systemctl status earlyoom.service

Если в статусе указано «Active: active (running)» — всё в порядке, Earlyoom запущен и правильно работает. Теперь можно устроить в системе катастрофическую нехватку оперативной памяти для проверки работы Earlyoom. Для этого прежде всего отключим swap на диске, если таковой имеется, чтобы не ждать пока он заполнится.

sudo swapoff -a

Ну а теперь забиваем всю доступную в системе оперативную память нулями:

tail /dev/zero

Далее должно произойте следующее: процесс tail должен занять всю доступную ОЗУ в системе, после чего его должен прибить Earlyoom, тем самым освободив оперативную память. Если у вас произошло именно так — поздравляю, всё работает как и должно! Успехов!