Comportamento do regulador de frequência powersave quando a cota da CPU é definida

Comportamento do regulador de frequência powersave quando a cota da CPU é definida

Estou tentando entender o efeito da configuração de cpu.cpu_quota_us no subsistema cpu cgroup no desempenho do aplicativo. Essencialmente, reduzindo a cota de CPU, mas aumentando o número de CPUs de forma que as CPUs "efetivas" ainda sejam as mesmas, isso impactaria o aplicativo? Por exemplo, a configuração de 4 CPUs com cota de 100% é igual à configuração de 8 CPUs com cota de 50%?

Eu escrevi um programa simples com uso intensivo de CPU em https://github.com/ashu-mehra/cpu-quota-teste executei-o na seguinte configuração do cgroup:

1) No cgroup que possui 4 cpus e sem limite de cota

2) No cgroup que possui 8 cpus e 50% de cota

Ao executar este programa para 32 threads notei a seguinte diferença no rendimento relatado pelo programa para as duas configurações:

4CPU@100 8CPU@50
176236 87252,5

O desempenho de 8CPU@50 é menos da metade do que obtenho com 4CPU@100.

Ao depurar ainda mais, percebi que meu sistema está configurado para usar o regulador de frequência da CPU "powersave". Neste modo, a frequência da CPU dos núcleos quando o programa está sendo executado em 4CPU@100 atingiu o máximo, mas para 8CPU@50 a frequência da CPU dos núcleos foi muito menor.

Quando mudei o regulador de frequência da CPU para "desempenho" (que é o único outro regulador de frequência disponível), o desempenho com 8CPU@50 aumenta consideravelmente à medida que os núcleos começam a funcionar na frequência máxima:

4CPU@100 8CPU@50
175804 163831

Os detalhes do meu sistema são:

Ubuntu 16.04.2LTS

Kernel 4.4.0-103-genérico

Tenho as seguintes perguntas sobre os governadores CPUFreq:

1) Este linkhttps://www.kernel.org/doc/Documentation/cpu-freq/governors.txtdiz: "O governador CPUfreq "powersave" define a CPU estaticamente para a frequência mais baixa dentro dos limites de scaling_min_freq e scaling_max_freq." No entanto, notei que a frequência muda conforme a carga aumenta. Como funciona o "powersave"?

2) Wy é a frequência da CPU que não aumenta para o máximo quando o regulador de frequência da CPU "powersave" está em uso e a cota da CPU está definida. A configuração da cota de CPU está causando o mau comportamento do "powersave"?

Responder1

O documento mencionado na sua pergunta 1 é para o driver de escalonamento de frequência da CPU acpi-cpufreq. Acho, mas não tenho certeza, que você está usando o driver de escalonamento de frequência da CPU intel_pstate. A maneira de saber com certeza é perguntar ao seu sistema:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate

O governador powerave no driver intel_pstate se comporta de maneira semelhante ao governador ondemand no driver acpi-cpufreq. Os algoritmos de controle estão mudando, mas se você tiver um kernel recente o suficiente, deverá ser baseado em carga.

A frequência da CPU não aumenta muito, ou mesmo nada, quando você limita o uso a 50% porque o algoritmo baseado em carga não é apresentado com carga suficiente para garantir o aumento da frequência da CPU.

informação relacionada