Intel Linux Graphics Driver Patches For Fast Soft-RC6 Yield Big Energy Use Improvement

Written by Michael Larabel in Intel on 19 November 2019 at 03:53 AM EST. 6 Comments
INTEL
Longtime open-source Intel Linux graphics driver developer Chris Wilson has sent out a set of 19 patches for what he calls fast soft-RC6 support and is a "substantial" improvement over the current driver code for Intel graphics power-savings.

Chris simply wrote at the start of the patch series, "In my very simple testing of scrolling through firefox, this brings up back into line with HW rc6 energy usage, a substantial improvement over current -tip."

That's enough to make me intrigued! He didn't provide any hard data on the "substantial" improvement compared to the previous RC6 power-savings state.

When digging through the patches he explained one of the issues with the current Intel Linux driver code prior to these patches:
The major drawback of commit 7e34f4e4aad3 ("drm/i915/gen8+: Add RC6 CTX corruption WA") is that it disables RC6 while Skylake (and friends) is active, and we do not consider the GPU idle until all outstanding requests have been retired and the engine switched over to the kernel context. If userspace is idle, this task falls onto our background idle worker, which only runs roughly once a second, meaning that userspace has to have been idle for a couple of seconds before we enable RC6 again. Naturally, this causes us to consume considerably more energy than before as powersaving is effectively disabled while a display server (here's looking at you Xorg) is running.

As execlists will get a completion event as the last context is completed and the GPU goes idle, we can use our submission tasklet to notice when the GPU is idle and kick the retire worker. Thus during light workloads, we will do much more work to idle the GPU faster... Hopefully with commensurate power saving!

The patches also now track engine round-trip times for better determining between slow systems or potentially hung engines and other improvements.

The work is too late for appearing as a feature for the upcoming 5.5 merge window, but since it is fixing a regression after all stemming from RC6 power savings breakage, perhaps we'll still see these patches materialize in the forthcoming kernel cycle. Stay tuned and some fresh power benchmarks as soon as I find the extra time.

Update: More information on the change and its reasoning.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week