我怎样才能通过一个值来限制我的 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