Dell服务器根据GPU温度调整风扇转速
前言
dell服务器自动风扇是根据CPU温度来调速的,我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行,我看了下也没有基于显卡温度调速的脚本,于是我就自己写了一个
基于ipmi工具 乌班图等linux先安装ipmi
apt install -y ipmitool
然后到idrac远程管理中的网络选项中打开 IPMI 设置
基础
#关闭自动调速
ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x01 0x00
ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x23
#80%转速
ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x50
最后的0x50是80的十六进制,也就是设置转速为80%
请注意要手动调速请先关闭自动调速,不然不会生效
自动脚本
下面是我写的自动脚本,写的比较差凑合用 (修改ipmi的参数为自己服务器的)
#!/bin/bash
# GPU个数
gpu_count=2
current_time=$(date "+%Y-%m-%d %H:%M")
users="chen"
max_temperature=0 # 用于记录最高的GPU温度
max_temperature_gpu=0 # 用于记录最高温度的GPU编号
# 遍历每个GPU,获取温度并记录最高温度的GPU编号和温度值
for ((i=0; i> /home/$users/ipmi.log
elif [ $max_temperature -gt 72 ]; then
# 设置风扇速度为80%
ipmitool -I lanplus -U root -P xxx -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x50 && echo "$current_time - GPU $max_temperature_gpu 温度$max_temperature 过高 风扇转速已调整为80%" >> /home/$users/ipmi.log
else
# 设置风扇速度为50%
ipmitool -I lanplus -U root -P xxx -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x32 && echo "$current_time - GPU $max_temperature_gpu 温度$max_temperature过高 风扇转速已调整为50%" >> /home/$users/ipmi.log
fi
crontab 设置10秒运行一次
* * * * * sleep 10; /home/chen/ipmi-gpu.sh