Distribuindo núcleos de CPU entre os cgroups e o mundo externo

1

É possível gerenciar o acesso aos núcleos da CPU de maneira semelhante ao limite de memória?

Em particular, preciso ser capaz de criar e destruir dinamicamente cgroups que limitarão um conjunto particular de processos a um número desejado de núcleos de CPU.

Não consigo usar conjuntos de CPU, pois isso precisa funcionar em máquinas com vários soquetes (até pequenas NUMA) e, se eu aplicasse os processos aos núcleos, rapidamente me depararia com grandes problemas de desempenho devido à fragmentação do núcleo (os processos variam de minutos a meses em tempo de execução).

A segunda complicação é que isso precisa jogar muito bem com os processos fora dos cgroups.

Como exemplo, posso ter a seguinte situação:

1 process limited to 2 cores and 4GB RAM

2 processes unlimited, but should have guaranteed access to the remainder of the machine

    
por Let_Me_Be 18.03.2015 / 17:10

1 resposta

0

Estas duas opções podem ser usadas para limitar o número de núcleos de CPU disponíveis para um cgroup:

cpu.cfs_period_us
cpu.cfs_quota_us

cfs_period_us definiu com que frequência isso precisa ser imposto cfs_quota_us define quantos us o cgroup deve receber durante cada período. Portanto, se você especificar cfs_quota_us como N vezes a quantidade de cfs_period_us , o cgroup receberá N núcleos.

    
por 24.03.2015 / 16:05