[Intel-gfx] [PATCH] drm/i915: Add background commentary to "waitboosting"

Daniel Vetter daniel at ffwll.ch
Fri Dec 11 10:24:29 PST 2015


On Thu, Dec 10, 2015 at 10:37:36AM +0000, Chris Wilson wrote:
> Describe the intent of boosting the GPU frequency to maximum before
> waiting on the GPU.
> 
> RPS waitboosting was introduced with
> 
> commit b29c19b645287f7062e17d70fa4e9781a01a5d88
> Author: Chris Wilson <chris at chris-wilson.co.uk>
> Date:   Wed Sep 25 17:34:56 2013 +0100
> 
>     drm/i915: Boost RPS frequency for CPU stalls
> 
> but lacked a concise comment in the code to explain itself.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

We might want to consolidate this with the kerneldoc for gen6_rps_boost,
if that ever happens. But for now this is a good place.

Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

> ---
>  drivers/gpu/drm/i915/i915_gem.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index ece7e2908fa3..40a7ade4eafe 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1248,6 +1248,22 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
>  	}
>  
>  	trace_i915_gem_request_wait_begin(req);
> +
> +	/* This client is about to stall waiting for the GPU. In many cases
> +	 * this is undesirable and limits the throughput of the system, as
> +	 * many clients cannot continue processing user input/output whilst
> +	 * asleep. RPS autotuning may take tens of milliseconds to respond
> +	 * to the GPU load and thus incurs additional latency for the client.
> +	 * We can circumvent that promoting the GPU frequency to maximum
> +	 * before we wait. This makes GPU throttle up much more quickly
> +	 * (good for benchmarks), but at a cost of spending more power
> +	 * processing the workload (bad for battery). Not all clients even
> +	 * want their results immediately and for them we should just let
> +	 * the GPU select its own frequency to maximise efficiency.
> +	 * To prevent a single client from forcing the clocks too high for
> +	 * the whole system, we only allow each client to waitboost once
> +	 * in a busy period.
> +	 */
>  	if (INTEL_INFO(req->i915)->gen >= 6)
>  		gen6_rps_boost(req->i915, rps, req->emitted_jiffies);
>  
> -- 
> 2.6.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list