Существует множество вопросов и ответов об ограничении ресурсов одного процесса, например, RLIMIT_AS может использоваться для ограничения максимального объема памяти, выделяемой процессом, который можно рассматривать как VIRT в подобии top
. Подробнее по теме, например здесь. Есть ли способ ограничить объем памяти, который конкретный процесс может использовать в Unix?
setrlimit(2)
Документация гласит:
Дочерний процесс, созданный с помощью fork (2), наследует ограничения ресурсов своего родителя. Пределы ресурсов сохраняются в execve (2).
Это следует понимать следующим образом:
Если процесс имеет RLIMIT_AS, например, 2 ГБ, он не может выделить больше памяти, чем 2 ГБ. Когда он порождает дочерний элемент, ограничение адресного пространства в 2 ГБ будет передано дочернему элементу, но отсчет начинается с 0. 2 процесса вместе могут занимать до 4 ГБ памяти.
Но что может быть полезным для ограничения общего объема памяти, выделенной целым деревом процессов?