我想限制 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。