[PATCH v3 0/6] drm/xe: Per client usage
Lucas De Marchi
lucas.demarchi at intel.com
Tue May 7 22:45:04 UTC 2024
Add per-client usage statistics to xe. This ports xe to use the common
method in drm to export the usage to userspace per client (where 1
client == 1 drm fd open).
However instead of using the current format measured in nsec, this
creates a new one. The intention here is not to mix the GPU clock domain
with the CPU clock. It allows to cover a few more use cases without
extra complications.
I tested this on DG2 and also checked gputop with i915 to make sure not
regressed. Last patch also contains the documentation for the new key
and sample output as requested in v1. Reproducing it partially here:
- drm-total-cycles-<keystr>: <uint>
Engine identifier string must be the same as the one specified in the
drm-cycles-<keystr> tag and shall contain the total number cycles for the given
engine.
This is a timestamp in GPU unspecified unit that matches the update rate
of drm-cycles-<keystr>. For drivers that implement this interface, the engine
utilization can be calculated entirely on the GPU clock domain, without
considering the CPU sleep time between 2 samples.
The pre-existent drm-cycles-<keystr> is used as is, which allows gputop
to work with xe.
This last patch still has some open discussion from v2, so we may need
to hold it a little more.
Test-with: 20240504064643.25863-1-lucas.demarchi at intel.com
v2:
- Create a new drm-total-cycles instead of re-using drm-engine with a
different unit
- Add documentation for the new interface and clarify usage of
xe_lrc_update_timestamp()
v3:
- Fix bugs in "drm/xe: Add helper to accumulate exec queue runtime" -
see commit message
- Reorder commits so the ones that are useful in other patch series
come first
Lucas De Marchi (4):
drm/xe: Promote xe_hw_engine_class_to_str()
drm/xe: Add XE_ENGINE_CLASS_OTHER to str conversion
drm/xe: Add helper to capture engine timestamp
drm/xe/client: Print runtime to fdinfo
Umesh Nerlige Ramappa (2):
drm/xe/lrc: Add helper to capture context timestamp
drm/xe: Add helper to accumulate exec queue runtime
Documentation/gpu/drm-usage-stats.rst | 16 ++-
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe-drm-usage-stats.rst | 10 ++
drivers/gpu/drm/xe/regs/xe_lrc_layout.h | 1 +
drivers/gpu/drm/xe/xe_device_types.h | 9 ++
drivers/gpu/drm/xe/xe_drm_client.c | 136 +++++++++++++++++-
drivers/gpu/drm/xe/xe_exec_queue.c | 35 +++++
drivers/gpu/drm/xe/xe_exec_queue.h | 1 +
drivers/gpu/drm/xe/xe_execlist.c | 1 +
drivers/gpu/drm/xe/xe_guc_submit.c | 2 +
drivers/gpu/drm/xe/xe_hw_engine.c | 27 ++++
drivers/gpu/drm/xe/xe_hw_engine.h | 3 +
drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c | 18 ---
drivers/gpu/drm/xe/xe_lrc.c | 11 ++
drivers/gpu/drm/xe/xe_lrc.h | 14 ++
drivers/gpu/drm/xe/xe_lrc_types.h | 3 +
16 files changed, 267 insertions(+), 21 deletions(-)
create mode 100644 Documentation/gpu/xe/xe-drm-usage-stats.rst
--
2.43.0
More information about the Intel-xe
mailing list