Linux

為什麼我的 CPU 無視 cpupower 等設置的最大頻率,我怎樣才能讓我的 CPU 不至於過熱?

  • June 7, 2021

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 以上。現在這台筆記型電腦已經使用了八年多了,我不確定它能持續多久,所以我想

  1. 讓它持續盡可能長的時間,並且
  2. 減少噪音污染,因為風扇在高負載和溫度下會變得相當響亮。

幾年前有幾個州長可以用來做這件事,所以我很驚訝現在只有powersaveperformance。我試圖用來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

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