Como limitar a utilização da CPU do Google Compute Engine a 100%

0

Estou executando trabalhos em lote em instâncias n1-highcpu-32 Ubuntu 14.04, que têm 16 núcleos físicos (32 virtualizados). Esse deve ser um caso trivial (comparado a MPI ), mas a utilização da CPU está em todo lugar, conforme relatado por top .

Alguns dos trabalhos são executados a 300% + utilização da CPU, enquanto outros são executados em apenas 10%. Portanto, o tempo para concluir o lote inteiro é 10 vezes maior do que deveria ser. Cada um dos jobs está executando exatamente o mesmo código, que não é multi-threaded.

Existe uma maneira de evitar esse comportamento? Talvez limite a utilização da CPU para 100% ou algo assim?

    
por user3335011 13.03.2016 / 16:58

1 resposta

0

Você pode executar cada processo em um contêiner Docker separado. Por padrão, --cpu-quota é definido como 0, o que fornece 100% de uma única CPU, portanto, você deve estar pronto. Se você quiser escolher o valor manualmente, use:

docker run -it --cpu-quota="..." [container] [command] [args]

Como alternativa, você pode atribuir CPUs específicas a um determinado processo do Docker por meio do --cpu-setcpus flag, por exemplo:

docker run -it --cpuset-cpus="1,3" [container] [command] [args]

Para mais detalhes, consulte os docker run docs :

CPU quota constraint

The --cpu-quota flag limits the container’s CPU usage. The default 0 value allows the container to take 100% of a CPU resource (1 CPU). The CFS (Completely Fair Scheduler) handles resource allocation for executing processes and is default Linux Scheduler used by the kernel. Set this value to 50000 to limit the container to 50% of a CPU resource. For multiple CPUs, adjust the --cpu-quota as necessary. For more information, see the CFS documentation on bandwidth limiting.

    
por 20.03.2016 / 14:36