如何一次为所有内核设置 CPU 频率缩放调节器?

hto*_*que 43 cpufreq

我想一次为所有内核设置 CPU 频率缩放调节器,而不是为每个内核单独设置。有没有办法做到这一点?

(我知道很容易回应州长的意见/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor,但我不是在寻找自定义解决方案。)

小智 26

我仍然是一个 linux noob,但你不认为 cpufrequtils 可以让你通过使用来做到这一点(它没有捆绑在 Ubuntu 操作系统中,但在存储库中)

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
Run Code Online (Sandbox Code Playgroud)
  • -r标志用于设置所有(“所有硬件相关”)内核的更改

  • -r 相关选项不适用于所有内核。我们必须使用选项 -c <number> 指定 cpu 编号,但是此脚本将一次性为所有 cpu 执行此操作: for ((i=0;i<$(nproc);i++)); 做 cpufreq-set -c $i -r -g 性能;完毕 (8认同)
  • 没错,@Sri 是对的。`cpufreq-set` 实际上缺乏最终简单但需要的功能。正如这个投票计数器清楚地表明的那样,很多人只是没有意识到它,因为它的描述只是误导了它。 (6认同)
  • 谁不经过测试就给这些 +1????这根本行不通。我发布了我能找到的最简单的工作解决方案。 (5认同)
  • 损坏:根据`cpufreq-info`,只为第一个核心设置调控器 (3认同)

hto*_*que 25

我用谷歌搜索了很多,我认为这是不可能的,所以我添加了以下单行到我的.bashrc

function setgov ()
{
    echo "$1" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
Run Code Online (Sandbox Code Playgroud)

现在我可以运行类似的东西setgov ondemand,所有内核都将切换到按需调节器。

  • 这不起作用,因为文件 scaling_governor 归 root 所有并且权限受限。并不总是建议更改权限。 (2认同)

swi*_*h87 10

更改所有内核的调控器的最短命令如下:

sudo bash -c 'for ((i=0;i<$(nproc);i++)); do cpufreq-set -c $i -g performance; done'
Run Code Online (Sandbox Code Playgroud)

您可以像提到的 htorque 一样将它添加到 .bashrc 中,您必须以 root 身份运行它sudo setgov performance

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g $1; 
     done
}
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以通过运行一次对所有核心执行此操作

sudo cpupower frequency-set --governor performance
Run Code Online (Sandbox Code Playgroud)