如何在使用intel_pstate时设置特定的cpu频率



当我使用intel_pstate时,我发现我无法使用以下命令更改cpu频率:

sudo cpupower frequency-set -f SomeValue

我知道原因是intel_pstate的调速器(节能和性能(不支持手动更改频率。此外,我还尝试将频率值直接写入文件/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq。但上面写着我正在更改一个只读文件。

那么,在使用intel_pstate驱动器时,有没有办法改变内核的频率?

在其中一种活动模式下运行的intel_pstate驱动程序不允许您直接设置特定频率(cpupower frequency-set -f(,但您可以更改驱动程序允许设置的最大和最小频率,如下所示:

使用cpupower,您可以使用:

cpupower frequency-set -u 3000mhz

…设置所有核心的最大频率。要设置最小频率,可以使用

cpupower frequency-set -d 3000mhz

这些命令需要root权限(使用sudo执行(。

在该示例中,将所需频率3000MHz应用于所有核心。实际频率将是最接近支持的频率,该频率大于(如果可能的话(期望频率。频率的实际有效范围和当前核心频率可以由cpupower frequency-info确定。

一些处理器支持单核频域。您可以使用-c选项指定要更改其频率范围的特定核心或一组核心。

是的。在设置频率之前,请先将intel_pstate设置为passive。这允许将调控器设置为用户空间。然后将调控器设置为用户空间。我的脚本:

#!/bin/bash  
# Rig4TopSpeed.sh
UPPER=4200MHz
LOWER=4200MHz
echo passive | sudo tee /sys/devices/system/cpu/intel_pstate/status
sudo cpupower idle-set -E
sudo cpupower frequency-set -g userspace
sudo cpupower frequency-set -u $UPPER
sudo cpupower frequency-set -d $UPPER
sudo cpupower frequency-set -f $UPPER
sudo cpupower frequency-info
echo
sudo turbostat --num_iterations 1  --interval 2  2>/dev/shm/turbostat.stderr 
echo 
grep  -i "cpufreq" /dev/shm/turbostat.stderr
echo 
grep -i "frequency" /dev/shm/turbostat.stderr
echo
grep -i "max turbo" /dev/shm/turbostat.stderr
echo
inxi -C|cat
echo
grep "cpu MHz" /proc/cpuinfo 
sleep 3

底部的睡眠让我有时间在从GUI菜单运行时控制台窗口自行关闭之前查看结果。

请注意,如果您的CPU有HWP并且它处于活动状态,则CPU会将您的设置作为建议。空闲和热CPU将具有其他时钟速率。

建议:永远不要将固定值设置为高于涡轮增压器报告的CPU在所有内核处于活动状态时可以执行的值。

我成功地通过以下方式设置了最大和最小频率百分比:

echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/min_perf_pct
echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct

最新更新