[Intel-gfx] [RFC 00/13] 21st century intel_gpu_top
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Oct 10 11:49:47 UTC 2018
On 03/10/2018 13:03, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> A collection of patches which I have been sending before, sometimes together and
> sometimes separately, which enable intel_gpu_top to report queue depths (also
> translates as overall GPU load average) and per DRM client per engine busyness.
>
> This enables a fancy intel_gpu_top which looks like this (a picture is worth a
> thousand words):
>
> intel-gpu-top - load avg 3.30, 1.51, 0.08; 949/ 949 MHz; 0% RC6; 14.66 Watts; 3605 irqs/s
>
> IMC reads: 4651 MiB/s
> IMC writes: 25 MiB/s
>
> ENGINE BUSY Q r R MI_SEMA MI_WAIT
> Render/3D/0 61.51% |█████████████████████████████████████████████▌ | 3 0 1 0% 0%
> Blitter/0 0.00% | | 0 0 0 0% 0%
> Video/0 60.86% |█████████████████████████████████████████████ | 1 0 1 0% 0%
> Video/1 59.04% |███████████████████████████████████████████▋ | 1 0 1 0% 0%
> VideoEnhance/0 0.00% | | 0 0 0 0% 0%
>
> PID NAME Render/3D/0 Blitter/0 Video/0 Video/1 VideoEnhance/0
> 23373 gem_wsim |█████▎ || ||████████▍ ||█████▎ || |
> 23374 gem_wsim |███▉ || ||██▏ ||███ || |
> 23375 gem_wsim |███ || ||█▍ ||███▌ || |
>
> All of this work actually came to be via different feature requests not directly
> asking for this. Things like engine queue depth query and per context engine
> busyness ioctl. Those bits need userspace which is not there yet and so I have
> removed them from this posting to avoid confusion.
>
> What remains is a set of patches which add some PMU counters and a completely
> new sysfs interface to enable intel_gpu_top to read the per client stats.
>
> IGT counterpart will be sent separately.
FWIW at least one more person thinks this would be a nice to have
feature - https://twitter.com/IntelGraphics/status/1047991913972826112.
But it sure feels weird to cross-link twitter to intel-gfx! Sign of
times.. :)
Regards,
Tvrtko
>
> Tvrtko Ursulin (13):
> drm/i915/pmu: Fix enable count array size and bounds checking
> drm/i915: Keep a count of requests waiting for a slot on GPU
> drm/i915: Keep a count of requests submitted from userspace
> drm/i915/pmu: Add queued counter
> drm/i915/pmu: Add runnable counter
> drm/i915/pmu: Add running counter
> drm/i915: Store engine backpointer in the intel_context
> drm/i915: Move intel_engine_context_in/out into intel_lrc.c
> drm/i915: Track per-context engine busyness
> drm/i915: Expose list of clients in sysfs
> drm/i915: Update client name on context create
> drm/i915: Expose per-engine client busyness
> drm/i915: Add sysfs toggle to enable per-client engine stats
>
> drivers/gpu/drm/i915/i915_drv.h | 39 +++++
> drivers/gpu/drm/i915/i915_gem.c | 197 +++++++++++++++++++++++-
> drivers/gpu/drm/i915/i915_gem_context.c | 18 ++-
> drivers/gpu/drm/i915/i915_gem_context.h | 18 +++
> drivers/gpu/drm/i915/i915_pmu.c | 103 +++++++++++--
> drivers/gpu/drm/i915/i915_request.c | 10 ++
> drivers/gpu/drm/i915/i915_sysfs.c | 81 ++++++++++
> drivers/gpu/drm/i915/intel_engine_cs.c | 33 +++-
> drivers/gpu/drm/i915/intel_lrc.c | 109 ++++++++++++-
> drivers/gpu/drm/i915/intel_ringbuffer.h | 76 +++------
> include/uapi/drm/i915_drm.h | 19 ++-
> 11 files changed, 614 insertions(+), 89 deletions(-)
>
More information about the Intel-gfx
mailing list