From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2833D6E05A for ; Mon, 17 Feb 2020 14:22:00 +0000 (UTC) From: Lionel Landwerlin Date: Mon, 17 Feb 2020 16:21:49 +0200 Message-Id: <20200217142155.501499-1-lionel.g.landwerlin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 0/6] New performance recording/replay tools for i915-perf List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: 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