Ubuntu 的 CPU 热插拔

Ubuntu 的 CPU 热插拔

通过做

for file in /sys/devices/system/cpu/cpu*/online; do echo 0 > $file; done

我们将 CPU 设置为离线。是否有一个脚本可以执行热插拔工作,检测 CPU 使用率,并将高于 % 的 CPU 设置为在线,低于 % 的 CPU 使用率再次设置为离线?如果尚未制作任何脚本,是否有办法仅检测当前 CPU 使用率,并且如果使用率高于 ...% 则“执行”某些操作?

~编辑我的问题:

我目前在这里:

#!/bin/bash

while true
do
 if (echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')] > 5) then
 for file in /sys/devices/system/cpu/cpu*/online; do echo 1 > $file; done
 fi
 if (echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')] < 5) then
 for file in /sys/devices/system/cpu/cpu*/online; do echo 0 > $file; done
 fi
 sleep 3
done

哈哈哈它应该可以工作....

你能纠正我吗?

答案1

最后。这是 ubuntu 的第一个 CPU 热插拔。虽然不多,但对于耗电量大的旧多核处理器来说,这是我目前能做的最好的事情了。

从下面的链接下载脚本,使其可执行,然后使用终端将其复制粘贴到 /etc/init.d 中。

sudo cp /<path to the script>/hotplug.sh /etc/init.d

然后更新 rc.d 以在启动时执行它

sudo update-rc.d hotplug.sh defaults

完成。现在您的笔记本电脑消耗的电量比以前少很多。

没有必要进一步改进脚本并为每个 CPU 核心添加检查,因为这会增加负载。较新的 CPU 具有 C 状态来执行此操作,这对负载没有太大影响,但在这种情况下,如果我们制作一个巨大的脚本并让它一直运行而不休息,它肯定会增加负载,我们将失去稳定性和流畅性。

下载链接

相关内容