I have run into a bit of trouble trying to force the Intel HD4000 iGPU to run at a lower clock speed to save power.

What I have tried so far:

  • Seems to "stick" but has no real effect from my testing:

    echo 350 > /sys/kernel/debug/dri/0/i915_max_freq
  • Using https://github.com/jmechnich/intel-power-control to control the clock speeds. Setting the maximum clock speed to 350MHz would work when no load was on the iGPU but loading some graphics-heavy workload (like a WebGL demo in the browser) would instantly push the current clock speed to 1250MHz. Minimum and maximum are still reported as 350MHz, though. Edit: project maintainer has introduced a fix to this issue, changing the clocks works now.

  • Monitoring iGPU load with intel-gpu-overlay (part of package intel-gpu-tools) , in idle workloads the clock speed was at 350MHz but any load causes either short bursts to 1250MHz or in longer heavy loads constant 1250MHz load.

Tested on Arch Linux, kernel 4.13.11-1-ARCH, Thinkpad T430 with Intel i7-3820QM CPU with Intel HD4000, no dGPU.

Is there something I'm missing here? What else can I try to force the iGPU to not clock higher than 350MHz?


The correct way of doing this is by using these two commands:

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 is the minimum frequency that the iGPU supports.

gt_boost_freq_mhz controls the boost clock (default 1250MHz)

gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)

Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:

cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock

cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock

cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock

If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).

Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay: intel-gpu-overlay results

This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.


Reddit post by user qgnox

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.