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

Das, Nirmoy nirmoy.das at intel.com
Thu Nov 3 08:43:38 UTC 2022


On 11/2/2022 4:57 PM, 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>

Reviewed-by: Nirmoy Das <nirmoy.das at intel.com>

Tested-by: Nirmoy Das <nirmoy.das at intel.com>

Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>


Nirmoy

> ---
>   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);
>   


More information about the Intel-gfx mailing list