当前位置: 首页 > news >正文

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<gpu_count; i++))
do# 获取第i个GPU的温度temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits | sed -n "${i+1}p")if [ $temperature -gt $max_temperature ]; thenmax_temperature=$temperaturemax_temperature_gpu=$ifi
done
# 根据最高温度的GPU进行对应的调速操作
if [ $max_temperature -gt 85 ]; then# 设置风扇速度为100%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
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

相关文章:

  • Linux命令详解(1)
  • JAVA Mongodb 深入学习(一)BulkOperations 批量操作
  • k8s学习--负载均衡器matelLB的详细解释与安装
  • #07【面试问题整理】嵌入式软件工程师
  • c#快速获取超大文件夹文件名
  • LVS – NAT 模式集群构建
  • 重学java 64.IO流 字符流
  • Java SE LTS版本商用收费,有那些开源的替代方案?
  • PDF批量加水印 与 去除水印实践
  • [CAN] 创建解析CAN报文DBC文件教程
  • 大模型算法岗常见面试题100道(含答案)
  • 哲学家进餐问题
  • SSL/TLS和HTTPS
  • mysql的双机热备
  • Linux “ 软件管理 “
  • [译] 怎样写一个基础的编译器
  • 【Linux系统编程】快速查找errno错误码信息
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Fastjson的基本使用方法大全
  • flask接收请求并推入栈
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JS题目及答案整理
  • Leetcode 27 Remove Element
  • maya建模与骨骼动画快速实现人工鱼
  • MobX
  • python_bomb----数据类型总结
  • spark本地环境的搭建到运行第一个spark程序
  • 基于web的全景—— Pannellum小试
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 首页查询功能的一次实现过程
  • 数组的操作
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小程序开发之路(一)
  • 学习笔记:对象,原型和继承(1)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 正则表达式-基础知识Review
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (java)关于Thread的挂起和恢复
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十六)Flask之蓝图
  • (十六)一篇文章学会Java的常用API
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)shell调试方法
  • .NET 5种线程安全集合
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET NPOI导出Excel详解
  • .net 中viewstate的原理和使用