如何防止GPU过热和自动关闭

如何防止GPU过热和自动关闭

我想知道 Linux 如何处理游戏玩家计算机,所以我构建了一台,但我们知道 GeForce 不像 AMD 那样喜欢 Linux,这就是我选择最后一个的原因。

我组装了一台AMD Ryzen 7 1800X CPU和Radeon RX 560D GPU的电脑,因为Vega太贵了,我买不起,而且基准测试说560是目前最好的性价比。

经过一番研究,我发现后缀 D 意味着它的时钟速度略低,以便与不带 D 的 RX560 相比节省一些功耗。

在随机游戏过程中无数次崩溃后,我终于发现问题是 GPU 过热,它的风扇速度往往跟随 CPU 风扇速度,但当然在某些游戏中对 CPU 的需求比 GPU 少得多。

我通过根据GPU温度而不是CPU自定义风扇速度部分解决了这个问题,现在它正在逐渐增长,并在50摄氏度时达到最大速度,但问题是:在某些游戏上它始终保持最大速度,最终仍然崩溃。

崩溃描述:屏幕闪烁然后黑屏,GPU风扇停止,键盘LED闪烁然后关闭,鼠标不变,其他CPU风扇保持,有时系统永远冻结,有时系统自动重启。

由于需要重新启动,我在系统日志上找不到任何提示,最初我认为这是内核恐慌,但即使使用转储文件并复制内核,系统仍然崩溃,我无法恢复它。

我不知道 Windows 是否会有同样的问题,但我坚信不会,我从未见过有人在 Windows 上遇到同样的问题,所以我的问题是:有没有办法告诉内核在 GPU 即将过热时让它放松一点,也许只是自动降低 GPU 时钟速度?

答案1

/sys/class/drm/card0/device我找到了解决方案,文件上有一些文件pp_dpm_mclk指示GPU内存时钟,文件pp_dpm_sclk指示GPU核心时钟,我的:

$ egrep -H . /sys/class/drm/card0/device/pp_dpm_*
/sys/class/drm/card0/device/pp_dpm_mclk:0: 300Mhz 
/sys/class/drm/card0/device/pp_dpm_mclk:1: 1500Mhz *
/sys/class/drm/card0/device/pp_dpm_pcie:0: 2.5GB, x8 *
/sys/class/drm/card0/device/pp_dpm_pcie:1: 8.0GB, x16 
/sys/class/drm/card0/device/pp_dpm_sclk:0: 214Mhz *
/sys/class/drm/card0/device/pp_dpm_sclk:1: 481Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:2: 760Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:3: 1000Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:4: 1050Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:5: 1100Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:6: 1150Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:7: 1196Mhz 

该文件power_dpm_force_performance_level指示配置文件,可以是low,automanual,默认是auto,当low它始终在最低时钟上运行时,这并不完全是我想要的,所以我将其设置为manual并制作了一个脚本,根据 GPU 不断更改时钟温度,瞧,成功了!

要更改配置文件上的时钟,manual只需将一个数字写入pp_dpm_sclk代表该行的文件,从 开始0,在我的例子中直到7

如果你对我的剧本感兴趣就这个

相关内容