Intel Exploring CPU+GPU Synchronized Priority Scheduling For Linux
Intel Linux driver developer Tvrtko Ursulin did a good job summing up his focus with the patches, so here is the key excerpt of what is being pursued and what is currently achieved with the set of six patches sent out today:
General idea is that current processing landscape seems to be more and more composed of pipelines where computations are done on multiple hardware devices. Furthermore some of the non-CPU devices, like in this case many GPUs supported by the i915 driver, actually support priority based scheduling which is currently rather inaccesible to the user (in terms of being able to control it from the outside).
From these two statements a question arises on how to allow for a simple, effective and consolidated user experience. In other words why user would not be able to do something like:
$ nice ffmmpeg ...transcode my videos...
And have the nice hint apply to GPU parts of the transcode pipeline as well?
Another reason why I started thinking about this is that I noticed Chrome browser for instance uses nice to de-prioritise background tabs. So again, having that decision propagate to the GPU rendering pipeline sounds like a big plus to the overall user experience.
This RFC implements this idea with the hairy part being the notifier chain I added to enable dynamic adjustments. It is a global notifier which raises a few questions so I am very curious what experts will think here. Please see the opens in the first patch for more on this. And also the last two patches are the ones which implement a hash table in i915 so it can associate the notifier call-back with the correct GPU rendering contexts.
Tvrtko's initial "request for comments" patches are working out and testing with adjusting the priority is having an impact as expected on the graphics performance, showing there is indeed room for improving the user experience. For now feedback is being sought on the design/approach from other kernel developers.
See this patch series for more details.