Linux

如何阻止英特爾 HD4000 以最大時鐘速度執行?

  • November 15, 2017

我在嘗試強制 Intel HD4000 iGPU 以較低的時鐘速度執行以節省電力時遇到了一些麻煩。

到目前為止我已經嘗試過:

  • 似乎“堅持”但對我的測試沒有實際影響:
echo 350 > /sys/kernel/debug/dri/0/i915_max_freq
  • 使用https://github.com/jmechnich/intel-power-control來控制時鐘速度。將最大時鐘速度設置為 350MHz 將在 iGPU 上沒有負載但載入一些圖形繁重的工作負載(如瀏覽器中的 WebGL 展示)時會立即將目前時鐘速度推至 1250MHz。不過,最小值和最大值仍報告為 350MHz。 編輯:項目維護者已經對這個問題進行了修復,現在可以更改時鐘了。
  • 使用 intel-gpu-overlay(包的一部分intel-gpu-tools)監控 iGPU 負載,在空閒工作負載中,時鐘速度為 350MHz,但任何負載都會導致短時間突發到 1250MHz,或者在更長的重負載中保持 1250MHz 負載。

在 Arch Linux、核心 4.13.11-1-ARCH、Thinkpad T430 和 Intel i7-3820QM CPU 和 Intel HD4000 上測試,沒有 dGPU。

我在這裡缺少什麼嗎?我還能嘗試什麼來強制 iGPU 的時鐘頻率不高於 350MHz?

執行此操作的正確方法是使用以下兩個命令:

echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz

350 是 iGPU 支持的最低頻率。

gt_boost_freq_mhz控制升壓時鐘(預設 1250MHz)

gt_max_freq_mhz控制標稱最大時鐘速度(預設 650MHz)

注意:最大和升壓時鐘可能因型號而異。使用以下內容找出您支持的提升、最大和最小時鐘速度:

cat /sys/class/drm/card0/gt_RP0_freq_mhz用於升壓時鐘

cat /sys/class/drm/card0/gt_RP1_freq_mhz最大時鐘

cat /sys/class/drm/card0/gt_RPn_freq_mhz最小時鐘

如果升壓時鐘高於最大時鐘速度,則 GPU 很可能以升壓時鐘速度(預設 1250MHz)執行。

這是將升壓和最大時鐘設置為 800MHz 並在負載下一段時間後設置為 350MHz 的範例。頻率和功率使用明顯下降在覆蓋圖的左下角: 英特爾 GPU 覆蓋結果

這可能適用於其他 GPU-s(Intel HD 3000 和更新版本),但需要進行測試。

來源:

使用者 qgnox 發布的 Reddit 文章

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