[PATCH v3 00/11] Enable Gen 7 Observation Architecture
Robert Bragg
robert at sixbynine.org
Mon Aug 15 14:41:17 UTC 2016
Mostly just a rebase on a more recent nightly, except for an update to how
POLLIN events are reported to reduce the CPU overhead that was otherwise seen
while running gputop.
The problem seen with poll was largely a fault with gputop having multiple
redundant 200ms, but out-of-phase, timers tracked in its mainloop resulting in
excessive poll wake ups due to timeouts. This was fixed, but still it
highlighted that the per-fd code that runs after a poll wait wakes (regardless
of the cause of the wake up) can easily become hot and i915 mmio reads here can
quickly jump to the top of a cpu profile.
The main value of the i915-perf poll implementation is for throttling more than
for having a quick notification of new data, so it works nicely to only rely on
the hrtimer callback that's polling for new data to be the thing that flags
POLLIN events and check for that after the wait without any mmio.
Just to plug gputop as a tool for visualising these metrics with, I'm now
automatically publishing a demo of the interface via Travis to
http://gputop.github.io which is also usable with local targets if you point a
browser at E.g.: http://gputop.github.io?target=localhost while you have the
gputop server running. Apologies that currently the demo site on its own (not
connected to real hardware) doesn't show much since it doesn't have any fake
metric values to graph, though it is possible to at least browse the different
platform metric sets and selecting individual counters will show the
description + normalization equation. Having the web UI hosted on github
hopefully lowers the bar to trying it out since it avoids needing to set up
Emscripten first as a build dependency.
Regards,
- Robert
Robert Bragg (11):
drm/i915: Add i915 perf infrastructure
drm/i915: rename OACONTROL GEN7_OACONTROL
drm/i915: return EACCES for check_cmd() failures
drm/i915: don't whitelist oacontrol in cmd parser
drm/i915: Add 'render basic' Haswell OA unit config
drm/i915: Enable i915 perf stream for Haswell OA unit
drm/i915: advertise available metrics via sysfs
drm/i915: Add dev.i915.perf_event_paranoid sysctl option
drm/i915: add oa_event_min_timer_exponent sysctl
drm/i915: Add more Haswell OA metric sets
drm/i915: Add a kerneldoc summary for i915_perf.c
drivers/gpu/drm/i915/Makefile | 4 +
drivers/gpu/drm/i915/i915_cmd_parser.c | 40 +-
drivers/gpu/drm/i915/i915_drv.c | 6 +
drivers/gpu/drm/i915/i915_drv.h | 157 +++
drivers/gpu/drm/i915/i915_gem_context.c | 22 +-
drivers/gpu/drm/i915/i915_oa_hsw.c | 659 +++++++++++++
drivers/gpu/drm/i915/i915_oa_hsw.h | 38 +
drivers/gpu/drm/i915/i915_perf.c | 1615 +++++++++++++++++++++++++++++++
drivers/gpu/drm/i915/i915_reg.h | 340 ++++++-
drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +-
include/uapi/drm/i915_drm.h | 133 +++
11 files changed, 2979 insertions(+), 42 deletions(-)
create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.c
create mode 100644 drivers/gpu/drm/i915/i915_oa_hsw.h
create mode 100644 drivers/gpu/drm/i915/i915_perf.c
--
2.9.2
More information about the dri-devel
mailing list