為什麼我的 CPU 無視 cpupower 等設置的最大頻率,我怎樣才能讓我的 CPU 不至於過熱?
我
4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
在我的聯想 T530 筆記型電腦上使用 Debian 10 (buster),它有一個i7-3630QM
. 自從我為頻率縮放和溫度煩惱以來已經有很多年了,但最近它已經成為一個問題。當我嘗試執行 CPU 密集型應用程序時,CPU 可能會在較長時間內變得非常熱,我說的是 100°C 以上。現在這台筆記型電腦已經使用了八年多了,我不確定它能持續多久,所以我想
- 讓它持續盡可能長的時間,並且
- 減少噪音污染,因為風扇在高負載和溫度下會變得相當響亮。
幾年前有幾個州長可以用來做這件事,所以我很驚訝現在只有
powersave
和performance
。我試圖用來cpupower
設置例如 2.4GHz 的最大頻率:cpufreq-set -u 2.4GHz
.不幸的是,這似乎並沒有真正起作用。
cpupower frequency-info
報告current policy: frequency should be within 1.20 GHz and 2.40 GHz. The governor "powersave" may decide which speed to use within this range.
但是當我啟動 CPU 密集型應用程序(尤其是需要 3D 圖形加速的應用程序)時,在我的遊戲“Stellaris”中,CPU 變得非常熱,這並不奇怪,因為
cpupower frequency-info
有報導hardware limits: 1.20 GHz - 3.40 GHz available cpufreq governors: performance powersave current policy: frequency should be within 1.20 GHz and 2.40 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.30 GHz (asserted by call to kernel)
這實際上是自相矛盾的。
現在這個問題已經被討論過,例如在這個問題中,作者在他的回答中解決了這個問題。不過,也有人評論說這行不通。就我而言,它也不起作用。本期的另一位發帖人在他的回答中寫道,這也不起作用,並且實際上鍊接到核心文件,其中指出實際上不可能可靠地設置頻率。
我的筆記型電腦的風扇最近已經清洗過,並且已經塗上了新的導熱膏,但正如我所說,這台機器很舊而且很熱。另一張海報建議將最大負載設置為較低的百分比,這確實有效,但不能解決我的問題,因為 CPU 仍然很熱。
有誰知道一種不同的、可靠的方法來限制 CPU 頻率?在前面提到的範例 Stellaris 中,我想我注意到 CPU 在載入遊戲時和我在主菜單中時試圖將頻率限制為 2.4GHz 的設定值。一旦我載入了保存文件並進入遊戲本身,它就會飆升至最大頻率。應用程序本身是否有可能覆蓋這些值?
有沒有人知道任何其他方法可以限制 CPU 達到如此高的溫度?例如,當 CPU 開始自我節流時,是否可以設置較低的溫度門檻值?
感謝Artem S. Tashkinov,我能夠解決這個問題。他在評論中寫道
嘗試使用 acpi-cpufreq 而不是 intel_pstate :https://silvae86.github.io/2020/06/13/switching-to-acpi-power
這就是訣竅。
我必須通過安裝
acpi_cpufreq
驅動程序(在我的情況下它已經安裝)apt-get
apt-get install acpi-support acpid acpi
並
/etc/default/grub
通過添加intel_pstate=disable
來編輯GRUB_CMDLINE_LINUX_DEFAULT
,就像這樣(在我的情況下):GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash debug intel_pstate=disable"
然後執行
update-grub
並重新啟動機器。因此,intel_pstate
驅動程序不再使用,acpi_cpufreq
而是使用它來代替。除了有更多的調速器可供選擇(你可以在這裡閱讀它們),最重要的是我現在可以打開ondemand
調速器並設置最小和最大頻率。它保持這種方式。在我的情況下,我使用cpupower frequency-set -g ondemand -d 1.2GHz -u 2.0GHz
到目前為止,機器還沒有變得太熱。
$$ edit $$ 在仍然遇到溫度問題後,我弄清楚了問題所在。這是 GPU 頻率和使用 3D 應用程序時仍然出現此問題的事實。
/sys/kernel/debug/dri/0/i915_ring_freq_table
您可以看到 GPU 可以執行的最大頻率對應於最大 CPU 頻率。設置 CPU 頻率後,GPU 頻率也必須在/sys/class/drm/card0/gt_max_freq_mhz
和 中進行調整/sys/class/drm/card0/gt_boost_freq_mhz
。