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

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

这是我的第一篇帖子。我会尽量提供有关该问题尽可能多的信息。这篇帖子有点长,但相当详细。

系统规格:
处理器: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,或者是否在后台运行进程,问题仍然存在。

我决定使用来检查 GPU 温度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)

我注意到的第一件事是,桌面空闲时 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

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

好吧,我测试了一下,当我以 100 执行时,风扇确实会更响,但我怀疑这是否真的是它们的最大值,因为我在 Windows 上玩《战地 4》时听到它们的声音大得多。然后,sensors在桌面空闲时 GPU 温度开始降低。

现在我尝试玩 Dota 2,将风扇设置为 100,并通过 监控 GPU 温度sensors。温度会大幅上升,在主菜单中达到约 82-86 度,在游戏中达到 95 度以上。一旦温度超过 96-97 度,显示器就会丢失信号,就像我之前描述的一样。GPU 温度也上升得相当快,每隔几分钟左右上升 1 度。在游戏开始时风扇以 100 度运转时,这种情况不再发生,但一段时间后结果基本相同。

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

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

风扇转速平均约为 2400 RPM,游戏过程中峰值约为 2550 RPM。桌面空闲时转速更接近 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_max255pwm1255fan1_enable1fan1_inputsensorstemp1_crit104000000temp1_crit_hyst-273150

hwmon2是 中唯一的文件夹hwmon。我看到有些人有hwmon3,但我不知道为什么。以下是该hwmon2文件夹的屏幕截图:

hwmon2 文件夹的屏幕截图

我不能 100% 确定 GPU 过热是导致我的问题的原因,但我认为这种可能性很大。

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

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

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

最后要说的是,在我的显示器黑屏/信号丢失之前,游戏的 FPS 并没有真正下降。它发生得相当突然。没有延迟或类似情况。

对于导致这些问题的原因您有什么想法吗?

相关内容