(高级)Ubuntu AMD GPU 问题(可能过热/传感器配置错误/驱动程序错误)

Ref*_*ion 5 fan overheating temperature drivers amdgpu-pro

这是我的第一篇文章。我会尽力提供有关该问题的尽可能多的信息。原来帖子有点长,但是写的很详细。

系统规格:
处理器:i5-4690k
Gpu:MSI R9 290x
内存:4 GB DDR3
存储:500 GB SSD 显示器:Benq XL2411

我在 Windows 上使用双启动,我通常在 Windows 上玩游戏。游戏以 ~144 FPS 运行,没有任何问题。

不过最近想多用一点Linux,决定安装Ubuntu 18.04。我安装了 AMD 的 AMDGPU-PRO 驱动程序。我彻底按照安装说明进行操作,并确保它安装正确。

当我启动 Dota 2 时,它运行良好,直到我进入公共游戏,之后我在游戏开始后或任意时间突然丢失显示信号。有时信号丢失持续时间是进入游戏的 5 分钟,有时是 20 分钟,有时是 40 分钟。当我失去显示信号时,声音仍然在后台播放几秒钟,但它停止或开始循环。我的电脑仍然开着,因为我可以听到风扇的声音并看到 LED。电源按钮不起作用,除非我按住它 5 秒钟(硬关机)。重新启动后,如果我启动 Windows,游戏运行得非常好。如果我启动 Ubuntu,它将持续 5-10(有时更多)分钟,然后重复上述事件序列。

无论我选择登录 Ubuntu Wayland 还是 Xorg,或者是否有进程在后台运行,问题仍然存在。

我决定使用lm-sensors. 我安装了它,运行了传感器检测,并运行了传感器命令。在桌面上空闲时,我得到以下输出:

amdgpu-pci-0100
Adapter: PCI adapter
vddgfx:       +1.00 V 
fan1:             N/A  (min =    0 RPM, max =    0 RPM)
edge:         +66.0°C  (crit = +104000.0°C, hyst = -273.1°C)
power1:       36.11 W  (cap = 208.00 W)
Run Code Online (Sandbox Code Playgroud)

我注意到的第一件事是 GPU 温度在桌面闲置时不断上升,每隔几分钟上升约 1 度。同时fan1传感器不工作,出于某种原因。我跑了sensors -u,这里是输出:

amdgpu-pci-0100
Adapter: PCI adapter
vddgfx:
  in0_input: 1.000
fan1:
ERROR: Can't get value of subfeature fan1_input: Can't read
  fan1_min: 0.000
  fan1_max: 0.000
edge:
  temp1_input: 65.000
  temp1_crit: 104000.000
  temp1_crit_hyst: -273.150
power1:
  power1_average: 36.113
  power1_cap: 208.000
Run Code Online (Sandbox Code Playgroud)

然后我决定从 git下载一个手动设置风扇速度的脚本

好吧,我测试了它,当我用 100 执行它时,它确实使风扇声音更大,但是我怀疑这真的是它们的最大值,因为我在 Windows 上玩战地 4 时听到它们的声音更大。然后,sensorsGPU 温度在桌面空闲时开始降低。

现在我尝试在风扇设置为 100 的情况下玩 Dota 2 并通过sensors. 温度会大幅上升,在主菜单中达到约 82-86 度,在游戏中达到 95+。正如我之前描述的那样,一旦达到 96-97 以上,显示器就会失去信号。GPU 温度也上升得非常快,每隔几分钟左右升高 1 度。这种情况在比赛开始时不再发生,球迷人数为 100,但一段时间后结果基本相同。

我真的很想确保这不是硬件问题,所以我使用我的 Radeon 设置程序在 Windows 上的 Dota 2 游戏中监控我的 GPU 性能。

主菜单中的 GPU 温度约为 74 度,在游戏中最高为 85 至 93 度,大部分时间保持在 90-88 度,包括在团战期间(这应该需要更多的 GPU 功率)。

风扇速度平均约为 2400 RPM,在游戏过程中峰值约为 2550。在空闲桌面使用期间,它更像是 1200 RPM。我在超级显卡上运行过战地 3 和 4,在 Windows 上没有出现这样的问题。此外,Dota 2 上的 GPU 利用率约为 30%-50%,CPU 利用率约为 70-80%。

GPU 传感器在 Windows 上运行良好,并且非常准确,尤其是风扇速度。

我查看了这个 amdgpu-pro-fans 脚本的作用,发现它本质上是访问卡的目录 ( /sys/class/drm/card0/device/hwmon/hwmon2) 并从文件中获取值pwm1_max(即255),计算输入的百分比,并将这个新值写下来在pwm1。我不知道为什么这个值是255或它代表什么。还有一个fan1_enable文件,其中包含一个值1,以及一个fan1_input无法打开的文件,因为它是“未知类型”。这可能与中的问题有关sensors。此外,该文件temp1_crit显示104000000,而temp1_crit_hyst显示-273150. 我很确定这些值是垃圾。它们也可以在上面的传感器输出中看到。

hwmon2hwmon. 我看到有些人有hwmon3,但我不知道为什么。这是hwmon2文件夹的截图:

hwmon2 文件夹的屏幕截图

我不能 100% 确定 GPU 过热导致了我的问题,但我认为这很有可能。

我已经尝试重新安装 AMDGPU-PRO 驱动程序至少 5 次。我的系统和 AMDGPU-PRO 驱动程序是最新的。

我正在使用与 Windows 上相同的设置运行 Dota 2。

我在 Dota 2 中使用 Vulkan API。在 OpenGL 上,性能明显较低,游戏中平均为 80 FPS。在 Vulkan 上,它或多或少符合我的 Windows 性能。

最后要注意的是,在我的显示器出现黑屏/信号丢失之前,游戏的 FPS 并没有真正下降。它发生得相当瞬间。没有滞后或类似的东西。

关于可能导致问题的任何想法?