Re: [PATCH v20 00/20] perf, tools: Add support for PMU events in JSON format
From: Jiri Olsa <hidden>
Date: 2016-08-31 11:43:28
Also in:
lkml
On Mon, Jun 20, 2016 at 09:02:30PM -0700, Sukadev Bhattiprolu wrote:
CPUs support a large number of performance monitoring events (PMU events) and often these events are very specific to an architecture/model of the CPU. To use most of these PMU events with perf, we currently have to identify them by their raw codes: perf stat -e r100f2 sleep 1 This patchset allows architectures to specify these PMU events in JSON files located in 'tools/perf/pmu-events/arch/' of the mainline tree. The events from the JSON files for the architecture are then built into the perf binary. At run time, perf identifies the specific set of events for the CPU and creates "event aliases". These aliases allow users to specify events by "name" as: perf stat -e pm_1plus_ppc_cmpl sleep 1 The file, 'tools/perf/pmu-events/README' in [PATCH 16/16] gives more details. Note: - All known events tables for the architecture are included in the perf binary. - For architectures that don't have any JSON files, an empty mapping table is created and they should continue to build. Thanks to input from Andi Kleen, Jiri Olsa, Namhyung Kim and Ingo Molnar. These patches are available from: https://github.com/sukadev/linux.git Branch Description ------------------------------------------------------ json-code-v20 Source Code only json-data-v20 x86 and Powerpc datafiles only json-code+data-v20 Both code and data (for build/test) NOTE: Only "source code" patches (i.e those in json-code-v20) are being emailed. Please pull the "data files" from the json-data-v20 branch. Changelog[v20] - Rebase to recent perf/core - Add Patch 20/20 to allow perf-stat to work with the period= field
hi, I had discussion with Ingo about the state of this patchset and there's one more requirement from his side - to split event files into per topic files I made some initial changes over latest Sukadev's branch and came up with something like this: $ find pmu-events/arch/x86/ pmu-events/arch/x86/ pmu-events/arch/x86/NehalemEX_core pmu-events/arch/x86/NehalemEX_core/Memory.json pmu-events/arch/x86/NehalemEX_core/Virtual-Memory.json pmu-events/arch/x86/NehalemEX_core/Cache.json pmu-events/arch/x86/NehalemEX_core/Pipeline.json pmu-events/arch/x86/NehalemEX_core/Floating-point.json pmu-events/arch/x86/NehalemEX_core/Other.json pmu-events/arch/x86/mapfile.csv pmu-events/arch/x86/Broadwell_core pmu-events/arch/x86/Broadwell_core/Memory.json pmu-events/arch/x86/Broadwell_core/Virtual-Memory.json pmu-events/arch/x86/Broadwell_core/Cache.json pmu-events/arch/x86/Broadwell_core/Pipeline.json pmu-events/arch/x86/Broadwell_core/Floating-point.json pmu-events/arch/x86/Broadwell_core/Other.json pmu-events/arch/x86/Broadwell_core/Frontend.json so let's have a discussion if this is acceptable for you guys I've already made some changes in pmu-events/* to support this hierarchy to see how bad the change would be.. and it's not that bad ;-) you can check followin patches (only 2 Intel files transformed): 1d5ffa8bb969 perf, tools: Change jevents 65919f8901e3 perf, tools: Split Broadwell_core.json 7cd309a85465 perf, tools: Add Broadwell V14 event file e316aff2dd4e perf, tools: Split NehalemEX_core.json e19e8de49408 perf, tools: Add NehalemEX V1 event file It's available in: git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git perf/json thanks, jirka