usando cpu.cfs_quota_us e cpu.cfs_period_us para limitar o uso da CPU

0

Existem 32 núcleos em um sistema (2 CPUs cada 16 núcleos) e eu quero  limite um usuário a usar apenas 4 núcleos (100% de uso para esses 4 núcleos). Lá  são dois parâmetros do kernel para isso de acordo com os manuais:   cpu.cfs_quota_us e cpu.cfs_period_us

Um exemplo no documento do kernel.org diz:

   With 500ms period and 1000ms quota, the group
   can get 2 CPUs worth of runtime every 500ms.
   # echo 1000000 > cpu.cfs_quota_us /* quota = 1000ms */
   # echo 500000 > cpu.cfs_period_us /* period = 500ms */

Eu quero saber como essas ms são determinadas? No meu caso, acho que a cota é 32000000 e o período é de 4000000. Estou certo? O conteúdo de etc/cgconfig.conf é:

group ansys {
  cpu {
    cpu.cfs_quota_us = 32000000;
    cpu.cfs_period_us = 4000000;
  }
  memory {
    memory.limit_in_bytes = 8000m;
  }
}

Mas isso não funciona! e recebo um erro quando executo /etc.init.d.cgconfig start , recebo este erro:

Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d
[FAILED]Starting cgconfig service: /sbin/cgconfigparser; error loading
/etc/cgconfig.conf: Failed to remove a non-empty group
    
por mahmood 22.03.2016 / 12:08

1 resposta

0

Dê uma olhada no parâmetro cpuset cgroup / container. Ele permite que você coloque contêineres em núcleos de CPU específicos . No seu caso, você pode especificar apenas um único contêiner para os núcleos 0-3 e não permitir que nenhum outro contêiner seja executado no mesmo núcleo, permitindo 4 núcleos com 100% de utilização por contêiner.

Além disso, o cpuset é um mecanismo de distribuição mais eficaz quando comparado ao cpu (que usa compartilhamentos / cota).

    
por 06.09.2016 / 12:48