Linux中的CPU溫度:節流或錯誤讀數?
使用帶有 i7-7700HQ(基本時鐘 2.8Ghz)和 GTX 1050 的 Lenovo Legion Y520。
我在 linux 中收到 CPU 過熱警告,這影響了我在遊戲中的表現(見於 Payday 2 和 CS:GO)。我在 Windows 中從來沒有遇到過問題。
這是我在嘗試解決此問題時發現的:
在 Windows 10 中(使用 aida64)
- Windows 在空閒時保持在 3.4 Ghz 左右(因為我的電源設置設置為“高性能”而不是預設的“平衡”),溫度約為 50 攝氏度。
- 當對 CPU 施加壓力時,溫度會緩慢(在幾秒鐘內而不是立即)從大約 50C 到大約 75C 並舒適地保持在那裡。壓力時時鐘速度約為 2.9Ghz。使用率始終為 100%。Aida64 不報告節流。CPU 核心上的電壓在施加壓力時從大約 1.1 變為 0.9。
在 Arch Linux 中(使用 s-tui)
- Linux 在空閒時保持在 2.0Ghz 左右,溫度約為 50C。
- 這就是它變得奇怪的地方:當對 CPU 施加壓力時,溫度立即從 50C 變為大約 93C。強調時的時鐘速度正好是 3.4Ghz。使用率始終為 100%。當關閉壓力測試時,溫度立即回到 50C 左右,好像什麼都沒發生過一樣。即使在長時間的壓力下,筆記型電腦在執行此操作時當然不會感覺它會加熱到 90C+。
這張圖片顯示了溫度、功率和頻率是如何同時下降的。請注意在這麼短的時間內 CPU 溫度變化了多少。
如何解決此限制問題?我是否在 linux 中降低了我的 CPU 電壓?為什麼它在 Linux 中讀取溫度錯誤,但在 Windows 中卻沒有?
我使用 cpupower 將配置文件從 powersave 更改為 performance。我仍然在 s-tui 中看到同樣的限制。設置為性能時,空閒 cpu 頻率會上升(而不是大約 2000-2500Mhz 到始終處於 3400Mhz),但這是唯一改變的事情。
風扇控制
我嘗試使用fancontrol (lm_sensors)控制風扇,但 pwmconfig 說沒有安裝支持 pwm 的感測器模組。
我用NBFC嘗試過,但無論我選擇什麼配置文件,它似乎都沒有做任何事情。我什至不知道NBFC是否可以控制我的粉絲,但是在選擇配置文件時它不會報告任何錯誤。
我也試過thinkfan,但它似乎對節流沒有幫助。它還認為我的風扇速度為 8RPM,請參閱此執行緒
解決方案
我發現使用 cpupower 將允許的最大 cpu 頻率降低到 3100MHz 而不是預設的 3800 可以解決所有問題。
sudo cpupower frequency-set -u 3100MHz
我還將 max_freq 更改
/etc/default/cpupower
為相同的值,以使其永久化。我發現這確實會導致遊戲中的 fps 略有下降,但並不嚴重。至少我的fps是穩定的:)可悲的是,我認為這可能會導致非遊戲任務的性能下降,例如編譯某些東西時。
1.5年後
我剛剛再次對 Windows 進行了穩定性測試(使用 AIDA64),發現它現在也是熱節流閥。正如您在下圖中看到的那樣,溫度迅速躍升至 90 多度,並且 AIDA64 報告節流。時鐘速度在 3.4GHz 處閒置,在開始測試幾秒鐘後降至 800MHz 左右,一秒鐘後再次躍升至 3.4GHz。它不會決定在壓力測試到 2.9GHZ(像以前一樣)時降低時鐘速度。
為什麼它突然停止降低 Windows 中的最大頻率?
差異是由於 windows 和 linux 使用不同的 CPU 節流配置文件。
您確實可以在 linux 上對此進行一些控制。例如,以下命令將顯示目前正在使用的配置文件:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
有多種方法可以選擇要使用的配置文件。Arch Linux wiki 對此有很好的資訊,可能值得一讀:
還有一個風扇控制問題——你需要確保你有適當的驅動程序來控制你的風扇,並且在遊戲時將它們設置為足夠高的速度。
筆記型電腦上的 Linux可能是一個有用的資源。