我想知道 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风扇停止,键盘指示灯闪烁然后关闭,鼠标相同,其他CPU风扇保持,有时系统永远冻结,有时系统自动重启。
由于需要重新启动,我在系统日志上找不到任何提示,最初我认为这是内核崩溃,但即使使用kdump并复制内核,系统仍然会崩溃,我无法恢复它。
我不知道 Windows 是否会遇到同样的问题,但我坚信不会,我从未见过有人在 Windows 上遇到同样的问题,所以我的问题是:有一些方法可以告诉内核让 GPU 轻松应对当它即将过热时,也许只是自动降低GPU时钟速度?
我找到了解决办法,文件上有一些
/sys/class/drm/card0/device
文件pp_dpm_mclk
表示GPU内存时钟,文件pp_dpm_sclk
表示GPU核心时钟,我的:该文件
power_dpm_force_performance_level
指示配置文件,可以是low
,auto
或者manual
,默认是auto
,当low
它始终以最低时钟运行时,这不是我想要的,所以我将它设置为manual
并制作了一个脚本,该脚本会根据 GPU 不断更改时钟温度,瞧,它起作用了!要更改
manual
配置文件上的时钟,只需将一个数字写入pp_dpm_sclk
代表该行的文件,从 开始0
,在我的情况下为 until7
。如果您对我的脚本感兴趣,就在这里。