Como posso definir um limite de RAM para um usuário específico no Linux?

3

Como posso definir um limite de RAM para um usuário específico? Eu tentei editar o arquivo /etc/security/limits.conf , e a RAM limita lá, mas ainda vejo um processo de usuário excedendo o limite definido.

Eu sei que os limites estão especificados em kb, então não estou usando um número incorreto.

Por exemplo, estou tentando configurá-lo para que um usuário não possa usar mais do que 2.048mb (ou 2.097.152kb) de memória, e seu programa usará como 2500mb.

Existe alguma maneira de conseguir isso sem máquinas virtuais? Eu também estou tentando ficar longe de executar máquinas virtuais como uma opção.

Aqui está meu /etc/sysconfig/limits.conf .

Além disso, o limite de RSS é ignorado, pois a versão do kernel que estou executando é 2.6.18

    
por slhck 26.02.2012 / 05:46

2 respostas

1

Os controles relacionados à memória são impostos por limites de recursos por processo. Os limites do processo relacionados à memória foram parcialmente quebrados por um longo tempo no Linux. Exemplo:

$ (ulimit -m 1; emacs)

Se o Emacs for iniciado, o limite de recursos RSS não está sendo imposto. Os limites que vi funcionam são os limites do segmento de dados e da pilha.

$ (ulimit -d 1; emacs)
emacs: Memory exhausted--use M-x save-some-buffers RET
$ (ulimit -s 1; emacs)
$

Portanto, use apenas os limites de memória "data" e "stack", pois eles parecem ser impostos.

    
por 26.02.2012 / 06:13
-1

Para limitar os recursos disponíveis para um conjunto de processos, para usuários ou grupos, você pode usar cgroups : link

    
por 18.07.2016 / 21:44