问题描述
我想一次为所有内核设置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上);
-
把这个(一行)代码(谢谢你,在上一个答案中的switch87提供)
sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
-
进入目录中的文件
/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
在终端和/或重新启动。