public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [RFC 00/17] Per-context and per-client engine busyness
@ 2017-10-25 15:36 Tvrtko Ursulin
  2017-10-25 15:36 ` [RFC 01/17] drm/i915: Extract intel_get_cagf Tvrtko Ursulin
                   ` (18 more replies)
  0 siblings, 19 replies; 30+ messages in thread
From: Tvrtko Ursulin @ 2017-10-25 15:36 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2017-10-27  0:12 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-25 15:36 [RFC 00/17] Per-context and per-client engine busyness Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 01/17] drm/i915: Extract intel_get_cagf Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 02/17] drm/i915/pmu: Expose a PMU interface for perf queries Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 03/17] drm/i915/pmu: Suspend sampling when GPU is idle Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 04/17] drm/i915: Wrap context schedule notification Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 05/17] drm/i915: Engine busy time tracking Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 06/17] drm/i915/pmu: Wire up engine busy stats to PMU Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 07/17] drm/i915/pmu: Add interrupt count metric Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 08/17] drm/i915: Convert intel_rc6_residency_us to ns Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 09/17] drm/i915/pmu: Add RC6 residency metrics Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 10/17] drm/i915: Keep a count of requests waiting for a slot on GPU Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 11/17] drm/i915/pmu: Add queued counter Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 12/17] drm/i915: Track per-context engine busyness Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 13/17] drm/i915: Allow clients to query own per-engine busyness Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 14/17] drm/i915: Expose list of clients in sysfs Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 15/17] drm/i915: Update client name on context create Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 16/17] drm/i915: Expose per-engine client busyness Tvrtko Ursulin
2017-10-25 15:36 ` [RFC 17/17] drm/i915: Add sysfs toggle to enable per-client engine stats Tvrtko Ursulin
2017-10-25 15:47 ` [RFC 00/17] Per-context and per-client engine busyness Chris Wilson
2017-10-25 17:38   ` Chris Wilson
2017-10-26  7:34     ` Tvrtko Ursulin
2017-10-26  7:51       ` Chris Wilson
2017-10-26  9:50       ` Lionel Landwerlin
2017-10-26 10:10         ` Chris Wilson
2017-10-26 13:00         ` Tvrtko Ursulin
2017-10-26 13:05           ` Chris Wilson
2017-10-26 17:13             ` Lionel Landwerlin
2017-10-26 20:11               ` Chris Wilson
2017-10-27  0:12                 ` Lionel Landwerlin
2017-10-25 17:06 ` ✗ Fi.CI.BAT: failure for " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox