我正在使用Debian 8 amd64机器进行基准测试。在实验期间,我希望CPU以固定频率(最好是最大频率)运行。这将排除CPU时钟速度成为结果变化的来源。
经过一番阅读之后,似乎正确的做法是将CPU调节器更改为performance
,这在Linux内核文档中进行了介绍:
CPUfreq调节器“性能”将CPU静态设置为scale_min_freq和scale_max_freq边界内的最高频率。
遗憾的是,有关进一步的细节scaling_min_freq
,并scaling_max_freq
没有提供。希望不要紧,因为使用的CPU频率是间隔的最大值。
因此,我已使用cpufreq-set启用了此调控器:
$ cat / sys / devices / system / cpu / cpu * / cpufreq / scaling_governor 性能 性能 性能 性能
而且,出于良好的考虑,我还在BIOS中禁用了涡轮增压模式:
$ cat / sys / devices / system / cpu / intel_pstate / no_turbo 1个
根据性能调节器的上述说明,我希望CPU时钟速度不会波动。但是,如果我反复跑步cpufreq-info
,我会看到时钟速度在波动:
$ cpufreq-info | grep'当前CPU fr' 当前的CPU频率为4.00 GHz。 当前的CPU频率为3.99 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 $ cpufreq-info | grep'当前CPU fr' 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为3.96 GHz。 $ cpufreq-info | grep'当前CPU fr' 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为3.94 GHz。 $ cpufreq-info | grep'当前CPU fr' 当前的CPU频率为4.01 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为4.00 GHz。 当前的CPU频率为3.98 GHz。
这种波动是由于硬件,BIOS,内核或其他因素引起的吗?有没有办法设置CPU频率,使其完全不波动?