[Intel-gfx] [PATCH 2/2] drm/i915/pmu: Add queued counter
Chris Wilson
chris at chris-wilson.co.uk
Wed Nov 22 13:01:21 UTC 2017
Quoting Tvrtko Ursulin (2017-11-22 12:46:22)
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> We add a PMU counter to expose the number of requests currently submitted
> to the GPU, plus the number of runnable requests waiting on GPU time.
>
> This is useful to analyze the overall load of the system.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
> drivers/gpu/drm/i915/i915_pmu.c | 30 +++++++++++++++++++++++++-----
> include/uapi/drm/i915_drm.h | 6 ++++++
> 2 files changed, 31 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_pmu.c b/drivers/gpu/drm/i915/i915_pmu.c
> index 112243720ff3..b2b4b32af35f 100644
> --- a/drivers/gpu/drm/i915/i915_pmu.c
> +++ b/drivers/gpu/drm/i915/i915_pmu.c
> @@ -36,7 +36,8 @@
> #define ENGINE_SAMPLE_MASK \
> (BIT(I915_SAMPLE_BUSY) | \
> BIT(I915_SAMPLE_WAIT) | \
> - BIT(I915_SAMPLE_SEMA))
> + BIT(I915_SAMPLE_SEMA) | \
> + BIT(I915_SAMPLE_QUEUED))
>
> #define ENGINE_SAMPLE_BITS (1 << I915_PMU_SAMPLE_BITS)
>
> @@ -223,6 +224,12 @@ static void engines_sample(struct drm_i915_private *dev_priv)
>
> update_sample(&engine->pmu.sample[I915_SAMPLE_SEMA],
> PERIOD, !!(val & RING_WAIT_SEMAPHORE));
> +
> + if (engine->pmu.enable & BIT(I915_SAMPLE_QUEUED))
> + update_sample(&engine->pmu.sample[I915_SAMPLE_QUEUED],
> + 1 / I915_SAMPLE_QUEUED_SCALE,
> + engine->queued +
READ_ONCE(engine->queued) to indicate that this is outside of its lock.
Useful to indicate that we haven't serialised it with last_seqno. (And
no serialisation can be done against current_seqno ;)
-Chris
More information about the Intel-gfx
mailing list