Como posso restringir o uso de RAM para um usuário ou processo específico?

8

Estou usando um serviço em segundo plano que vaza memória de tempos em tempos. Para impedir o uso do Alt+ SysRq REISUB[ 1 ], gostaria de restringir o uso da RAM para um processo ou usuário do sistema.

Eu realmente gostaria de dizer: O usuário x pode usar a quantidade máxima de RAM de 1 GB.

Isso é viável? Preciso de um tipo de máquina virtual para isso? Estou usando o Ubuntu 9.10.

guerda
fonte

Respostas:

10

ulimit é seu amigo. Confira o sinalizador -m. Acho que você definiu isso antes de iniciar seu processo e ele se aplica a partir de então (no shell atual).

basszero
fonte
Obrigado, boa dica! Pelo que entendi ulimit, limita a memória de todos os usuários / processos / qualquer consumo. Eu apenas gosto de limitá-lo a um usuário / processo e subprocessos.
guerda 5/11/09
1
O ulimit é um comando do shell e afeta apenas os processos iniciados no mesmo shell após a execução do ulimit. Você inicia o processo em um script de shell com um comando ulimit para que ele afete exatamente esse processo.
6119 KeithB
4

Além dos comandos do shell ulimit(para bash) ou limit(para csh), você pode controlar isso de dentro do seu código com a ulimit()função

KeithB
fonte
1
Páginas de manual obrigatórias: linux.die.net/man/1/ulimit (comando do shell) e linux.die.net/man/3/ulimit (função C).
Stephan202