Skip to content

Instantly share code, notes, and snippets.

@hakavlad
Last active November 21, 2020 22:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hakavlad/f3b41f0dc4324f110eefcda59c101081 to your computer and use it in GitHub Desktop.
Save hakavlad/f3b41f0dc4324f110eefcda59c101081 to your computer and use it in GitHub Desktop.
Настройка memavaild для сохранения отзывчивости при запуске жирных фоновых процессов

Настройка memavaild 0.6 для сохранения отзывчивости при запуске жирных фоновых процессов

Конфигурация memavaild.conf

Для соответствующей настройки memavaild нужно добавить в конфиг /etc/memavaild.conf следующую строку:

@LIMIT  CGROUP=user.slice/user-$UID.slice/user@$UID.service/idle.slice  MIN_MEM_HIGH_PERCENT=5  RELATIVE_SHARE=0.2

Добавляем alias

Добавляем в ~/.bashrc:

alias idle-run='systemd-run --slice=idle.slice --shell'

Как запускать

Далее для запуска жирных процессов выполняем в эмуляторе терминала idle-run, и далее процессы в этом терминале будут выполняться в отдельном слайсе, который первоочередно будет вытесняться в своп при помощи memavaild.

Альтернатива

Повесить на горячую клавишу запуск терминала сразу через systemd-run, команда примерно такая: systemd-run --user --slice=idle.slice --shell.

Демо

Без фризов при свопе на HDD выполняется tail /dev/zero:

В комбинации в prelockd и nohang-desktop и со свопом на zram и вовсе можно выдерживать while true; do (tail /dev/zero &); done (не повторять! опасно!):

Альтернатива для современных гномеров

Можно обеспечить первоочередное вытеснение гном-терминала и процессов, запущенных в нем. Нужно лишь раскомментировать строку

# @LIMIT  CGROUP=user.slice/user-$UID.slice/user@$UID.service/app.slice/app-org.gnome.Terminal.slice  MIN_MEM_HIGH_PERCENT=5  RELATIVE_SHARE=0.2

А для запуска задач с обычным приоритетом можно использовать любой другой эмулятор, например lxterminal.

@hakavlad
Copy link
Author

hakavlad commented Nov 5, 2020

TODO:

  • переименовать ключи конфига, сделав имена более интуитивно понятными

  • описать ключи - что значит каждый ключ, на что влияет

  • описать возможные способы применения

@hakavlad
Copy link
Author

hakavlad commented Nov 5, 2020

Спрашивайте ответы.

@hakavlad
Copy link
Author

hakavlad commented Nov 5, 2020

Продолжение следует.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment