У меня есть процесс для приложения, которое должно работать, но в конечном итоге использует слишком много IO для того, что оно делает. И действительно сбивает мой компьютер, делая невозможным что-либо еще, пока он работает.
Поэтому мне было интересно, есть ли способ ограничить использование ввода-вывода, оперативной памяти и процессора для данного процесса? И его подпроцессы, конечно.
Это на моей системе Ubuntu 18.04 LTS.
ionice
,renice
и, возможно,ulimit -s
команды, и все.cgroups-io
так что понятия не имею :)Ответы:
Вы должны использовать комбинацию всех
cgexec
,cpulimit
иionice
:Ограничить RAM и SWAP:
Приведенные выше команды создают контрольную группу с именем
szMyGroup
(например, в вашем случаеgroup-great-uncle
), устанавливают ограничение на процессы, выполняемыеszMyGroup
до 512 МБ физической памяти и до 1024 МБ подкачки, а затем:который будет запускать вашу программу под
szMyGroup
контролем группы, таким образом, гарантируя, что они придерживаются ограниченийограничить дисковый ввод-вывод:
Приведенная выше команда использует
pgrep
с повторным использованием частей текущей командной строки для ограничения доступа к диску, чтобы использовать диск только тогда, когда никакая другая программа не использует егоОграничить процессор:
ЦП программы теперь ограничен 25% от максимального
Если программа для начала не использует много ЦП, уменьшите значение cpulimit до половины или менее того, что используется в данный момент.
источник