基础知识
cpufreq 是一个动态调整 cpu 频率的模块,系统启动时生成一个文件夹 /sys/devices/system/cpu/cpu0/cpufreq/ 里面有几个文件,其中 scaling_min_freq 代表最低频率,scaling_max_freq 代表最高频率,scaling_governor 代表 cpu 频率调整模式,用它来控制 CPU 频率。 那么我们看看 PVE 默认情况下使用的 CPU 电源策略为:performance 性能模式: # 查看支持的 CPU 电源模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# 查看当前的 CPU 电源模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
可以看到 PVE 下默认支持 conservative、ondemand、userspace、powersave、performance、schedutil 这 6 种 CPU 电源模式:
这就导致了功耗注定不会很低。 几种电源模式的解释说明: 电源模式 | 解释说明 | performance | 性能模式,将 CPU 频率固定工作在其支持的较高运行频率上,而不动态调节。 | userspace | 系统将变频策略的决策权交给了用户态应用程序,较为灵活。 | powersave | 省电模式,CPU 会固定工作在其支持的最低运行频率上。 | ondemand | 按需快速动态调整 CPU 频率,没有负载的时候就运行在低频,有负载就高频运行。 | conservative | 与 ondemand 不同,平滑地调整 CPU 频率,频率的升降是渐变式的,稍微缓和一点。 | schedutil | 负载变化回调机制,后面新引入的机制,通过触发 schedutil sugov_update 进行调频动作。 | 优化之前
下图中默认开启 3 个 VM 的情况下:
使用 lscpu 查看一下 CPU 的频率,可以看到 CPU 还是比较活跃的,一直处于较高的频率:
这就导致了功耗降不下来, 此时功耗为 306W:
省电优化
首先得安装 cpupower:
apt install linux-cpupower
下面是 cpupower 的一些常用命令:
# CPU实时频率查看
watch -n 1 cpupower monitor
# 查看当前所有CPU的信息
cpupower -c all frequency-info
# 设置所有CPU为节能模式
cpupower -c all frequency-set -g powersave
# 设置所有CPU为性能模式
cpupower -c all frequency-set -g performance
因为 PVE 下默认的 CPU 电源策略就是 performance 性能模式了,所以我们这里将其设置为保守一点的 conservative 模式:
cpupower -c all frequency-set -g conservative
此时检测频率发现所有的 CPU 频率都已经下来了:
不过我们这样操作后,重启后又变成性能模式了。不过方法总比困难多,我们可以手动将限制功耗的命令设置为服务,然后开机自启即可。时间有限,国光这里就不展开说了,大家可以自己研究看看。
|