Как ограничить Firefox потребление оперативной памяти без убийства процесса?
Очень долго не могу найти решение проблемы контроля использования оперативной памяти Firefox (да и другими программами) так, чтобы это работало, как действует утилита Firemin в Windows, т.е. чтобы не происходило удаления процесса при превышении определенного порога использования RAM в системе.
Можно ли получить от специалистов четкую инструкцию, как настроить такое поведение для любой программы в Ubuntu?
Есть разные утилиты (Earlyoom, Nohang и прочее), есть cgroup, но там как я понимаю, все в итоге приводит к убийству процесса и это грубое решение, приводящее к не комфортному использованию того же Firefox.
Нужно именно настроить ограничение так, чтобы например при достижении браузером уровня 700Мб RAM, дальше эта цифра не возрастала и браузер при этом корректно продолжал свою работу.
Ответы (1 шт):
Первый момент - если процесс кушает память, то он считает её свободной, а если она свободна то почему бы не позволить ему её кушать? Пусть ест!
В случае cgroup нужно выделить память в подкачке, тогда процесс не будет убит по OOM
cgcreate -g memory:firefoxlimited
echo 700M > /sys/fs/cgroup/memory/firefoxlimited/memory.limit_in_bytes
echo 4G > /sys/fs/cgroup/memory/firefoxlimited/memory.memsw.limit_in_bytes
cgexec -g memory:firefoxlimited firefox
или убрать килера
echo 1 > /sys/fs/cgroup/memory/firefoxlimited/memory.oom_control
Не забудьте включить cgroup в загрузчике /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=".... cgroup_enable=memory swapaccount=1 ...."
и
sudo update-grub
В cgroup2 параметры называются подругому и создать группу проще
https://facebookmicrosites.github.io/cgroup2/docs/create-cgroups.html
https://facebookmicrosites.github.io/cgroup2/docs/memory-controller.html