调整 Nvidia GPU 的风扇曲线

3 nvidia overheating fancontrol nvidia-settings

所以我试图弄清楚如何为我的 Gigabyte GTX 960 ITX 卡制作自定义风扇曲线。它大约是半长(对于我的小机箱),但这意味着它有一个非常小的散热器,而 Nvidia 驱动程序没有对此进行适当的补偿。

我做了一堆谷歌搜索,大多数答案由于某种原因并没有真正起作用。

如何制作自定义风扇曲线?

小智 5

在 Ubuntu 论坛上找到了大部分答案但给出的设置风扇速度的命令是错误的。我自己也写了 shell 脚本(我是菜鸟),所以请随意评论我是如何做错的,只要你告诉我如何修复它:) 我添加了过多的评论,所以不理解的人bash 可以了解我在做什么。这仅适用于 1 个 GPU,并且需要对多个 GPU 进行修改。顺便说一下,我设置的风扇曲线是speed%=0.028*(degreesC^2)

设置

  1. 以 root 身份运行您选择的文件浏览器(在我的情况下sudo konqueror)。
  2. 转到/etc/X11并允许对所有组进行写访问(但保持窗口打开)。
  3. 打开 Nvidia X 服务器设置窗口(nvidia-settings在终端中)。
  4. 转到nvidia-settings 配置
  5. 单击保存当前配置,然后在弹出窗口中单击保存。
  6. 关闭Nvidia 设置并运行sudo nvidia-xconfig,然后再次使用--cool-bits=4.
  7. 重启。

脚本

#!/bin/bash
# Put "sleep 30" here if you run it at start-up
# to make sure this starts after the Nvidia driver does.

fan="0"
gpu="0"
echo "GPU fan controller service started."
nvidia-settings -a "[gpu:$gpu]/GPUFanControlState=1" > /dev/null
check="$(nvidia-settings -a \"[fan:$fan]/GPUTargetFanSpeed=30\" | tr -d '[[:space:]]')"
working="Attribute'GPUTargetFanSpeed'($(hostname):0fan:$fan)assignedvalue30."

if [[ "$check" != "$working" ]]; then
    echo "error on fan speed assignment: $check"
    echo "Should be: $working"
    exit 1
fi
while true
do
    degreesC="$(nvidia-smi -i $gpu | grep -owEe '[0-9]+C')"
    fanSpeed=$(($degreesC ** 2))
    fanSpeed=$(($fanSpeed / 50))
    if [[ $fanSpeed -gt 100 ]]
    then
        fanSpeed=100
    fi
    nvidia-settings -a "[fan:$fan]/GPUTargetFanSpeed=$fanSpeed" > /dev/null
    sleep 8
done
Run Code Online (Sandbox Code Playgroud)

我将来可能不会更新它,因为我将升级到 RX 480。