ToB企服应用市场:ToB评测及商务社交产业平台

标题: Dell服务器根据GPU温度调整风扇转速 [打印本页]

作者: 熊熊出没    时间: 2024-10-14 20:22
标题: Dell服务器根据GPU温度调整风扇转速
前言

dell服务器自动风扇是根据CPU温度来调速的,我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行,我看了下也没有基于显卡温度调速的脚本,于是我就本身写了一个
先看看我显卡温度的范围

  1. chen@chen:~$ nvidia-smi -q -i 0,1 -d TEMPERATURE
  2. ==============NVSMI LOG==============
  3. Timestamp                                 : Sun Jun 16 11:12:04 2024
  4. Driver Version                            : 470.82.01
  5. CUDA Version                              : 11.4
  6. Attached GPUs                             : 2
  7. GPU 00000000:01:00.0
  8.     Temperature
  9.         GPU Current Temp                  : 57 C
  10.         GPU Shutdown Temp                 : 93 C
  11.         GPU Slowdown Temp                 : 88 C
  12.         GPU Max Operating Temp            : N/A
  13.         GPU Target Temperature            : N/A
  14.         Memory Current Temp               : N/A
  15.         Memory Max Operating Temp         : N/A
  16. GPU 00000000:02:00.0
  17.     Temperature
  18.         GPU Current Temp                  : 44 C
  19.         GPU Shutdown Temp                 : 93 C
  20.         GPU Slowdown Temp                 : 88 C
  21.         GPU Max Operating Temp            : N/A
  22.         GPU Target Temperature            : N/A
  23.         Memory Current Temp               : N/A
  24.         Memory Max Operating Temp         : N/A
复制代码
因为我是双核心的显卡,所以我指定了0和1的核心

从输出中,“GPU Shutdown Temp”指的是GPU的自动关机温度阈值。当GPU温度到达或超过这个阈值时,体系会自动将GPU关机以防止过热损坏硬件。GPU的自动关机温度阈值是93摄氏度
基于ipmi工具 乌班图等linux先安装ipmi

  1. apt install -y ipmitool
复制代码
然后到idrac长途管理中的网络选项中打开 IPMI 设置

基础 

  1. #关闭自动调速
  2. ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x01 0x00
  3. ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x23
  4. #80%转速
  5. ipmitool -I lanplus -U root -P XXX -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x50
复制代码
最后的0x50是80的十六进制,也就是设置转速为80%
请留意要手动调速请先关闭自动调速,不然不会生效

自动脚本

下面是我写的自动脚本,写的比较差凑合用 (修改ipmi的参数为本身服务器的)
  1. #!/bin/bash
  2. # GPU个数
  3. gpu_count=2
  4. current_time=$(date "+%Y-%m-%d %H:%M")
  5. users="chen"
  6. max_temperature=0  # 用于记录最高的GPU温度
  7. max_temperature_gpu=0  # 用于记录最高温度的GPU编号
  8. # 遍历每个GPU,获取温度并记录最高温度的GPU编号和温度值
  9. for ((i=0; i<gpu_count; i++))
  10. do
  11.     # 获取第i个GPU的温度
  12.     temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits | sed -n "${i+1}p")
  13.     if [ $temperature -gt $max_temperature ]; then
  14.         max_temperature=$temperature
  15.         max_temperature_gpu=$i
  16.     fi
  17. done
  18. # 根据最高温度的GPU进行对应的调速操作
  19. if [ $max_temperature -gt 85 ]; then
  20.     # 设置风扇速度为100%
  21.     ipmitool -I lanplus -U root -P xxx -H 192.168.3.30 raw 0x30 0x30 0x02 0xff 0x64 && echo "$current_time - GPU $max_temperature_gpu 温度$max_temperature 过高 风扇转速已调整为100%" >> /home/$users/ipmi.log
  22. elif [ $max_temperature -gt 72 ]; then
  23.     # 设置风扇速度为80%
  24.     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
  25. else
  26.     # 设置风扇速度为50%
  27.     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
  28. fi
复制代码
crontab 设置10秒运行一次
  1. * * * * * sleep 10; /home/chen/ipmi-gpu.sh
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4