[Intel-gfx] [PATCH 0/9] Per client engine busyness
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Mar 18 12:16:16 UTC 2020
On 18/03/2020 11:01, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> Another re-spin of the per-client engine busyness series. Highlights from this
> version:
>
Broken version with one patch missing, apologies for the spam.
Regards,
Tvrtko
> * Checkpatch cleanup and bits of review feedback only.
>
> Internally we track time spent on engines for each struct intel_context. This
> can serve as a building block for several features from the want list:
> smarter scheduler decisions, getrusage(2)-like per-GEM-context functionality
> wanted by some customers, cgroups controller, dynamic SSEU tuning,...
>
> Externally, in sysfs, we expose time spent on GPU per client and per engine
> class.
>
> Sysfs interface enables us to implement a "top-like" tool for GPU tasks. Or with
> a "screenshot":
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> intel-gpu-top - 906/ 955 MHz; 0% RC6; 5.30 Watts; 933 irqs/s
>
> IMC reads: 4414 MiB/s
> IMC writes: 3805 MiB/s
>
> ENGINE BUSY MI_SEMA MI_WAIT
> Render/3D/0 93.46% |████████████████████████████████▋ | 0% 0%
> Blitter/0 0.00% | | 0% 0%
> Video/0 0.00% | | 0% 0%
> VideoEnhance/0 0.00% | | 0% 0%
>
> PID NAME Render/3D Blitter Video VideoEnhance
> 2733 neverball |██████▌ || || || |
> 2047 Xorg |███▊ || || || |
> 2737 glxgears |█▍ || || || |
> 2128 xfwm4 | || || || |
> 2047 Xorg | || || || |
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Implementation wise we add a a bunch of files in sysfs like:
>
> # cd /sys/class/drm/card0/clients/
> # tree
> .
> ├── 7
> │ ├── busy
> │ │ ├── 0
> │ │ ├── 1
> │ │ ├── 2
> │ │ └── 3
> │ ├── name
> │ └── pid
> ├── 8
> │ ├── busy
> │ │ ├── 0
> │ │ ├── 1
> │ │ ├── 2
> │ │ └── 3
> │ ├── name
> │ └── pid
> └── 9
> ├── busy
> │ ├── 0
> │ ├── 1
> │ ├── 2
> │ └── 3
> ├── name
> └── pid
>
> Files in 'busy' directories are numbered using the engine class ABI values and
> they contain accumulated nanoseconds each client spent on engines of a
> respective class.
>
> It is stil a RFC since it misses dedicated test cases to ensure things really
> work as advertised.
>
> Tvrtko Ursulin (9):
> drm/i915: Update client name on context create
> drm/i915: Make GEM contexts track DRM clients
> drm/i915: Use explicit flag to mark unreachable intel_context
> drm/i915: Track runtime spent in unreachable intel_contexts
> drm/i915: Track runtime spent in closed GEM contexts
> drm/i915: Track all user contexts per client
> drm/i915: Expose per-engine client busyness
> drm/i915: Track context current active time
> drm/i915: Prefer software tracked context busyness
>
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 63 +++-
> .../gpu/drm/i915/gem/i915_gem_context_types.h | 21 +-
> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +-
> drivers/gpu/drm/i915/gt/intel_context.c | 18 +-
> drivers/gpu/drm/i915/gt/intel_context.h | 6 +-
> drivers/gpu/drm/i915/gt/intel_context_types.h | 25 +-
> drivers/gpu/drm/i915/gt/intel_lrc.c | 55 +++-
> drivers/gpu/drm/i915/gt/selftest_lrc.c | 10 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 29 +-
> drivers/gpu/drm/i915/i915_drm_client.c | 274 +++++++++++++++++-
> drivers/gpu/drm/i915/i915_drm_client.h | 33 ++-
> drivers/gpu/drm/i915/i915_gpu_error.c | 25 +-
> 12 files changed, 473 insertions(+), 88 deletions(-)
>
More information about the Intel-gfx
mailing list