[Intel-gfx] [PATCH] drm/i915/selftests: Reduce oversaturation of request smoketesting

Andi Shyti andi.shyti at linux.intel.com
Thu Nov 3 10:20:19 UTC 2022


Hi Nirmoy,

On Wed, Nov 02, 2022 at 04:57:09PM +0100, Nirmoy Das wrote:
> From: Chris Wilson <chris at chris-wilson.co.uk>
> 
> The goal in launching the request smoketest is to have sufficient tasks
> running across the system such that we are likely to detect concurrency
> issues. We aim to have 2 tasks using the same engine, gt, device (each
> level of locking around submission and signaling) running at the same
> time. While tasks may not be running all the time as they synchronise
> with the gpu, they will be running most of the time, in which case
> having many more tasks than cores available is wasteful (and
> dramatically increases the workload causing excess runtime). Aim to
> limit the number of tasks such that there is at least 2 running per
> engine, spreading surplus cores around the engines (rather than running
> a task per core per engine.)
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

Pushed in intel-drm-gt-next.

Thanks,
Andi

> ---
>  drivers/gpu/drm/i915/selftests/i915_request.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c
> index a46350c37e9d..4380473ceb98 100644
> --- a/drivers/gpu/drm/i915/selftests/i915_request.c
> +++ b/drivers/gpu/drm/i915/selftests/i915_request.c
> @@ -1710,7 +1710,8 @@ static int live_breadcrumbs_smoketest(void *arg)
>  {
>  	struct drm_i915_private *i915 = arg;
>  	const unsigned int nengines = num_uabi_engines(i915);
> -	const unsigned int ncpus = num_online_cpus();
> +	const unsigned int ncpus = /* saturate with nengines * ncpus */
> +		max_t(int, 2, DIV_ROUND_UP(num_online_cpus(), nengines));
>  	unsigned long num_waits, num_fences;
>  	struct intel_engine_cs *engine;
>  	struct smoke_thread *threads;
> @@ -1782,7 +1783,7 @@ static int live_breadcrumbs_smoketest(void *arg)
>  			goto out_flush;
>  		}
>  		/* One ring interleaved between requests from all cpus */
> -		smoke[idx].max_batch /= num_online_cpus() + 1;
> +		smoke[idx].max_batch /= ncpus + 1;
>  		pr_debug("Limiting batches to %d requests on %s\n",
>  			 smoke[idx].max_batch, engine->name);
>  
> -- 
> 2.38.0


More information about the Intel-gfx mailing list