Me cadastrei porque não consegui rodar cgroups com vários tutoriais/comentários/o que você encontrar no google. Quero limitar a quantidade de memória RAM que um usuário específico pode usar. A Internet diz "cgroups". Meu servidor de teste está executando o Ubuntu 14.04. Você pode dividir os tutoriais mencionados em duas categorias. Defina limites diretamente usando echo e use configurações específicas. Nenhum dos dois está funcionando para mim.
Configurando limites usando echo
cgcreate -g cpu,cpuacct,...:/my_group
termina sem nenhum aviso. Quando tento correr
echo 100M > memory.limit_in_bytes
apenas diz "não permitido" mesmo ao usar o sudo. Eu nem chego a limitar outro usuário.
Definir limites usando configuração
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
ele é montado no systemd. Agora eu faço logon com testuser, executo uma tarefa que consome muita memória - e ela é executada sem me importar com meu limite.
Tentei reiniciar, nada mudou. Mesmo algumas tentativas estranhas de usar a configuração do kernel não funcionaram. Sou novo no cgroups e não esperava que fosse tão complicado. Eu apreciaria qualquer sugestão para o meu tópico. Agradeço antecipadamente!
Responder1
O motivo pelo qual você está vendo esse comportamento provavelmente se deve ao fato de sua sessão de login já ter um grupo de limite de memória associado, e o processo está herdando isso, de acordo com a configuração do systemd.
Verifique o cgroup do seu processo em execução com:
cat /proc/pid/cgroup
...e você poderá 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 edição /etc/systemd/logind.conf
e remoção do controlador de memória memory
da Controllers
linha.
Responder2
Eu tive um problema semelhante (no Fedora 29): parecia que meu /etc/cgconfig.conf
foi completamente ignorado. Correndo
sudo systemctl enable cgconfig
e a reinicialização resolveu o problema.