Estou usando uma máquina Debian 8 amd64 para benchmarking. Durante a experimentação, eu gostaria que a CPU operasse em uma frequência fixa (de preferência o máximo possível). Isso descartará a velocidade do clock da CPU como fonte de variação nos resultados.
Após algumas leituras, parece que a coisa certa a fazer é mudar o controlador da CPU para performance
, descrito aqui na documentação do kernel do Linux :
O "desempenho" do controlador CPUfreq define estaticamente a CPU com a frequência mais alta dentro dos limites de scaling_min_freq e scaling_max_freq.
Infelizmente, mais detalhes sobre scaling_min_freq
e scaling_max_freq
não são fornecidos. Espero que isso não importe, pois a frequência da CPU usada é o valor máximo do intervalo.
Então, eu habilitei esse governador usando o cpufreq-set:
$ cat / sys / devices / system / cpu / cpu * / cpufreq / scaling_governor desempenho desempenho desempenho desempenho
E, para uma boa medida, também desabilitei o modo turbo boost na bios:
$ cat / sys / devices / system / cpu / intel_pstate / no_turbo 1
Com base na descrição acima do regulador de desempenho, eu não esperaria flutuação na velocidade do clock da CPU. No entanto, se eu correr repetidamente cpufreq-info
, vejo a velocidade do relógio flutuando:
$ cpufreq-info | grep 'CPU atual fr' A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 3,99 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. $ cpufreq-info | grep 'CPU atual fr' A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 3,96 GHz. $ cpufreq-info | grep 'CPU atual fr' A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 3,94 GHz. $ cpufreq-info | grep 'CPU atual fr' A frequência atual da CPU é de 4,01 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 4,00 GHz. A frequência atual da CPU é de 3,98 GHz.
Essa flutuação é devida a hardware, BIOS, kernel ou algum outro fator? Existe uma maneira de definir a frequência da CPU para que ela não flutue?
fonte
Respostas:
Depois de algumas experiências, acho que posso responder minha própria pergunta.
Conforme mencionado neste tópico , em certos hardwares da Intel, existem duas maneiras de gerenciar a frequência da CPU:
Quando o pstate é usado, o BIOS tem alguma influência sobre a velocidade do relógio, e parece que essa é a fonte das flutuações.
Você pode forçar o pstate desligando
intel_pstate=disable
os argumentos do kernel (edite/etc/default/grub
e adicione o argumento emGRUB_CMDLINE_LINUX_DEFAULT
. Finalmente, executesudo update-grub
).Depois de fazer isso, a saída de
cpufreq-info
parece muito diferente, e também noto que um conjunto diferente de governadores de CPU fica disponível (por exemplo,ondemand
agora está disponível).Mais importante ainda, depois de definir o governador como
performance
, a velocidade do relógio agora é fixa (no meu caso, para 4,00 GHz).Você pode verificar
/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
se pstate ou ACPI está sendo usado para dimensionar a CPU. Esses arquivos podem assumir os valoresacpi-cpufreq
ouintel_pstate
.fonte
[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
fonte
intel_pstate=disable
para o kernel? Estou invocando o "modo legado" quando faço isso?Intel Architectures Software Developer's Manual.
2) sim. PS. Você também pode querer jogar comx86_energy_perf_policy
Eu li esse tópico porque estava procurando definir uma frequência fixa para minha CPU, já que o ventilador não funciona mais (é claro que essas coisas acontecem quando você está no exterior em uma ilha perdida para lazer de mergulho!), então meu ponto era mais preciso a frequência mais baixa (800Mhz) .. finalmente consegui fazer alterações no scaling_max_freq em / sys / devices / system / cpu / cpu * / cpufreq / para cada cpu da configuração e agora está bom a frequência deve passar de 800Mhz para .... 800Mhz. Ele funciona e resolveu o problema de superaquecimento que tive experiência .. (a frequência agora é de 799Mhz e não se move, o que permitiu que a CPU permanecesse em torno de 50 ° C!)
PS: também desativo o modo turbo (3,1Ghz)
fonte