Cpu

如何防止GPU過熱和自動關閉

  • May 17, 2018

我想知道 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核心時鐘,我的:

$ 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指示配置文件,可以是lowauto或者manual,預設是auto,當low它始終以最低時鐘執行時,這不是我想要的,所以我將它設置為manual並製作了一個腳本,該腳本會根據 GPU 不斷更改時鐘溫度,瞧,它起作用了!

要更改manual配置文件上的時鐘,只需將一個數字寫入pp_dpm_sclk代表該行的文件,從 開始0,在我的情況下為 until 7

如果您對我的腳本感興趣,就在這裡

引用自:https://unix.stackexchange.com/questions/444200