如何更改Nvidia GPU风扇速度?

我又开始尝试使用Ubuntu了,之前有一段时间没有用过。在Windows 7中,我可以将GPU风扇设置为10-30%,温度几乎不会超过52摄氏度。然而,在Ubuntu中,NVIDIA将其设置为55%,这对我的MSI 460GTX来说太吵了。

这是唯一让我不使用Ubuntu的原因,难道真的没有类似MSI Afterburner / EVGA Precision这样的程序或方法,可以手动设置温度曲线和风扇速度吗?

默认风扇声音太大了,从25%的GPU风扇速度到55%只有3摄氏度的差别,但噪音却大得多。

7个回答

在终端中运行:
sudo nvidia-xconfig
sudo nvidia-xconfig --cool-bits=4

重新启动您的计算机并在Dash中搜索NVIDIA X Server Settings。在Thermal Settings下应该有一个更改风扇速度的选项。

6提供一些更详细的解释:这将生成一个全新的 xorg.conf 文件,并在 Section "Screen" 中添加了 Option "Coolbits" "4"。而被称为 NVIDIA X Server Settings 的应用程序是 nvidia-settings - scai

在Linux Mint 20上通过终端控制Nvidia GPU风扇速度,使用1070 Ti:
sudo nvidia-xconfig --cool-bits=4

告诉nvidia-xconfig在命令行中允许对风扇进行控制。你可能需要在这里重新启动。
nvidia-smi

提供有关GPU和其编号的信息。重要的是我注意到我的1070 Ti是GPU 0。
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=55"

要了解更详细的功能概述,包括多个GPU风扇,请查看这份详尽的文档Nvidia超频和散热

如果你想阅读一个有点啰嗦和离题的帖子,带你到上面的链接,请点击从终端设置Linux风扇速度

==================回答结束==================

还有一个额外的小提示,虽然这个问题没有提到,你也可以调整Nvidia GPU的功率输出:

sudo nvidia-smi -i 0 -pl 90

0是我的GPU编号,90是最大功耗(单位瓦)。如果你把这个值设置得太低,会出现错误。从我有限的经验来看,将其设置得太高并没有任何影响。
通过将上述命令中的功耗级别设置为100,在我的挖矿装置中,我发现可以以75%能源成本获得95%以上的性能,但我想其他注重节能的用户也会对此表示赞赏。

注意最高票答案可能存在问题。我有两个2080ti显卡,运行该命令导致我的电脑无法启动。

最终,我从这里找到了一个答案。按照那个方法操作:

  1. 创建一个名为/etc/X11/xorg.conf.d/11-nvidia-coolbits.conf的文件,并在其中写入以下内容:

    Section "OutputClass"
        Identifier "nvidia"
        MatchDriver "nvidia-drm"
        Driver "nvidia"
        Option "Coolbits" "4"
    EndSection
    
  2. 退出并重新登录。

  3. 运行nvidia-settings。在打开的窗口中,您现在可以找到风扇速度控制选项。但是只能控制一个GPU的风扇速度。


1对我有效!奇怪的是风扇速度滑块只在那之后出现,而不总是出现。 - xjcl

尝试使用sudo apt-get install nvclock进行安装。

7无法找到此软件包。 - Kongsea

以上的答案都对我没有用,使用nvidia-settings图形界面无法生效。以下是我在通过ssh隧道连接到我的桌面时,使用bash命令成功改变风扇速度的方法。(注意:我安装的是SDDM(简单桌面显示管理器),而不是GDM(GNOME桌面管理器))。

获取当前X服务器的Xauthority。

(注意:您可能需要先插入监视器并打开它,否则,有一个非常有趣的解决方法可以运行一个新的X服务器(例如:X :0 && export DISPLAY=:0nvidia论坛上可用)。

我不需要那个方法,因为我只需将一个(关闭电源的)监视器插入HDMI插座即可。以下是更简单的版本:

ps -ax | grep Xorg

找到类似于-auth /var/run/sddm/{31a6ce92-51d1-4cef-b30e-61d63b0221bb}的授权文件路径,并复制该路径(即/var/run/sddm/{Authorization File})。 (不要在这里使用虚拟示例,它不起作用 - 您需要使用上述命令找到您的Auth文件路径)。

调整Nvidia GPU风扇速度

现在我们准备好将完整的命令组合在一起 - 要设置GPU 0的速度为95%,命令如下(记得用上面复制的路径替换授权文件路径):

sudo DISPLAY=:0 XAUTHORITY=/var/run/sddm/{31a6ce92-22d1-4cef-b29e-91d63b0221bb} nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=95

将值更改为您所需的内容。通过运行此代码来检查是否成功。
nvidia-smi

将所有内容封装到一个Python脚本中

如果你像我一样懒,只想要一个Python脚本来完成所有这些操作 - 你可以将以下内容粘贴到一个文件中(例如,创建一个名为fanspeed.py的新文件),然后运行python fanspeed.py

#!/usr/bin/python
import subprocess
import re

# Run 'ps' command and capture the output
ps_process = subprocess.Popen(['ps', '-ax'], stdout=subprocess.PIPE)
ps_output = ps_process.communicate()[0].decode('utf-8')

# Search for the string that looks like '/usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{c88c6851-f0c3-48f8-9689-814f25e12450} -background none -noreset -displayfd 17 -seat seat0 vt1'
xauth_line = None
for line in ps_output.split('\n'):
    if '-auth /var/run/sddm/{' in line:
        xauth_line = line
        print("Found Xauth line " + xauth_line)
        break

# Extract the '-auth' value
xauth_value = None
if xauth_line:
    match = re.search(r'-auth\s+(.+?})', xauth_line)
    #match = re.search(r'-auth\s+(.+)\s+', xauth_line)
    if match:
        xauth_value = match.group(1)
        print("Found Xauth value:" + xauth_value)

# Adjust fan speed
if xauth_value:
    fan_speed_command = f'sudo DISPLAY=:0 XAUTHORITY={xauth_value} nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=95'
    print("Issuing command to adjust fanspeed"+fan_speed_command)
    subprocess.run(fan_speed_command, shell=True)

# Check if it worked by running 'nvidia-smi' command
nvidia_smi_process = subprocess.run(['nvidia-smi'], stdout=subprocess.PIPE)
nvidia_smi_output = nvidia_smi_process.stdout.decode('utf-8')
print(nvidia_smi_output)

非常感谢,这个方法有效! - SomeDude

  1. 按照之前提到的,安装nvclock
  2. 打开终端
  3. nvclock -f -F 80(在这种情况下,风扇会以80%的速度运转)

1我有一台搭载Geforce 310m的Sony Vaio。遇到了同样的问题。 当我使用nvclock时,得到的回复是:$ sudo nvclock -f -F 80 无法读取视频BIOS 错误:您的显卡不支持风扇速度调节! - Oleksa
你的回答可以通过[编辑]来改进,请整理回答以使其更加值得信赖! - Error404

好的,所有这些东西都很棒,但我发现有一个视频被人们忽视了,因为我们总是看着问答,认为那里有更好的解决方案。
添加这一行:
在/etc/X11/Xwrapper.config中
needs_root_rights=yes
然后重新启动,你的问题就会解决了,可以根据自己的需要设置风扇速度,最好使用sudo。