我无法使用 tlp、cpupower 或其他工具来控制 CPU 频率。内核版本是 5.3.0-19-generic。
我尝试使用 intel_pstate active 或使用“intel_pstate=disabled”作为内核启动参数关闭 intel pstate,然后使 acpi-cpufreq 成为驱动程序。无论哪种方式都无法控制 CPU 频率。
注意:我必须关闭 BIOS 中的“安全启动”才能使用 x86_energy_perf_policy 更改性能策略。但不管怎样,它还是不起作用。
行为如下:
(1) 使用 intel_pstate 驱动程序和策略“performance”,CPU 频率徘徊在最高 1.3GHz(大约 1.25GHz)附近。使用策略“powersave”,CPU 频率徘徊在 1.1GHz 附近,或者根本没有变化。尝试使用 cpupower 或 tlp 设置进行任何设置均无济于事。
(2)使用 acpi-cpufreq 驱动程序时,任何工具(单独使用)的设置都无关紧要。
我每次只使用一个工具,同时从系统中删除其他工具,以确保这些工具不会发生冲突。
系统的作用:CPU 频率会进行调整,就好像它们始终由“按需”调节器控制一样。但无论如何,我无法设置性能策略或调节器或其他设置来将 CPU 保持在任何频率以下 - 它们会随时上升。
我已经在 Google 上搜索了两周,查看了与我的问题相关的所有内容,并尝试了许多建议,但都不起作用。使用所有工具(tlp、cpupower、cpufreqd、cpurequtils 等),CPU 将默认由“ondemand”调控器控制。(系统调用脚本 /lib/systemd/set-cpufreq 来设置它。)当然,我可以更改它,但这似乎无关紧要。
任何帮助是极大的赞赏。
答案1
找到解决方案。首先,不是禁用 intel_pstate。其次,根据需要设置 tlp 默认值。
接下来,暂时关闭 BIOS 中的“安全启动”。这是以下命令生效的必要条件。
问题(我有 8 个 CPU,因此是 0-7)
$ x86_energy_perf_policy -c 0-7 --hwp-max 1
这会将某种硬件最大频率参数(?固件)设置为最低级别,以便最大 CPU 频率能由 cpupower 更改以匹配最低 CPU 频率。(如果尚未设置,--hwp-min 1 将设置最小频率参数。但您不需要这样做。)
您现在可以在 BIOS 中再次打开“安全启动”。
然后发出
$ cpupower -c 所有频率设置 -u 800Mhz -g powersave
以你喜欢的任何速度运行,它都应该能正常工作。到目前为止,一切都很顺利。挂起/唤醒不会干扰 CPU 频率设置。tlp 中的 AC 和 BATT 设置得到了应有的尊重。
注意:当系统空闲时,我所能达到的最低功耗约为 3.5 瓦。如果您能将 7390 的功耗降低,请发帖!
答案2
cpuf - 用于设置 CPU 最小/最大频率的简单 Bash GUI
你可以使用这个使用 GUI 还是简单的 Bash 脚本来限制 CPU?覆盖频率:
示范
在这个演示中,cpuf
窗口在左侧,conky
系统信息在右侧。演示的进展如下:
- YouTube 视频正在播放时演示已开始
- 默认 CPU 最小/最大频率为
800
/3500
- 将 CPU 最小值/最大值覆盖为
800
/800
并且 CPU 使用率跳升至 20% - 将 CPU 最小值/最大值覆盖为
3500
/3500
并且 CPU 使用率下降到 10% - 演示循环并重新开始