我可以限制 CPU 频率的上限吗?

我可以限制 CPU 频率的上限吗?
  • 我怎样才能通过一个值来限制我的 CPU 频率的上限?

  • cpufreq建议将频率固定为一个常数值,而不是让其在一定范围内变化。

  • 它还提供保守、按需、省电和性能。我不知道它们是什么意思。但它们也不限制频率。这四个设置实际上是什么意思?换句话说,它们的策略是什么?

答案1

问题 2:此答案针对 acpi-cpufreq CPU 频率调节驱动程序:

检查您正在使用的 CPU 频率驱动程序的方法是:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver

保守模式具有较慢的负载与 CPU 频率响应曲线,这意味着在 CPU 频率上升之前,CPU 上需要承受稍多的负载。

按需模式具有更快的负载与 CPU 频率响应曲线,这意味着在 CPU 频率上升之前,CPU 上的负载会稍微少一些。

该驱动程序使用滞后现象,因此负载随 CPU 频率增加和减少的曲线并不相同。

省电模式将请求的 p 状态锁定为处理器的最低值。结果是 CPU 始终处于最低时钟频率。

性能模式将目标 pstate 锁定在处理器的最高值。但是,请注意,有些处理器可以在无负载的情况下自行退出。为简单起见,只需将其视为 CPU 始终处于最高频率即可。

问题1:是的,可以限制上限频率。

首先获取可用频率的列表(以我的计算机为例):

doug@s15:~/temp$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
3401000 3400000 3300000 3100000 3000000 2900000 2800000 2600000 2500000 2400000 2200000 2100000 2000000 1900000 1700000 1600000

然后决定你想要的最大频率,注意它必须来自列表。然后设置它:

echo 2600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

并对所有 CPU 重复此操作。

可能更喜欢使用脚本版本,以 sudo 身份运行:

#! /bin/bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq; do echo "2900000" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq

答案2

在某些情况下可能会有帮助的临时解决方案;

for i in {0..3}; do sudo cpufreq-set -c ${i} -g powersave --min 500Mhz --max 2600Mhz; done

请随意调整 CPU 核心的最大数量(此处 = 3)以适合您的情况。

或者更好的是,带有-r标志:

sudo cpufreq-set -r -g performance --min 500Mhz --max 2600Mhz

来自男人:

-r --related
    modify all hardware-related CPUs at the same time

相关内容