Subsistema de memória do CGroups

2

Eu quero saber se posso definir limites dinâmicos para o subsistema de memória em um cgroup. Atualmente tenho OOM desativado e um processo fictício para testar o grupo de controle, quando o limite na memória é atingido, o processo congela (como esperado), mas quando tento definir um limite maior (como 2 vezes mais memória), o echo comando falha e o processo permanece congelado.

Como posso definir limites de uso de memória dinâmica em um cgroup sem mover os processos para outro cgroup com o novo conjunto de limites?

    
por fabiux 07.07.2014 / 20:49

2 respostas

1

Quando você menciona "limites dinâmicos" usando cgroups, precisa ser um pouco mais específico sobre o que está procurando. É melhor fornecer um exemplo do que seu aplicativo e cgroup fazem junto com o cgconfig.conf. Isso nos daria uma melhor imagem.

Embora cgroups, permita limitar um processo a uma certa quantidade de memória usando memory.limit_in_bytes no cgconfig.conf, ele apenas define o limite superior e não reclama se seu processo usa um limite inferior. Portanto, não tenho certeza se você exige cgroups neste caso.

Portanto, se o seu programa está alocando memória dinamicamente, você também pode precisar verificar quanto de memória está sendo superada. Verifique os ajustáveis do kernel usando sysctl -a | grep overcommit e altere para sempre supercomprometir, independentemente de a memória estar disponível ou não.

    
por askb 08.07.2014 / 08:10
1

Bem, depois de algumas pesquisas, descobri que alguns parâmetros em um cgroup não podem ser modificados quando há tarefas nele.

Infelizmente, os parâmetros de limite de memória são um deles.

Acho que minha última opção é usar o recurso de migração de tarefas e criar cgroups com novos limites de memória sob demanda.

    
por fabiux 03.08.2014 / 22:53