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, тем самым освободив оперативную память. Если у вас произошло именно так — поздравляю, всё работает как и должно! Успехов!

Вы можете поделиться материалом в социальных сетях:

6 комментариев

  1. ОЗУ 20Гб, тестирую archman linux. Система работает, но _иногда_ происходят такие косяки. Например, в gimp выделяю, чтобы скопипастить некую часть картинки. При ее копировании в буфер, gimp сразу же закрывается как при острой нехватке оперативы. Такие косяки gimp наблюдаются не сразу, а спустя 10-15 мин после начала работы. Подскажите, может ли это быть связано с некоей замусоренностью ОЗУ во время сеанса, чтобы попробовать убрать сей глюк с помощью Earlyoom?

    ...

    другие пакеты работают нормально

    1. Система не виновата, это проблема gimp. У меня он так же падает. Можете, конечно, проверить память с помощью memtest86+, но скорее всего у вас всё OK и проблема сугубо в гимпе. Кстати, DE у вас какая? Пишут, что gimp в KDE имеет проблемы, вот у меня как раз кеды.

      1. Imatvey, у меня xfce, никакими фоновыми процессами система вроде, не перегружена. К сожал., чуть не забыл, в маленьком и простеньком графредакторе pinta происходит такая же как и в джимпе, фигня8 ( Как это разрулить, пока не знаю((

          1. Imatvey, большое спасибо за ссылку, но всё успел уже проверить на ранее упомянутых гимпе, пинте +на одновременно работающем браузере +на некоторых небольших пакетах в качестве довесков. Теперь ничего не вылетает и все пакеты благополучно работают во взаимных фонах:) Еще раз благодарю Вас за данный пост! 8)

Добавить комментарий

Ваш e-mail не будет опубликован, однако если вы его укажете, вам смогут приходить оповещения когда кто-то ответит на ваш комментарий.

Ваш адрес email не будет опубликован.