Eu tenho 3 processos em uma máquina de núcleo único. Cada processo é exatamente o mesmo e queima a CPU o mais rápido possível (loop apertado). Dois deles ( A
e B
) são lançados com o cgexec em grupos separados com compartilhamentos definidos para 512 e 512. O terceiro ( C
) é iniciado regularmente, não com o cgexec.
Uma vez que todos estejam em operação, C
obtém 66% da CPU A
e B
dividem 33%. Se eu matar C
em seguida, A
e B
obter 50% de cada um (como esperado).
Por que C
obtém 66%? Eu teria esperado 33% cada neste cenário, ou talvez 50% (C), 25% (A) e 25% (B). 66% C
não dão certo, não importa como eu faça as contas.
Em geral, quero entender como os processos iniciados sem cgexec
interagem com os processos iniciados cgexec
quando se trata de compartilhamento de recursos (CPU em particular, mas uma resposta mais geral seria apreciada se não fosse muito complexo).
top
e acredito que eles foram iniciados de maneira bastante simples a partir de um prompt de comando: cgexec -g cpu:foo myprogram
e ./myprogram
. Já faz um tempo, então não me lembro com certeza.
cpu.shares
é uma opção de configuração muito peculiar; Eu recomendo dividir as coisas por CPUs, se possível usando em seu cpuset.cpus
lugar.