Power gating Execution units of HD graphics using MSR

Power gating Execution units of HD graphics using MSR


Is it possible to power gate execution units of HD4600 through MSRs. Like how we can vary the number of active CPUs through BIOS, I would like to know whether is there any way to vary the number of active EUs in HD graphics?  I would like to do this in linux OS


2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Patrick Fay (Intel)'s picture

Hello GA,

You might be able to do use the MSR MSR_PP1_POWER_LIMIT to limit the graphics power but it looks quite complicated to do and I don't know anyone who has used these registers to limit the power. See the SDM 64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf section 14.9.4. MSR MSR_PP1_POLICY might change how much power graphics gets but I just don't know (haven't tried it).

If you are truly wanting to limit the number EU used, you would probably have to get the source for the Linux graphics driver (from 01.org) and build it with knobs to control the Execution Units used. This sounds like a lot of work to me.

You might have more luck just trying different workloads (with different sized windows) and see how much power the RAPL MSRs say is being used by the graphics unit. Workload is constant, you can see things like the frequency of the graphics unit. I don't know how tell how busy the graphics unit is... you can tell how idle it is (see the powertop utility display) but I have a hard time figuring out how busy it is.

There is a utility intel_gpu_top which tells who busy the gpu is but, when I run glmark with intel_gpu_top, my Ubuntu 4 ivybridge system crashes so beware.


Login to leave a comment.