Proxmox VE 调节cpu频率
一般我们可以使用linux-power来调节频率,实现节能或者提高性能的目的。
安装软件包
apt update && apt install linux-cpupower powertop -y
快速设置策略
# 全核高性能
cpupower frequency-set -g performance
# 全核省电
cpupower frequency-set -g powersave
# 0-16 开启高性能
cpupower -c 0-15 frequency-set -g performance
performance核powersave都是调度策略,一共有下面几个
- conservative
- ondemand
- userspace
- powersave
- performance
- schedutil
这几个,可以参考这个文章
https://blog.csdn.net/lixiaojie1012/article/details/123742376
不过都是废话,总结来说,就powersave 和performance最好用。
内核驱动
一般在intel平台,系统使用intel_cpufreq作为驱动,amd平台使用amd-cpufreq。
对于intel来说一切正常,但是在pve8,amd使用acpi-cpufreq则会有点问题。下面是7d12默认情况下的信息。
root@cnode6:~# cpupower frequency-info
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 1000 MHz - 1.96 GHz
available frequency steps: 1.10 GHz, 1000 MHz
available cpufreq governors: conservative ondemand userspace powersave performance schedutil
current policy: frequency should be within 1000 MHz and 1.10 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: 1.10 GHz (asserted by call to hardware)
boost state support:
Supported: yes
Active: yes
Boost States: 0
Total States: 3
Pstate-P0: 1100MHz
Pstate-P1: 1000MHz
Pstate-P2: 1000MHz
我们可以看到硬件限制只有2G最高,7d12可是可以全核2.9的存在。
针对amd来说我们只需要在linux启动命令中添加amd_pstate=passive即可,使用amd_pstate。
白名单模式手动调频
但这2者都是绝对的,我们需要手动进行修改。在pve7.3中 引入了核心绑定,意思是可以将虚拟机的运行线程指定到某些核心上。
那么我们就可以将重要的虚拟机运行的核心 设置成performance,其他不用的核心设置成powersave。
这种就相当于是白名单模式,
将全核设置成省电。
cpupower frequency-set -g powersave
对单个虚拟机进行核心绑定,核心绑定教程参考https://foxi.buduanwang.vip/virtualization/pve/2796.html/
#假如虚拟机id为133
cpupin=`qm config 133|grep affin|awk '{print $2}'`
cpupower -c $cpupin frequency-set -g performance
当虚拟关机之后,可以设置成powersave。
自动化
那么如何自动化呢?我们可以利用pve的hookscripts
使用下面命令创建一个hookscript,当开机时,设置成高性能,当关机时,设置省电。
cat > /var/lib/vz/snippets/cpupower.sh << "EOF"
#!/bin/bash
vmid=$1
status=$2
cpupin=`qm config $vmid|grep affin|awk '{print $2}'`
echo $status
if [ "$status" == "pre-start" ];then
cpupower -c $cpupin frequency-set -g performance
fi
if [ "$status" == "post-stop" ];then
cpupower -c $cpupin frequency-set -g powersave
fi
EOF
然后给与脚本执行权限,chmod +x /var/lib/vz/snippets/cpupower.sh
随后给虚拟机绑定钩子脚本,请把下面的133改成你的虚拟机id。
qm set 133 --hookscript local:snippets/cpupower.sh
这样有一个弊端,就是虚拟机如果有绑核重复在不同时间关机,会造成影响
作者:佛西
链接:https://foxi.buduanwang.vip/virtualization/pve/bestpractice/3031.html/
文章版权归作者所有,未经允许请勿转载
如需获得支持,请点击网页右上角
hohoxnes
CC2024
mildnes
mildnes
佛西@mildnes
FlyingDtchmn
佛西@FlyingDtchmn