当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

(我知道很容易将调控器回应给/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor,但我不是在寻找自定义解决方案。)

最佳解决办法

我仍然是一个linux noob,但你不觉得cpufrequtils允许你通过使用它(它没有捆绑在Ubuntu操作系统,但在存储库中)

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

次佳解决办法

我google了很多,我认为这是不可能的,所以我将以下one-liner添加到我的.bashrc

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

现在我可以运行类似setgov ondemand的内容,所有内核都将切换到ondemand调控器。

第三种解决办法

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

sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'

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

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

第四种办法

也可以添加bash代码完成,而我们在它:

function setgovernor () {
    echo "$1" | sudo tee 
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor

第五种办法

我将此设置为坚持的方式,因为在Ubuntu 16.04或更近的Ubuntu 16.04之后,调控器默认返回到powersave大约30秒后(我在Ubuntu Mate上);

  1. 把这个(一行)代码(谢谢你,在上一个答案中的switch87提供)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. 进入目录中的文件

    /etc/rc.local
    

我的是“0号出口”之上的一条线,并且在评论的下面没有注释。

“rc.local”对于那些不知道的人,它以sudo的身份运行命令。看来,更改调控器的任何命令都需要以sudo身份运行。

它允许调控器重置为powersave并在60秒后将代码作为sudo运行,以将其更改回性能。

将”60″(在您复制的代码中)更改为任何时间(以秒为单位.60 = 60秒= 1分钟)您需要将命令和”performance”(在命令部分中)延迟到您希望它更改为的调控器。

在我的小时和数小时的搜索中,我没有找到比此更永久的解决方案。如果这是我发现的最好的解决方案,我认为在powersave上有几分钟的时间,对吧?对。

这不是最好的解决方案,但是在它切换到powersave之后它会使它有点永久性。如果你想要直接启动并跳转到某个游戏或其他东西,你将不得不等待一段时间才能将你刚刚放入的代码从powersave切换回来或降低它的时间(取决于它需要多长时间)一切都要启动所以它将切换回正确的性能)。

并且,一如既往,恢复默认(我已经看到人们的PC过热的一些问题,这就是为什么他们可能首先将它默认为powersave)只需从rc.local中删除代码并重新启动或切换回来手动使用cpu图标指示器切换器或运行;

 sudo /etc/init.d/cpufrequtils restart

在终端和/或重新启动。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7162.html,未经允许,请勿转载。