Linux 省电调节器未按预期控制 CPU 频率(许多内核仍为 3GHz)

Linux 省电调节器未按预期控制 CPU 频率(许多内核仍为 3GHz)

我想限制 Thinkpad P1 上的 CPU 活动以延长电池寿命并防止使用风扇。我的 Linux 内核是5.15.0-43-generic,发行版是 Ubuntu 22.04 (Jammy)。处理器是Intel(R) Xeon(R) CPU E3-1505M v6(4 核 × 2 线程/核 = 8 线程)。机器正在使用intel_pstate缩放驱动程序。

我预计这些命令会将所有核心限制为 800 MHz:

echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo 800000 | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq
echo 800000 | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq

相反,cat /proc/cpuinfo | grep "MHz"通常显示 3 至 6 个 3 GHz 核心,例如

$ cat /proc/cpuinfo | grep "MHz
cpu MHz     : 800.004
cpu MHz     : 800.006
cpu MHz     : 3000.000
cpu MHz     : 3000.000
cpu MHz     : 800.006
cpu MHz     : 800.006
cpu MHz     : 3000.000
cpu MHz     : 800.006

为什么我没有看到所有内核都像预期的那样徘徊在 800 Mhz 左右?另外,四个处理器内核中每个内核应该有两个线程。为什么我看到奇数个内核(实际上是线程)以 3 GHz 运行?

答案1

这是一个有争议的 bug 功能。在这种情况下检查 CPU 频率的正确命令是

cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq

这将如预期显示 800 MHz。

相关内容