如何在 Ubuntu 20.04 中锁定 AMD GPU 的风扇速度?

如何在 Ubuntu 20.04 中锁定 AMD GPU 的风扇速度?

我正在尝试全速锁定 AMD Radeon 显卡风扇的 RPM:

echo 1 > /sys/class/hwmon/hwmon1/pwm1_enable
echo 255 > /sys/class/hwmon/hwmon1/pwm1

到目前为止我已经尝试过的

sudo显然,由于缺少权限(即使使用/ ) ,它不起作用,root因为它是/sys

$ sudo su
$ echo 255 > /sys/class/drm/card1/device/hwmon/hwmon1/pwm1
bash: echo: write error: Invalid argument

我也尝试过sysfs配置来编辑这些参数,但它不起作用:

$ cat /etc/sysfs.conf
class/drm/card1/device/hwmon/hwmon1/pwm1 = 255
class/drm/card1/device/hwmon/hwmon1/pwm1_enable = 1

echo 5 | sudo tee ...也不起作用。

也不sudo sh -c

sudo sh -c 'echo 225 > /sys/class/drm/card1/device/hwmon/hwmon1/pwm1'
sh: 1: echo: echo: I/O error

Archilinux Wiki 指出这应该是可能的https://wiki.archlinux.org/index.php/fan_speed_control#Configuration_of_manual_control他们直接使用 and 编辑值echo,看起来这对他们有用。

另一篇指南也建议以这种方式配置风扇https://linuxconfig.org/overclock-your-radeon-gpu-with-amdgpu

Pythonamdgpu-fan包也不适合我。

sudo fancontrol也不行:

$ sudo fancontrol
Loading configuration from /etc/fancontrol ...

Common settings:
  INTERVAL=10

Settings for hwmon1/pwm1:
  Depends on hwmon1/temp1_input
  Controls 
  MINTEMP=10
  MAXTEMP=60
  MINSTART=50
  MINSTOP=0
  MINPWM=0
  MAXPWM=255
  AVERAGE=1

Enabling PWM on fans...
Starting automatic fan control...
/usr/sbin/fancontrol: line 649: echo: write error: Invalid argument
Error writing PWM value to /sys/class/hwmon/hwmon1/pwm1
Aborting, restoring fans...
Verify fans have returned to full speed

守护进程(服务)也不起作用:

fancontrol[1877]:   MAXPWM=255
fancontrol[1877]:   AVERAGE=1
fancontrol[1877]: Enabling PWM on fans...
fancontrol[1877]: Starting automatic fan control...
fancontrol[1877]: /usr/sbin/fancontrol: line 649: echo: write error: Invalid argument
fancontrol[1877]: Error writing PWM value to /sys/class/hwmon/hwmon1/pwm1
fancontrol[1877]: Aborting, restoring fans...
fancontrol[1877]: Verify fans have returned to full speed
systemd[1]: fancontrol.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: fancontrol.service: Failed with result 'exit-code'.

总结一下:似乎我根本无法编辑 /sys/ amdgpu 相关条目

第2部分

看来必须有另一种方法,比如一些amdgpu配置或类似的东西。也许在启动期间覆盖内核定义的值?

在 Windows 中,可以直接从 AMD Radeon 驱动程序 GUI 应用程序调整风扇。

我不想要花哨的曲线,我只是想强制锁定静态转速(全速模式)。我正在使用amdgpu-pro驱动程序,Ubuntu 20.04。我想避免使用类似的脚本fancontrol

问题本身

我想知道是否可以只设置pwm1_enableto1pwm1to 255?看起来建议的方法应该有效,但 Ubuntu 20.04 的安全限制比其他发行版的限制更严格。

更新 这东西有效!但仅持续 1-2 秒,之后风扇恢复到系统定义的速度https://github.com/DominiLux/amdgpu-pro-fans/blob/master/amdgpu-pro-fans.sh

更新2

禁用 pwm 大约需要 1-2 秒。 echo 0 > /sys/class/hwmon/hwmon1/pwm1_enable

但之后,某些守护进程会将此值恢复为 2。我如何才能防止除我之外的其他用户更改它?例如防止它被系统改变?

答案1

我想将粉丝锁定在 80%,但方式略有不同。我没有更改 /sys/class/drm/ 中的任何内容。只是

readlink -f /sys/class/drm/card1/device

,其中 card1 是我的 amd 显卡。

因此我知道我想要更改的文件的路径。

在那之后:

sudo sh -c "echo '1' > /sys/devices/pci0000:00/0000:00:03.0/0000:06:00.0/hwmon/hwmon1/pwm1_enable"
sudo sh -c "echo '200' > /sys/devices/pci0000:00/0000:00:03.0/0000:06:00.0/hwmon/hwmon1/pwm1"

作品! Ubuntu 内核 5.4

答案2

如果有人感兴趣,我提出的解决方案和相应的systemd服务在这里:redfan https://github.com/nmtitov/redfan

到目前为止,我最好的猜测是编写以下脚本并使其始终在后台运行:

while sleep 1; do echo 0 > /sys/class/drm/card1/device/hwmon/hwmon1/pwm1_enable; done

每一秒我都会“禁用”pwm并让风扇以最大速度运行。驱动程序(或其他东西)恢复了该值,但下一秒我立即再次禁用它。

答案3

我的配置是

sinix@sinix-garage:~$ lspci -v | grep VGA
lspci: Unable to load libkmod resources: error -12
        Flags: bus master, VGA palette snoop, 66MHz, medium devsel, latency 64, NUMA node 0
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii XT / Grenada XT [Radeon R9 290X/390X] (prog-if 00 [VGA controller])
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev e7) (prog-if 00 [VGA controller])
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 550 640SP / RX 560/560X] (rev cf) (prog-if 00 [VGA controller])

我设置了 Hawai & Baffin 来合作amdgpu-fan,而 Ellesmere 只与 合作redfan。这不是解决方案,因为我无法在埃尔斯米尔上设置 pwm。因此,使用此解决方案时,PC 会不断冻结。我知道这是amdgpu-20.45与内核 5.4.65之间的关系问题。

因此,我决定尝试不同的内核,最终找到了合适的内核。

https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.19.180/

安装 4.19 后,Ellesmere 启动, pwm1_enable=2但最终它们听到 1 的“回声”,并且所有其他守护进程都正常工作,例如amdgpu-fan.

所以“矩阵”在/etc/amdgpu-fan-config.yaml起作用。

GPU0 t=66°C fan 67% power 134.09W, GPU1 t=54°C fan 56% power 104.09W, GPU2 t=51°C fan 53% power 47.23W. Total power: 285.41W

相关内容