我几乎尝试了所有解决方案来调整 CPU 频率,但都没有成功。我有 Intel Core i5-3210m 2.5Ghz-3.1Ghz。我想永久将其设置为 1.6Ghz,不使用睿频加速来改善电池续航时间。请根据 intel_pstate 驱动程序进行设置。
答案1
要使用 intel_pstate 驱动程序将 CPU 上限频率限制为 52%,请执行以下操作:
echo "52" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
注 1:在计算 52% 时,我假设您已启用 turbo,最大 pstate 为 31。因此 1.6 / 3.1 = 52%。如果您已禁用 turbo,则该数字将为 64%。无需专门禁用 turbo,因为有了这个限制,它无论如何都不会进入 turbo 范围。
注 2:根据您的应用程序和处理器,限制 CPU 频率可能不会延长电池寿命。在某些情况下,通过更高的 CPU 频率更快地完成任务,从而允许某些 CPU 更快、更长时间地进入深度睡眠(最高 C 状态),可以降低整体功耗。
注意 3:此解决方案不是永久性的,重新启动后设置将丢失。我建议您尝试一段时间,然后报告,然后我们可以考虑如何使其永久化。还有其他更高级别的工具可用于此目的,但我从未使用过它们。其他人可能会提供涉及更高级别工具的另一个答案。
一个例子(不同的处理器,不同的数字)。CPU 7 处于 100% 负载下:
设置频率上限之前:
$ grep MHz /proc/cpuinfo
cpu MHz : 3697.234
cpu MHz : 3655.796
cpu MHz : 3699.890
cpu MHz : 3742.257
cpu MHz : 3613.562
cpu MHz : 3670.273
cpu MHz : 3628.968
cpu MHz : 3799.898
现在,限制上限频率并检查:
$ echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
50
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
50
$ grep MHz /proc/cpuinfo
cpu MHz : 1899.882
cpu MHz : 1900.015
cpu MHz : 1899.882
cpu MHz : 1893.906
cpu MHz : 1899.351
cpu MHz : 1900.015
cpu MHz : 1899.750
cpu MHz : 1899.882
编辑:无论您的现有内核是什么,请留意 intel_pstate 驱动程序更改的反向移植。我知道反向移植正在进行,但我不知道发布时间表。
为了使更改始终在启动期间发生,首先将其制作成脚本,例如:
$ cat set_cpu_max_perf_pct
#! /bin/bash
echo 52 >/sys/devices/system/cpu/intel_pstate/max_perf_pct
echo -n "intel_pstate maximum performance request is (percent): "
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
测试脚本,以 sudo 身份运行。然后参考许多其他问题和答案,了解如何在启动期间运行该脚本。例如,这个。
或者,你可以安装以下工具传输层协议配置文件中有这些设置,其中包括电池或交流电和自动开关的参数。