Existem muitas perguntas e respostas sobre como restringir os recursos de um único processo, por exemplo, o RLIMIT_AS pode ser usado para restringir a memória máxima alocada por um processo que pode ser visto como VIRT de maneira semelhante top
. Mais sobre o tópico, por exemplo, aqui. Existe uma maneira de limitar a quantidade de memória que um processo específico pode usar no Unix?
setrlimit(2)
a documentação diz:
Um processo filho criado via fork (2) herda os limites de recursos de seus pais. Os limites de recursos são preservados no execve (2).
Deve ser entendido da seguinte maneira:
Se um processo tiver um RLIMIT_AS de, por exemplo, 2 GB, ele não poderá alocar mais memória que 2 GB. Quando gera um filho, o limite de espaço de endereço de 2 GB é passado para o filho, mas a contagem começa em 0. Os dois processos juntos podem levar até 4 GB de memória.
Mas qual seria a maneira útil de restringir a soma total de memória alocada por toda uma árvore de processos?