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?