Если вы работаете с «тяжелыми» приложениями в условиях нехватки оперативной памяти, вам знакома такая ситуация, как 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, тем самым освободив оперативную память. Если у вас произошло именно так — поздравляю, всё работает как и должно! Успехов!
ОЗУ 20Гб, тестирую archman linux. Система работает, но _иногда_ происходят такие косяки. Например, в gimp выделяю, чтобы скопипастить некую часть картинки. При ее копировании в буфер, gimp сразу же закрывается как при острой нехватке оперативы. Такие косяки gimp наблюдаются не сразу, а спустя 10-15 мин после начала работы. Подскажите, может ли это быть связано с некоей замусоренностью ОЗУ во время сеанса, чтобы попробовать убрать сей глюк с помощью Earlyoom?
...
другие пакеты работают нормально
Система не виновата, это проблема gimp. У меня он так же падает. Можете, конечно, проверить память с помощью memtest86+, но скорее всего у вас всё OK и проблема сугубо в гимпе. Кстати, DE у вас какая? Пишут, что gimp в KDE имеет проблемы, вот у меня как раз кеды.
Imatvey, у меня xfce, никакими фоновыми процессами система вроде, не перегружена. К сожал., чуть не забыл, в маленьком и простеньком графредакторе pinta происходит такая же как и в джимпе, фигня8 ( Как это разрулить, пока не знаю((
Можно попробовать gimp из другого источника, нежели репы Арча. Например, flathub.org/apps/details/org.gimp.GIMP
Imatvey, большое спасибо за ссылку, но всё успел уже проверить на ранее упомянутых гимпе, пинте +на одновременно работающем браузере +на некоторых небольших пакетах в качестве довесков. Теперь ничего не вылетает и все пакеты благополучно работают во взаимных фонах:) Еще раз благодарю Вас за данный пост! 8)
Рад, что помог вам.
Вот нету этого пакета в стандартных репах под архитектуру АРМ. Попробую накатить snap или flatpak. Имеет ли смыл заморачиваться с установкой «изолированного» типа этого пакета...?
Ничего страшного. В AUR есть скрипт сборки из исходников:
yay -Sa earlyoom-git
никакого AUR не нужно. git clone github.com/rfjakob/earlyoom.git && cd earlyoom && make && sudo make install && sudo systemctl enable earlyoom.service && sudo systemctl start earlyoom.service
Можно и так, но yay устанавливает собранное ПО в систему как пакет, и его потом, если понадобится, легче будет удалить.