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

linux 服务器因为没有安装桌面,gpu 风扇转速控制一直失败,搞了几天终于成功了,记录一下。

1、使用 nvidia-settings 需要开启一个 X server 才能使用

#开启一个X server
X :1 &\

# 要关闭的话,用ps查找id, 手动kill

ps -fC Xorg
sudo kill pid

2、 然后更改 GPU 状态和风扇转速

nvidia-settings --display :1.0 -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=60"
#或者
nvidia-settings --display :1.0 -a "[gpu:1]/GPUFanControlState=1" -a "[fan:1]/GPUTargetFanSpeed=60"

修改之前
image.png
修改后
image.png

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

sudo mkdir /opt/cool_gpus/
sudo vim /opt/cool_gpus/cool_gpus.sh
#!/bin/bash
cd $(dirname $0)
X :1 &\
# 检查是否有无限运行的参数
run_forever=1


# 设置日期格式
date_format="+%Y-%m-%d %H:%M:%S"

# 定义日志文件,文件名包含当前日期
log_file="gpu_fan_log_$(date "+%Y%m%d").txt"

# 循环直到脚本被告知停止
while : ; do
    # 获取所有NVIDIA GPU的数量
    gpu_count=$(nvidia-smi -L | wc -l)

    # 为每个GPU设置风扇速度
    for (( gpuid=0; gpuid<gpu_count; gpuid++ )); do
        # 获取当前GPU的温度
        temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits -i ${gpuid})

        # 根据温度确定目标风扇速度
        if [ "$temp" -lt 30 ]; then
            target=20
        elif [ "$temp" -lt 40 ]; then
            target=30
        elif [ "$temp" -lt 50 ]; then
            target=40
        elif [ "$temp" -lt 60 ]; then
            target=50
        elif [ "$temp" -lt 70 ]; then
            target=60
        elif [ "$temp" -lt 75 ]; then
            target=70
        elif [ "$temp" -lt 80 ]; then
            target=80
        elif [ "$temp" -lt 85 ]; then
            target=95
        else
            target=99
        fi

        # 输出当前温度和目标风扇速度,并将输出重定向到日志文件
        echo "$(date "$date_format") - GPU ${gpuid}: Current temperature is ${temp} C. Setting fan speed to ${target}%." >> $log_file

        # 设置当前GPU的风扇速度
        nvidia-settings --display :1.0 -a "[gpu:${gpuid}]/GPUFanControlState=1" -a "[fan-${gpuid}]/GPUTargetFanSpeed=${target}"
    done
    # 检查是否设置为无限运行
    if [ "${run_forever}" -ne 1 ]; then
        break
    fi

    # 等待一定时间再次检查
    sleep 15
done

4、 添加权限

sudo chmod +x /opt/cool_gpus/cool_gpus.sh

5、设置开机自启

首先,创建一个新的systemd服务文件。这个文件通常位于/etc/systemd/system目录下,文件名以.service结尾。我们创建一个名为gpu_fan_control.service的文件:

sudo vim /etc/systemd/system/gpu_fan_control.service

输入下面的内容

[Unit]
Description=GPU Fan Control Script

[Service]
ExecStart=/opt/cool_gpus/cool_gpus.sh

[Install]
WantedBy=multi-user.target

保存后关闭文件,加在配置文件

sudo systemctl daemon-reload

开机启动

sudo systemctl enable gpu_fan_control

立即启动

sudo systemctl start gpu_fan_control

检查状态

sudo systemctl status gpu_fan_control
  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值