Назад | Перейти на главную страницу

Debian virt / res / shr и ограничение времени процессора

На серверах несколько пользователей запускают несколько программ, некоторые из которых, похоже, не работают и занимают оперативную память, как будто завтра не наступит, например:

  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 до завершения команды (на самом деле команда вызывается другим скриптом, я предполагаю, что родительский скрипт не будет завершен?).

Я просмотрел файлы limits.conf и PAM, но не уверен, что лучше всего и как тестировать.

Вы хотите setrlimit(RLIMIT_AS, ...). На странице руководства (setrlimit(2)):

RLIMIT_AS

Максимальный размер виртуальной памяти (адресного пространства) процесса в байтах. Этот предел влияет на вызовы brk (2), mmap (2) и mremap (2), которые завершаются ошибкой ENOMEM при превышении этого ограничения. Также автоматическое расширение стека завершится ошибкой (и сгенерирует SIGSEGV, который завершает процесс, если альтернативный стек не был доступен через sigaltstack (2)). Поскольку значение является длинным, на машинах с 32-битной длиной либо этот предел не превышает 2 ГиБ, либо этот ресурс не ограничен.