Cpu

Linux中的CPU溫度:節流或錯誤讀數?

  • November 12, 2021

使用帶有 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 節流的圖片

如何解決此限制問題?我是否在 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 上的 AIDA64,電源設置 = 高性能

為什麼它突然停止降低 Windows 中的最大頻率?

差異是由於 windows 和 linux 使用不同的 CPU 節流配置文件。

您確實可以在 linux 上對此進行一些控制。例如,以下命令將顯示目前正在使用的配置文件:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

有多種方法可以選擇要使用的配置文件。Arch Linux wiki 對此有很好的資訊,可能值得一讀:

CPU 頻率縮放 - Arch Wiki

還有一個風扇控制問題——你需要確保你有適當的驅動程序來控制你的風扇,並且在遊戲時將它們設置為足夠高的速度。

筆記型電腦上的 Linux可能是一個有用的資源。

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