Linux
如何阻止英特爾 HD4000 以最大時鐘速度執行?
我在嘗試強制 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-s(Intel HD 3000 和更新版本),但需要進行測試。
來源: