Linux 服务器 gpu 风扇控制,无桌面

打印 上一主题 下一主题

主题 1730|帖子 1730|积分 5190

linux 服务器因为没有安装桌面,gpu 风扇转速控制一直失败,搞了几天终于成功了,记载一下。
  1、利用 nvidia-settings 需要开启一个 X server 才能利用

  1. #开启一个X server
  2. X :1 &\
  3. # 要关闭的话,用ps查找id, 手动kill
  4. ps -fC Xorg
  5. sudo kill pid
复制代码
2、 然后更改 GPU 状态和风扇转速

  1. nvidia-settings --display :1.0 -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=60"
  2. #或者
  3. nvidia-settings --display :1.0 -a "[gpu:1]/GPUFanControlState=1" -a "[fan:1]/GPUTargetFanSpeed=60"
复制代码
修改之前

修改后

3、写一个主动控制的脚本时刻监测温度,并修改风扇转速

  1. sudo mkdir /opt/cool_gpus/
  2. sudo vim /opt/cool_gpus/cool_gpus.sh
复制代码
  1. #!/bin/bash
  2. cd $(dirname $0)
  3. X :1 &\
  4. # 检查是否有无限运行的参数
  5. run_forever=1
  6. # 设置日期格式
  7. date_format="+%Y-%m-%d %H:%M:%S"
  8. # 定义日志文件,文件名包含当前日期
  9. log_file="gpu_fan_log_$(date "+%Y%m%d").txt"
  10. # 循环直到脚本被告知停止
  11. while : ; do
  12.     # 获取所有NVIDIA GPU的数量
  13.     gpu_count=$(nvidia-smi -L | wc -l)
  14.     # 为每个GPU设置风扇速度
  15.     for (( gpuid=0; gpuid<gpu_count; gpuid++ )); do
  16.         # 获取当前GPU的温度
  17.         temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i ${gpuid})
  18.         # 根据温度确定目标风扇速度
  19.         if [ "$temp" -lt 30 ]; then
  20.             target=20
  21.         elif [ "$temp" -lt 40 ]; then
  22.             target=30
  23.         elif [ "$temp" -lt 50 ]; then
  24.             target=40
  25.         elif [ "$temp" -lt 60 ]; then
  26.             target=50
  27.         elif [ "$temp" -lt 70 ]; then
  28.             target=60
  29.         elif [ "$temp" -lt 75 ]; then
  30.             target=70
  31.         elif [ "$temp" -lt 80 ]; then
  32.             target=80
  33.         elif [ "$temp" -lt 85 ]; then
  34.             target=95
  35.         else
  36.             target=99
  37.         fi
  38.         # 输出当前温度和目标风扇速度,并将输出重定向到日志文件
  39.         echo "$(date "$date_format") - GPU ${gpuid}: Current temperature is ${temp} C. Setting fan speed to ${target}%." >> $log_file
  40.         # 设置当前GPU的风扇速度
  41.         nvidia-settings --display :1.0 -a "[gpu:${gpuid}]/GPUFanControlState=1" -a "[fan-${gpuid}]/GPUTargetFanSpeed=${target}"
  42.     done
  43.     # 检查是否设置为无限运行
  44.     if [ "${run_forever}" -ne 1 ]; then
  45.         break
  46.     fi
  47.     # 等待一定时间再次检查
  48.     sleep 15
  49. done
复制代码
4、 添加权限

  1. sudo chmod +x /opt/cool_gpus/cool_gpus.sh
复制代码
5、设置开机自启

起首,创建一个新的systemd服务文件。这个文件通常位于/etc/systemd/system目次下,文件名以.service末端。我们创建一个名为gpu_fan_control.service的文件:
  1. sudo vim /etc/systemd/system/gpu_fan_control.service
复制代码
输入下面的内容
  1. [Unit]
  2. Description=GPU Fan Control Script
  3. [Service]
  4. ExecStart=/opt/cool_gpus/cool_gpus.sh
  5. [Install]
  6. WantedBy=multi-user.target
复制代码
生存后关闭文件,加在配置文件
  1. sudo systemctl daemon-reload
复制代码
开机启动
  1. sudo systemctl enable gpu_fan_control
复制代码
立即启动
  1. sudo systemctl start gpu_fan_control
复制代码
检查状态
  1. sudo systemctl status gpu_fan_control
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表