Limitando usuários com ram cgroups não funcionando (para mim)

3

Eu me registrei porque não gerenciei os cgroups com vários tutoriais / comentários / o que você encontrar no google. Eu quero limitar a quantidade de memória RAM que um usuário specifix pode usar. Internet diz "cgroups". Meu testerver está executando o Ubuntu 14.04. Você pode dividir os tutoriais mencionados em duas categorias. Defina limites diretamente usando echo e use uma configuração específica. Nenhum deles está funcionando para mim.

Definindo limites usando echo

cgcreate -g cpu,cpuacct,...:/my_group

termina sem avisos. Quando tento correr

echo 100M > memory.limit_in_bytes

apenas diz "não permitido" mesmo quando usa o sudo. Eu nem sequer chego a ponto de limitar outro usuário.

Definindo limites usando config

Eu li sobre dois arquivos de configuração. Então, aqui estão meus arquivos de configuração:

cgconfig.conf

mount {
    memory  = /cgroup/memory;
}

group limit_grp {
        memory {
                memory.limit_in_bytes=100M;
                memory.memsw.limit_in_bytes=125M;
        }
}

cgrules.conf

testuser    memory    limit_grp

Quando eu corro

cgconfigparser -l /etc/cgconfig.conf

é montado no systemd. Agora eu faço logon com o testuser, executo uma tarefa intensa de memória - e ele roda sem se importar com o meu limite.

Eu tentei reiniciar, nada mudou. Mesmo algumas tentativas estranhas usando a configuração do kernel não funcionaram. Eu sou novo no cgroups e não esperava que fosse complicado. Eu apreciaria todas as sugestões para o meu tópico. Obrigado antecipadamente!

    
por darkspirit510 25.06.2016 / 19:47

1 resposta

0

O motivo pelo qual você está vendo esse comportamento provavelmente se deve ao fato de que sua sessão de login já possui um grupo de limite de memória associado, e o processo está herdando isso, de acordo com a configuração do systemd.

Verifique seu cgroup de processo em execução com:

cat /proc/pid/cgroup

... e você pode ver algo como:

13:name=systemd:/user/0.user/2.session
12:debug:/
11:pids:/
10:net_prio:/user/0.user/2.session
9:perf_event:/user/0.user/2.session
8:net_cls:/user/0.user/2.session
7:freezer:/user/0.user/2.session
6:devices:/user/0.user/2.session
5:memory:/user/0.user/2.session
4:blkio:/user/0.user/2.session
3:cpuacct:/user/0.user/2.session
2:cpu:/
1:cpuset:/

Supondo que você não queira esse comportamento, você pode usar seu cgroup personalizado com a edição /etc/systemd/logind.conf do controlador de memória e remover memory da linha Controllers .

    
por 12.06.2017 / 15:56