Little Perf Improvements & User-Defined Priority Scheduling For Intel's DRM Driver
His latest series has "lots of nice little performance improvements" and also improve the relocation support within the DRM driver. As part of the series is also support for user-defined priority scheduling code for the Intel DRM driver.
Most of the 27 patches are small but also include some bigger patches like asynchronous GPU relocation processing. In terms of the user-defined priority scheduling, here's how Chris explains their approach:
This allows us to change the default priority on a per-context basis, allowing different contexts to be favoured with GPU time at the expense of lower importance work. The user can adjust the context's priority via I915_CONTEXT_PARAM_PRIORITY, with more positive values being higher priority (they will be serviced earlier, after their dependencies have been resolved). Any prerequisite work for an execbuf will have its priority raised to match the new request as required.This can be used then to wire up support for extensions like EGL_IMG_context_priority for nicely exposing priority level handling to clients.
Normal users can specify any value in the range of -1023 to 0 [default], i.e. they can reduce the priority of their workloads (and temporarily boost it back to normal if so desired).
Privileged users can specify any value in the range of -1023 to 1023, [default is 0], i.e. they can raise their priority above all overs and so potentially starve the system.
Note that the existing schedulers are not fair, nor load balancing, the execution is strictly by priority on a first-come, first-served basis, and the driver may choose to boost some requests above the range available to users.
These latest patches from Chris can be found on the intel-gfx list.