From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t 0/6] New performance recording/replay tools for i915-perf
Date: Mon, 17 Feb 2020 16:21:49 +0200 [thread overview]
Message-ID: <20200217142155.501499-1-lionel.g.landwerlin@intel.com> (raw)
Hi all,
i915-perf was added about 3 or 4 years ago (first released in 4.13).
At the time a new GPUTop [1] open source project was created to show
case the usefulness of the data exposed through i915-perf. Initially
GPUTop is entirely driven by traces coming from the GPU. Some effort
came along later to use perf traces (mostly tracepoints) to complete
the picture and connect the dots between GPU HW contexts and the
processes that triggered those contexts running.
About a year later Valve showcased another tool GPUvis [2]. GPUvis is
currently only driven by traces recorded on the CPU (ftrace on Linux)
but it's UI is undeniably better, showing a lot more information
coming off ftrace.
A few months ago Joonas thought it would be best to have GPUvis be the
tool we spend time improving rather than our own effort, and I came to
the same conclusion.
So what does this have to do IGT?
Well first, GPUvis is really only a few scripts around ftrace and some
parsing code for ftrace as well as a user interface. But it does not
deal directly with the kernel nor its drivers.
So a recording tool for the i915-perf data needs to live somewhere.
Right now this partly exists in GPUTop, except the data is never saved
anywhere, it just resides in memory (either on the machine being
monitored or the remote client inspecting the data).
Secondly, GPUTop is also the place where we store the HW
configurations for the Gen observation architecture as well as the
equations to make up human readable data out of HW register values. If
we're not going to invest much more effort into GPUTop, maybe it's a
good idea to more that part into a more lively project.
This series (probably too big for mail [3]) adds the following new
things to IGT :
* A new library libi915_perf.so that helps you :
* parse i915-perf data from low level reports into logical
counters (with name & description)
* a library to load a file in which was recorded i915-perf data
along with other bits of information (device id, topology,
timestamp correlation, etc...)
* A set of tools to deal with :
* HW configurations stored in i915
* recording i915-perf data into a file that can be replay with
the library mentioned above
* basic replaying of i915-perf data (mostly showing how to use
the library above)
Now with all this I have a GPUvis changes making use of this library &
recording tool [4].
Hopefully this explains what we're trying to do here.
Cheers,
[1] : https://github.com/rib/gputop
[2] : https://github.com/mikesart/gpuvis
[3] : https://github.com/djdeath/intel-gpu-tools/tree/review/i915-perf-tools
Lionel Landwerlin (6):
lib/intel_chipset: identify Elkhart Lake
Add i915_perf library
lib/i915: Add support for loading perf configurations
tools: add i915 perf recorder tool
lib: add i915 perf data reader
tools: add i915-perf-reader
lib/i915-perf.pc.in | 11 +
lib/i915/perf-configs/README.md | 115 +
lib/i915/perf-configs/codegen.py | 33 +
lib/i915/perf-configs/guids.xml | 319 +
lib/i915/perf-configs/mdapi-xml-convert.py | 1006 +
lib/i915/perf-configs/oa-bdw.xml | 15653 ++++++++++++++++
lib/i915/perf-configs/oa-bxt.xml | 9595 ++++++++++
lib/i915/perf-configs/oa-cflgt2.xml | 10866 +++++++++++
lib/i915/perf-configs/oa-cflgt3.xml | 10933 +++++++++++
lib/i915/perf-configs/oa-chv.xml | 9757 ++++++++++
lib/i915/perf-configs/oa-cnl.xml | 10411 ++++++++++
lib/i915/perf-configs/oa-glk.xml | 9346 +++++++++
lib/i915/perf-configs/oa-hsw.xml | 4615 +++++
lib/i915/perf-configs/oa-icl.xml | 11869 ++++++++++++
lib/i915/perf-configs/oa-kblgt2.xml | 10866 +++++++++++
lib/i915/perf-configs/oa-kblgt3.xml | 10933 +++++++++++
lib/i915/perf-configs/oa-lkf.xml | 11803 ++++++++++++
lib/i915/perf-configs/oa-sklgt2.xml | 11895 ++++++++++++
lib/i915/perf-configs/oa-sklgt3.xml | 10933 +++++++++++
lib/i915/perf-configs/oa-sklgt4.xml | 10956 +++++++++++
lib/i915/perf-configs/oa-tgl.xml | 8491 +++++++++
lib/i915/perf-configs/oa_guid_registry.py | 73 +
lib/i915/perf-configs/perf-codegen.py | 850 +
lib/i915/perf-configs/update-guids.py | 231 +
lib/i915/perf.c | 583 +
lib/i915/perf.h | 240 +
lib/i915/perf_data.h | 118 +
lib/i915/perf_data_reader.c | 383 +
lib/i915/perf_data_reader.h | 107 +
lib/intel_chipset.h | 1 +
lib/intel_device_info.c | 8 +-
lib/meson.build | 68 +
lib/tests/i915_perf_data_alignment.c | 40 +
lib/tests/meson.build | 1 +
tools/i915-perf/i915_perf_configs.c | 277 +
tools/i915-perf/i915_perf_control.c | 133 +
tools/i915-perf/i915_perf_reader.c | 279 +
tools/i915-perf/i915_perf_recorder.c | 1052 ++
tools/i915-perf/i915_perf_recorder_commands.h | 39 +
tools/i915-perf/meson.build | 22 +
tools/meson.build | 1 +
41 files changed, 174911 insertions(+), 1 deletion(-)
create mode 100644 lib/i915-perf.pc.in
create mode 100644 lib/i915/perf-configs/README.md
create mode 100644 lib/i915/perf-configs/codegen.py
create mode 100644 lib/i915/perf-configs/guids.xml
create mode 100755 lib/i915/perf-configs/mdapi-xml-convert.py
create mode 100644 lib/i915/perf-configs/oa-bdw.xml
create mode 100644 lib/i915/perf-configs/oa-bxt.xml
create mode 100644 lib/i915/perf-configs/oa-cflgt2.xml
create mode 100644 lib/i915/perf-configs/oa-cflgt3.xml
create mode 100644 lib/i915/perf-configs/oa-chv.xml
create mode 100644 lib/i915/perf-configs/oa-cnl.xml
create mode 100644 lib/i915/perf-configs/oa-glk.xml
create mode 100644 lib/i915/perf-configs/oa-hsw.xml
create mode 100644 lib/i915/perf-configs/oa-icl.xml
create mode 100644 lib/i915/perf-configs/oa-kblgt2.xml
create mode 100644 lib/i915/perf-configs/oa-kblgt3.xml
create mode 100644 lib/i915/perf-configs/oa-lkf.xml
create mode 100644 lib/i915/perf-configs/oa-sklgt2.xml
create mode 100644 lib/i915/perf-configs/oa-sklgt3.xml
create mode 100644 lib/i915/perf-configs/oa-sklgt4.xml
create mode 100644 lib/i915/perf-configs/oa-tgl.xml
create mode 100644 lib/i915/perf-configs/oa_guid_registry.py
create mode 100755 lib/i915/perf-configs/perf-codegen.py
create mode 100755 lib/i915/perf-configs/update-guids.py
create mode 100644 lib/i915/perf.c
create mode 100644 lib/i915/perf.h
create mode 100644 lib/i915/perf_data.h
create mode 100644 lib/i915/perf_data_reader.c
create mode 100644 lib/i915/perf_data_reader.h
create mode 100644 lib/tests/i915_perf_data_alignment.c
create mode 100644 tools/i915-perf/i915_perf_configs.c
create mode 100644 tools/i915-perf/i915_perf_control.c
create mode 100644 tools/i915-perf/i915_perf_reader.c
create mode 100644 tools/i915-perf/i915_perf_recorder.c
create mode 100644 tools/i915-perf/i915_perf_recorder_commands.h
create mode 100644 tools/i915-perf/meson.build
--
2.25.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next reply other threads:[~2020-02-17 14:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-17 14:21 Lionel Landwerlin [this message]
2020-02-17 14:21 ` [igt-dev] [PATCH i-g-t 1/6] lib/intel_chipset: identify Elkhart Lake Lionel Landwerlin
2020-02-18 18:47 ` Chris Wilson
2020-02-17 14:21 ` [igt-dev] [PATCH i-g-t 3/6] lib/i915: Add support for loading perf configurations Lionel Landwerlin
2020-02-18 18:52 ` Chris Wilson
2020-02-17 14:21 ` [igt-dev] [PATCH i-g-t 4/6] tools: add i915 perf recorder tool Lionel Landwerlin
2020-02-18 18:57 ` Chris Wilson
2020-02-18 19:25 ` Lionel Landwerlin
2020-02-18 19:36 ` Chris Wilson
2020-02-18 19:49 ` Lionel Landwerlin
2020-02-18 20:14 ` Lionel Landwerlin
2020-02-18 20:26 ` Chris Wilson
2020-02-17 14:21 ` [igt-dev] [PATCH i-g-t 5/6] lib: add i915 perf data reader Lionel Landwerlin
2020-02-17 14:21 ` [igt-dev] [PATCH i-g-t 6/6] tools: add i915-perf-reader Lionel Landwerlin
2020-02-17 14:27 ` [igt-dev] [PATCH i-g-t 0/6] New performance recording/replay tools for i915-perf Lionel Landwerlin
2020-02-18 18:46 ` Chris Wilson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200217142155.501499-1-lionel.g.landwerlin@intel.com \
--to=lionel.g.landwerlin@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox