(Ubuntu 20.04)根据 GPU 温度设置风扇速度

(Ubuntu 20.04)根据 GPU 温度设置风扇速度

我从朋友那里得到了一台旧电脑,它配备了 MSI Nvidia GTX 970。显卡的风扇不再正常工作,摇晃不已,导致冷却行为不一致。我拆下了旧风扇,用 2 个 Arctic P12 PWM PST 以类似的扎带方式替换它们,如下图所示视频。现在两个风扇都正常工作,但我不知道如何正确调节它们的速度。

有两种可能性(两个风扇都通过 PST 连接):

  1. 将打开的风扇接头连接至主板上的 SYS_FAN / CHA_FAN 接头
  2. 将打开的风扇接头连接至 GPU 上的接头

GTX 使用 6 针接头,其中 PIN 1、3、4 将 PWM、接地、+V 连接到风扇,PIN 2、6 是风扇的转速信号。因此,我必须将风扇 PST 接头连接到引脚 1、3、4 和 2 或 6。电缆的布局使我无法使用引脚 2,因此我被迫使用引脚 6,这似乎有问题,因为nvidia-smi报告的风扇速度为 0%,尽管风扇正在旋转。虽然我更喜欢这个选项,因为 GPU 将完成所有的 PWM 处理,但我无法查明问题并修复不正确的风扇速度。因此,我必须坚持使用选项 1,

使用这个选项,我偶然发现fancontrol它对我的用例来说似乎很有希望,但是截至目前,当设置应该监控的传感器时,我找不到 GPU 温度传感器。

我该怎么做才能让风扇根据 GPU 温度旋转?这意味着,我要么通过 GPU 接头监控 GPU 温度,fancontrol要么修复使用 GPU 接头时不正确的 RPM 测量值。

主板:华硕 Z97-A
pwmconfig 输出使用 nvidia 控制面板(注意没有任何温度匹配)
sensors输出:

nct6791-isa-0290
Adapter: ISA adapter
Vcore:                 848.00 mV (min =  +0.00 V, max =  +1.74 V)
in1:                     1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:                    3.33 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:                   3.33 V  (min =  +2.98 V, max =  +3.63 V)
in4:                   1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                     1.98 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
3VSB:                    3.39 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:                    3.25 V  (min =  +2.70 V, max =  +3.63 V)
in9:                     1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)
in11:                  920.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)
in13:                   88.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)
fan1:                     0 RPM  (min =    0 RPM)
fan2:                   418 RPM  (min =    0 RPM)
fan3:                     0 RPM  (min =    0 RPM)
fan4:                     0 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
fan6:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +27.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
CPUTIN:                 +28.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN0:               +127.0°C    sensor = thermistor
AUXTIN1:               -128.0°C    sensor = thermistor
AUXTIN2:                +30.0°C    sensor = thermistor
AUXTIN3:               +127.0°C    sensor = thermistor
PECI Agent 0:           +27.5°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +27.8°C  (crit = +105.0°C)
temp2:        +29.8°C  (crit = +105.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +35.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +32.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:        +32.0°C  (high = +80.0°C, crit = +100.0°C)
Core 2:        +30.0°C  (high = +80.0°C, crit = +100.0°C)
Core 3:        +33.0°C  (high = +80.0°C, crit = +100.0°C)

答案1

我通过编写一个在启动时运行的小型 Python 脚本解决了这个问题,该脚本grep -P \d{1,3}(?=C)从 中获取温度nvidia-smi。该温度在内部用于计算 PWM 数字 (0, 255),然后将其写入/etc/fancontrol最初提供的文件中pwmconfig

...(leave INTERVAL, FCTEMPS, FCFANS untouched as we will do this programmatically)
MINTEMP=0
MAXTEMP=1
MINSTART=hwmon/pwm/={PWM}
MINSTOP=hwmon/pwm/={PWM}
MINPWM=hwmon/pwm/={PWM}
MAXPWM=hwmon/pwm/={PWM}+1

其次是sudo service fancontrol restart

相关内容