Ограничение времени Debian virt/res/shr и cpu
На серверах работают несколько пользователей, которые работают с несколькими программами, некоторые из которых, похоже, не ведут себя и потребляют оперативную память, как, например, завтрашнего дня:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30091 xxxx 20 0 2194m 1.4g 1.4g S 21 9.0 0:56.03 aaaaa
30212 xxxx 20 0 1460m 1.1g 1.1g D 5 6.9 0:44.12 aaaaa
У нас есть настройка квоты файловой системы, иначе я ничего не знаю. Я хотел бы иметь возможность ограничить VIRT RES SHR (возможно, просто ограничение 1 ограничит другие 2?). Это возможно?
Также я хотел бы ограничить время cputime до завершения команды (на самом деле команда вызывается другим сценарием, я предполагаю, что сценарий отца не будет завершен?).
Я посмотрел на limit.conf и PAM, но не уверен, что это лучший способ и как его протестировать.
1 ответ
Ты хочешь setrlimit(RLIMIT_AS, ...)
, Из справочной страницы (setrlimit
(2)):
RLIMIT_AS
Максимальный размер виртуальной памяти процесса (адресного пространства) в байтах. Это ограничение влияет на вызовы brk (2), mmap (2) и mremap (2), которые завершаются ошибкой ENOMEM при превышении этого предела. Также автоматическое расширение стека завершится неудачно (и сгенерирует SIGSEGV, который убивает процесс, если через sigaltstack (2) не было сделано доступного альтернативного стека). Поскольку значение является длинным, на машинах с 32-битной длиной это ограничение не должно превышать 2 ГиБ, или этот ресурс не ограничен.