From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Benjamin Gray <bgray@linux.ibm.com>,
Caleb Biggers <caleb.biggers@intel.com>,
Edward Baker <edward.baker@intel.com>,
Ingo Molnar <mingo@redhat.com>,
James Clark <james.clark@linaro.org>,
Jing Zhang <renyu.zj@linux.alibaba.com>,
Jiri Olsa <jolsa@kernel.org>,
John Garry <john.g.garry@oracle.com>, Leo Yan <leo.yan@arm.com>,
Namhyung Kim <namhyung@kernel.org>,
Perry Taylor <perry.taylor@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Samantha Alt <samantha.alt@intel.com>,
Sandipan Das <sandipan.das@amd.com>,
Thomas Falcon <thomas.falcon@intel.com>,
Weilin Wang <weilin.wang@intel.com>, Xu Yang <xu.yang_2@nxp.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v10 00/35] AMD and Intel metric generation with Python
Date: Tue, 27 Jan 2026 14:07:51 -0300 [thread overview]
Message-ID: <aXjw5_4PW9M3ZFgD@x1> (raw)
In-Reply-To: <20260108191105.695131-1-irogers@google.com>
On Thu, Jan 08, 2026 at 11:10:30AM -0800, Ian Rogers wrote:
> Metrics in the perf tool come in via json. Json doesn't allow
> comments, line breaks, etc. making it an inconvenient way to write
> metrics. Further, it is useful to detect when writing a metric that
> the event specified is supported within the event json for a
> model. From the metric python code Event(s) are used, with fallback
> events provided, if no event is found then an exception is thrown and
> that can either indicate a failure or an unsupported model. To avoid
> confusion all the metrics and their metricgroups are prefixed with
> 'lpm_', where LPM is an abbreviation of Linux Perf Metric. While extra
> characters aren't ideal, this separates the metrics from other vendor
> provided metrics.
>
> * The first 2 patches introduce infrastructure for the addition of
> metrics written in python for Arm64, AMD Zen and Intel CPUs.
Tried this one now:
Cover: ./v10_20260108_irogers_amd_and_intel_metric_generation_with_python.cover
Link: https://lore.kernel.org/r/20260108191105.695131-1-irogers@google.com
Base: not specified
git am ./v10_20260108_irogers_amd_and_intel_metric_generation_with_python.mbx
⬢ [acme@toolbx perf-tools-next]$ git am ./v10_20260108_irogers_amd_and_intel_metric_generation_with_python.mbx
Applying: perf jevents: Build support for generating metrics from python
error: patch failed: tools/perf/pmu-events/Build:29
error: tools/perf/pmu-events/Build: patch does not apply
Patch failed at 0001 perf jevents: Build support for generating metrics from python
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
⬢ [acme@toolbx perf-tools-next]$ git am --abort
⬢ [acme@toolbx perf-tools-next]$
Can you please take a look?
- Arnaldo
> * The next 9 patches generate additional metrics for AMD zen. Rapl
> and Idle metrics aren't specific to AMD but are placed here for ease
> and convenience. Uncore L3 metrics are added along with the majority
> of core metrics.
>
> * The next 22 patches add additional metrics for Intel. Rapl and Idle
> metrics aren't specific to Intel but are placed here for ease and
> convenience. Smi and tsx metrics are added so they can be dropped
> from the per model json files. There are four uncore sets of metrics
> and eleven core metrics. Add a CheckPmu function to metric to
> simplify detecting the presence of hybrid PMUs in events. Metrics
> with experimental events are flagged as experimental in their
> description.
>
> * The next patch adds a cycles metrics based on perf event modifiers
> for AMD, Intel and Arm64.
>
> * The final patch validates that all events provided to an Event
> object exist in a json file somewhere. This is to avoid mistakes
> like unfortunate typos.
>
> This series has benefitted from the input of Leo Yan
> <leo.yan@arm.com>, Sandipan Das <sandidas@amd.com>, Thomas Falcon
> <thomas.falcon@intel.com> and Perry Taylor <perry.taylor@intel.com>.
>
> v10. Drop already merged non-vendor patches (Namhyung). Drop "Add
> collection of topdown like metrics for arm64" as requested by
> James Clark. Update AMD metrics for changes to AMD Zen6 event
> names from the series:
> https://lore.kernel.org/lkml/cover.1767858676.git.sandipan.das@amd.com/
>
> v9. Drop (for now) 4 AMD sets of metrics for additional follow up. Add
> reviewed-by tags from Sandipan Das (AMD) and tested-by tags from
> Thomas Falcon (Intel).
> https://lore.kernel.org/lkml/20251202175043.623597-1-irogers@google.com/
>
> v8. Combine the previous 4 series for clarity. Rebase on top of the
> more recent legacy metric and event changes. Make the python more
> pep8 and pylint compliant.
> https://lore.kernel.org/lkml/20251113032040.1994090-1-irogers@google.com/
>
> Foundations:
> v6. Fix issue with '\-' escape not being '\\-' (reported-by Sandipan
> Das <sandidas@amd.com>) which didn't alter the generated json.
> https://lore.kernel.org/lkml/20250904043208.995243-1-irogers@google.com/
>
> v5. Rebase on top of legacy hardware/cache changes that now generate
> events using python:
> https://lore.kernel.org/lkml/20250828205930.4007284-1-irogers@google.com/
> the v5 series is:
> https://lore.kernel.org/lkml/20250829030727.4159703-1-irogers@google.com/
>
> v4. Rebase and small Build/Makefile tweak
> https://lore.kernel.org/lkml/20240926173554.404411-1-irogers@google.com/
>
> v3. Some code tidying, make the input directory a command line
> argument, but no other functional or output changes.
> https://lore.kernel.org/lkml/20240314055051.1960527-1-irogers@google.com/
>
> v2. Fixes two type issues in the python code but no functional or
> output changes.
> https://lore.kernel.org/lkml/20240302005950.2847058-1-irogers@google.com/
>
> v1. https://lore.kernel.org/lkml/20240302005950.2847058-1-irogers@google.com/
>
> AMD:
> v6. Fix issue with '\-' escape not being '\\-' (reported-by Sandipan
> Das <sandidas@amd.com>) which didn't alter the generated json.
> https://lore.kernel.org/lkml/20250904044047.999031-1-irogers@google.com/
>
> v5. Rebase. Add uop cache hit/miss rates patch. Prefix all metric
> names with lpm_ (short for Linux Perf Metric) so that python
> generated metrics are clearly namespaced.
> https://lore.kernel.org/lkml/20250829033138.4166591-1-irogers@google.com/
>
> v4. Rebase.
> https://lore.kernel.org/lkml/20240926174101.406874-1-irogers@google.com/
>
> v3. Some minor code cleanup changes.
> https://lore.kernel.org/lkml/20240314055839.1975063-1-irogers@google.com/
>
> v2. Drop the cycles breakdown in favor of having it as a common
> metric, suggested by Kan Liang <kan.liang@linux.intel.com>.
> https://lore.kernel.org/lkml/20240301184737.2660108-1-irogers@google.com/
>
> v1. https://lore.kernel.org/lkml/20240229001537.4158049-1-irogers@google.com/
>
> Intel:
> v6. Fix issue with '\-' escape not being '\\-' (reported-by Sandipan
> Das <sandidas@amd.com>) which didn't alter the generated json.
> https://lore.kernel.org/lkml/20250904044653.1002362-1-irogers@google.com/
>
> v5. Rebase. Fix description for smi metric (Kan). Prefix all metric
> names with lpm_ (short for Linux Perf Metric) so that python
> generated metrics are clearly namespaced. Kan requested a
> namespace in his review:
> https://lore.kernel.org/lkml/43548903-b7c8-47c4-b1da-0258293ecbd4@linux.intel.com/
> The v5 series is:
> https://lore.kernel.org/lkml/20250829041104.4186320-1-irogers@google.com/
>
> v4. Experimental metric descriptions. Add mesh bandwidth metric. Rebase.
> https://lore.kernel.org/lkml/20240926175035.408668-1-irogers@google.com/
>
> v3. Swap tsx and CheckPMU patches that were in the wrong order. Some
> minor code cleanup changes. Drop reference to merged fix for
> umasks/occ_sel in PCU events and for cstate metrics.
> https://lore.kernel.org/lkml/20240314055919.1979781-1-irogers@google.com/
>
> v2. Drop the cycles breakdown in favor of having it as a common
> metric, spelling and other improvements suggested by Kan Liang
> <kan.liang@linux.intel.com>.
> https://lore.kernel.org/lkml/20240301185559.2661241-1-irogers@google.com/
>
> v1. https://lore.kernel.org/lkml/20240229001806.4158429-1-irogers@google.com/
>
> ARM:
>
> v7. Switch a use of cycles to cpu-cycles due to ARM having too many
> cycles events.
> https://lore.kernel.org/lkml/20250904194139.1540230-1-irogers@google.com/
>
> v6. Fix issue with '\-' escape not being '\\-' (reported-by Sandipan
> Das <sandidas@amd.com>) which didn't alter the generated json.
> https://lore.kernel.org/lkml/20250904045253.1007052-1-irogers@google.com/
>
> v5. Rebase. Address review comments from Leo Yan
> <leo.yan@arm.com>. Prefix all metric names with lpm_ (short for
> Linux Perf Metric) so that python generated metrics are clearly
> namespaced. Use cpu-cycles rather than cycles legacy event for
> cycles metrics to avoid confusion with ARM PMUs. Add patch that
> checks events to ensure all possible event names are present in at
> least one json file.
> https://lore.kernel.org/lkml/20250829053235.21994-1-irogers@google.com/
>
> v4. Tweak to build dependencies and rebase.
> https://lore.kernel.org/lkml/20240926175709.410022-1-irogers@google.com/
>
> v3. Some minor code cleanup changes.
> https://lore.kernel.org/lkml/20240314055801.1973422-1-irogers@google.com/
>
> v2. The cycles metrics are now made common and shared with AMD and
> Intel, suggested by Kan Liang <kan.liang@linux.intel.com>. This
> assumes these patches come after the AMD and Intel sets.
> https://lore.kernel.org/lkml/20240301184942.2660478-1-irogers@google.com/
>
> v1. https://lore.kernel.org/lkml/20240229001325.4157655-1-irogers@google.com/
>
> Ian Rogers (35):
> perf jevents: Build support for generating metrics from python
> perf jevents: Add load event json to verify and allow fallbacks
> perf jevents: Add RAPL event metric for AMD zen models
> perf jevents: Add idle metric for AMD zen models
> perf jevents: Add upc metric for uops per cycle for AMD
> perf jevents: Add br metric group for branch statistics on AMD
> perf jevents: Add itlb metric group for AMD
> perf jevents: Add dtlb metric group for AMD
> perf jevents: Add uncore l3 metric group for AMD
> perf jevents: Add load store breakdown metrics ldst for AMD
> perf jevents: Add context switch metrics for AMD
> perf jevents: Add RAPL metrics for all Intel models
> perf jevents: Add idle metric for Intel models
> perf jevents: Add CheckPmu to see if a PMU is in loaded json events
> perf jevents: Add smi metric group for Intel models
> perf jevents: Mark metrics with experimental events as experimental
> perf jevents: Add tsx metric group for Intel models
> perf jevents: Add br metric group for branch statistics on Intel
> perf jevents: Add software prefetch (swpf) metric group for Intel
> perf jevents: Add ports metric group giving utilization on Intel
> perf jevents: Add L2 metrics for Intel
> perf jevents: Add load store breakdown metrics ldst for Intel
> perf jevents: Add ILP metrics for Intel
> perf jevents: Add context switch metrics for Intel
> perf jevents: Add FPU metrics for Intel
> perf jevents: Add Miss Level Parallelism (MLP) metric for Intel
> perf jevents: Add mem_bw metric for Intel
> perf jevents: Add local/remote "mem" breakdown metrics for Intel
> perf jevents: Add dir breakdown metrics for Intel
> perf jevents: Add C-State metrics from the PCU PMU for Intel
> perf jevents: Add local/remote miss latency metrics for Intel
> perf jevents: Add upi_bw metric for Intel
> perf jevents: Add mesh bandwidth saturation metric for Intel
> perf jevents: Add cycles breakdown metric for arm64/AMD/Intel
> perf jevents: Validate that all names given an Event
>
> tools/perf/.gitignore | 5 +
> tools/perf/Makefile.perf | 2 +
> tools/perf/pmu-events/Build | 51 +-
> tools/perf/pmu-events/amd_metrics.py | 492 ++++++++++
> tools/perf/pmu-events/arm64_metrics.py | 49 +
> tools/perf/pmu-events/common_metrics.py | 19 +
> tools/perf/pmu-events/intel_metrics.py | 1129 +++++++++++++++++++++++
> tools/perf/pmu-events/metric.py | 171 +++-
> 8 files changed, 1914 insertions(+), 4 deletions(-)
> create mode 100755 tools/perf/pmu-events/amd_metrics.py
> create mode 100755 tools/perf/pmu-events/arm64_metrics.py
> create mode 100644 tools/perf/pmu-events/common_metrics.py
> create mode 100755 tools/perf/pmu-events/intel_metrics.py
>
> --
> 2.52.0.457.g6b5491de43-goog
next prev parent reply other threads:[~2026-01-27 17:07 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-08 19:10 [PATCH v10 00/35] AMD and Intel metric generation with Python Ian Rogers
2026-01-08 19:10 ` [PATCH v10 01/35] perf jevents: Build support for generating metrics from python Ian Rogers
2026-01-08 19:10 ` [PATCH v10 02/35] perf jevents: Add load event json to verify and allow fallbacks Ian Rogers
2026-01-08 19:10 ` [PATCH v10 03/35] perf jevents: Add RAPL event metric for AMD zen models Ian Rogers
2026-01-08 19:10 ` [PATCH v10 04/35] perf jevents: Add idle " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 05/35] perf jevents: Add upc metric for uops per cycle for AMD Ian Rogers
2026-01-08 19:10 ` [PATCH v10 06/35] perf jevents: Add br metric group for branch statistics on AMD Ian Rogers
2026-01-08 19:10 ` [PATCH v10 07/35] perf jevents: Add itlb metric group for AMD Ian Rogers
2026-01-08 19:10 ` [PATCH v10 08/35] perf jevents: Add dtlb " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 09/35] perf jevents: Add uncore l3 " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 10/35] perf jevents: Add load store breakdown metrics ldst " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 11/35] perf jevents: Add context switch metrics " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 12/35] perf jevents: Add RAPL metrics for all Intel models Ian Rogers
2026-01-08 19:10 ` [PATCH v10 13/35] perf jevents: Add idle metric for " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 14/35] perf jevents: Add CheckPmu to see if a PMU is in loaded json events Ian Rogers
2026-01-08 19:10 ` [PATCH v10 15/35] perf jevents: Add smi metric group for Intel models Ian Rogers
2026-01-08 19:10 ` [PATCH v10 16/35] perf jevents: Mark metrics with experimental events as experimental Ian Rogers
2026-01-08 19:10 ` [PATCH v10 17/35] perf jevents: Add tsx metric group for Intel models Ian Rogers
2026-01-08 19:10 ` [PATCH v10 18/35] perf jevents: Add br metric group for branch statistics on Intel Ian Rogers
2026-01-08 19:10 ` [PATCH v10 19/35] perf jevents: Add software prefetch (swpf) metric group for Intel Ian Rogers
2026-01-08 19:10 ` [PATCH v10 20/35] perf jevents: Add ports metric group giving utilization on Intel Ian Rogers
2026-01-08 19:10 ` [PATCH v10 21/35] perf jevents: Add L2 metrics for Intel Ian Rogers
2026-01-08 19:10 ` [PATCH v10 22/35] perf jevents: Add load store breakdown metrics ldst " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 23/35] perf jevents: Add ILP metrics " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 24/35] perf jevents: Add context switch " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 25/35] perf jevents: Add FPU " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 26/35] perf jevents: Add Miss Level Parallelism (MLP) metric " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 27/35] perf jevents: Add mem_bw " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 28/35] perf jevents: Add local/remote "mem" breakdown metrics " Ian Rogers
2026-01-08 19:10 ` [PATCH v10 29/35] perf jevents: Add dir " Ian Rogers
2026-01-08 19:11 ` [PATCH v10 30/35] perf jevents: Add C-State metrics from the PCU PMU " Ian Rogers
2026-01-08 19:11 ` [PATCH v10 31/35] perf jevents: Add local/remote miss latency metrics " Ian Rogers
2026-01-08 19:11 ` [PATCH v10 32/35] perf jevents: Add upi_bw metric " Ian Rogers
2026-01-08 19:11 ` [PATCH v10 33/35] perf jevents: Add mesh bandwidth saturation " Ian Rogers
2026-01-08 19:11 ` [PATCH v10 34/35] perf jevents: Add cycles breakdown metric for arm64/AMD/Intel Ian Rogers
2026-01-08 19:11 ` [PATCH v10 35/35] perf jevents: Validate that all names given an Event Ian Rogers
2026-01-20 5:23 ` [PATCH v10 00/35] AMD and Intel metric generation with Python Ian Rogers
2026-01-23 17:12 ` Ian Rogers
2026-01-27 17:07 ` Arnaldo Carvalho de Melo [this message]
2026-01-27 18:09 ` Ian Rogers
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=aXjw5_4PW9M3ZFgD@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=bgray@linux.ibm.com \
--cc=caleb.biggers@intel.com \
--cc=edward.baker@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=perry.taylor@intel.com \
--cc=peterz@infradead.org \
--cc=renyu.zj@linux.alibaba.com \
--cc=samantha.alt@intel.com \
--cc=sandipan.das@amd.com \
--cc=thomas.falcon@intel.com \
--cc=weilin.wang@intel.com \
--cc=xu.yang_2@nxp.com \
/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