У меня в десктопе много операционки, но расходовать ее всю на кривоподелие какого-то вебмастера я не готов. Не дай, забудешь какой-нибудь убогий Facebook на ночь, систему можно увидеть в свопе. В то же время резать все через ulimit некрасиво, некоторым задачам память нужна.
Стал разбираться с cgroups. Надо отметить, что технология сыровата и переезжала в systemd, за счет чего большинство документации вообще непригодно для использования. Ниже описывается вариант,который работает на Fedora 29.
Запускаем соответствующую службу
Код:
systemctl enable cgconfig.service
systemctl start cgconfig.service
systemctl status cgconfig.service
Создаем группу olegon с подгруппой chrome для удобства
Код:
cgcreate -g cpu,memory:olegon
cgcreate -g cpu,memory:olegon/chrome
помечаем все запущенные процессы этой группой
Код:
cgclassify -g cpu,memory:olegon/chrome $(pidof chrome)
разрешаем этой группе не более 1Гб памяти
Код:
cgset -r memory.limit_in_bytes=1G olegon/chrome
и не больше половины (1024 - все) процессоров
Код:
cgset -r cpu.shares=512 olegon/chrome
минусом этого решения является то, что при нехватке памяти программа уходит в своп и, если он на том же диске, что и система, может получиться конфуз. Однако, само по себе решение отличное и работает, как надо.
для создания постоянных групп необходимо править файл /etc/cgconfig.conf
например
Код:
group browsers {
cpu {
cpu.shares = "256";
}
memory {
memory.limit_in_bytes = "1G";
memory.soft_limit_in_bytes = "768M";
}
}