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?