From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Lightly tested (apart from patch 13) series to start the discussion early. Please skip patches 1-9, and probably 10-11 as well, those ones are the current PMU effort which is yet unmerged but needed as a basis for patches 12-17. Customer ask is to allow clients to query how much GPU engine time they are using per context. In patch 12 I add this, and then patch 13 I expose it via the context get param. (It feels like a slight misuse of get param though.) Patches 14-17 are not a customer ask as far as I know, but something I thought would be pretty cool. Basically bringing the ability to write a CPU top-like utility for GPU tasks. I've prototyped a quick demo of intel-client-top which produces output like: neverball[ 6011]: rcs0: 41.01% bcs0: 0.00% vcs0: 0.00% vecs0: 0.00% Xorg[ 5664]: rcs0: 31.16% bcs0: 0.00% vcs0: 0.00% vecs0: 0.00% xfwm4[ 5727]: rcs0: 0.00% bcs0: 0.00% vcs0: 0.00% vecs0: 0.00% As I say in the commit we could also extend this to show the overall engine busyness (via PMU), and also average load as queue-depth (also PMU), in the top header. Another potential use for the per-client infrastructure is tieing it up with perf PMU. At the moment our perf PMU are global counters only. With the per- client infrastructure it should be possible to make it work in the task mode as well and so enable GPU busyness profiling of single tasks. But this last part is not in this series, at least not yet. Tvrtko Ursulin (17): drm/i915: Extract intel_get_cagf drm/i915/pmu: Expose a PMU interface for perf queries drm/i915/pmu: Suspend sampling when GPU is idle drm/i915: Wrap context schedule notification drm/i915: Engine busy time tracking drm/i915/pmu: Wire up engine busy stats to PMU drm/i915/pmu: Add interrupt count metric drm/i915: Convert intel_rc6_residency_us to ns drm/i915/pmu: Add RC6 residency metrics drm/i915: Keep a count of requests waiting for a slot on GPU drm/i915/pmu: Add queued counter drm/i915: Track per-context engine busyness drm/i915: Allow clients to query own per-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/Makefile | 1 + drivers/gpu/drm/i915/i915_debugfs.c | 9 +- drivers/gpu/drm/i915/i915_drv.c | 3 + drivers/gpu/drm/i915/i915_drv.h | 39 +- drivers/gpu/drm/i915/i915_gem.c | 178 ++++++- drivers/gpu/drm/i915/i915_gem_context.c | 49 +- drivers/gpu/drm/i915/i915_gem_context.h | 5 + drivers/gpu/drm/i915/i915_gem_request.c | 6 + drivers/gpu/drm/i915/i915_pmu.c | 904 ++++++++++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_pmu.h | 112 ++++ drivers/gpu/drm/i915/i915_reg.h | 3 + drivers/gpu/drm/i915/i915_sysfs.c | 99 +++- drivers/gpu/drm/i915/intel_engine_cs.c | 128 ++++- drivers/gpu/drm/i915/intel_lrc.c | 25 +- drivers/gpu/drm/i915/intel_pm.c | 41 +- drivers/gpu/drm/i915/intel_ringbuffer.h | 167 ++++++ include/uapi/drm/i915_drm.h | 69 ++- 17 files changed, 1788 insertions(+), 50 deletions(-) create mode 100644 drivers/gpu/drm/i915/i915_pmu.c create mode 100644 drivers/gpu/drm/i915/i915_pmu.h -- 2.9.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx