CPU 频率控制

CPU 频率控制

我有一个 kubuntu 14.04,带有最新的 HWE 内核 (3.16.0-31-generic) 和一个 Xeon 1246v3 处理器 (基本上是支持 ecc 的 i7 4770)。该处理器的基本频率为 3.5 ghz,最大睿频频率为 3.9 ghz。

我有以下问题:

1) 我默认启用了英特尔 p-states,这很好,但您知道 p-states 只能获得两个调节器:性能和省电。 如何手动设置允许的最大 CPU 频率

2) 如上所述,CPU 应该能够在只有一个核心满载的情况下以 3.9 运行。在所有核心满载的情况下,它不应该能够超过 3.5 ghz。但如果我发出命令watch -n 0 "cat /proc/cpuinfo | grep -i mhz",我会看到所有四个核心都始终处于 3.9 ghz,这应该是不可能的。这是怎么回事?

谢谢!

答案1

/sys/devices/system/cpu/cpu**N**/cpufreq/scaling_min_freq您可以通过设置和来设置最大和最小频率/sys/devices/system/cpu/cpu**N**/cpufreq/scaling_max_freq

本文档中描述了详细信息:https://software.intel.com/sites/default/files/comment/1716807/how-to-change-frequency-on-linux-pub.txt

编辑:您可以使用包cpufreq-set中的以下方法达到相同的效果:cpufrequtilshttps://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq-set.html

答案2

问题1:如何手动设置允许的最大 CPU 频率?

例如,要将最大频率设置为 3.5 GHz(禁用 turbo)或 3.9 GHz(启用 turbo)的 60%:

echo "60" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct

问题 2:我发现所有四个核心都稳定在 3.9 ghz,这应该是不可能的。这是怎么回事?

它们并非同时处于活动状态。只有 1 个 PLL,并且所有 CPU 始终处于相同频率。如果您看到 3.9GHz,则在采样时只有 1 个 CPU 处于 C0 状态。

答案3

如果你的内核加载了正确的模块,上面提到的一切都会起作用:

# CPU frequency control Driver
modprobe acpi_cpufreq
modprobe mperf
# CPU Frequency scaling modules
modprobe cpufreq_conservative
modprobe cpufreq_ondemand
modprobe cpufreq_performance
modprobe cpufreq_powersave
modprobe cpufreq_stats
modprobe cpufreq_userspace
modprobe freq_table

相关内容