From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: James Clark <james.clark@linaro.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Xu Yang <xu.yang_2@nxp.com>, Chun-Tse Shao <ctshao@google.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Sumanth Korikkar <sumanthk@linux.ibm.com>,
Collin Funk <collin.funk1@gmail.com>,
Thomas Falcon <thomas.falcon@intel.com>,
Howard Chu <howardchu95@gmail.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>,
Levi Yun <yeoreum.yun@arm.com>,
Yang Li <yang.lee@linux.alibaba.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Andi Kleen <ak@linux.intel.com>,
Weilin Wang <weilin.wang@intel.com>, Leo Yan <leo.yan@arm.com>
Subject: Re: [PATCH v4 03/18] perf jevents: Add set of common metrics based on default ones
Date: Sat, 15 Nov 2025 09:52:06 -0800 [thread overview]
Message-ID: <aRi9xnwdLh3Dir9f@google.com> (raw)
In-Reply-To: <CAP-5=fWNr9oaxWy3PyqbeH-sjsPpSt9g=8vP0drbb_e+ijpWkw@mail.gmail.com>
On Fri, Nov 14, 2025 at 08:57:39AM -0800, Ian Rogers wrote:
> On Fri, Nov 14, 2025 at 8:28 AM James Clark <james.clark@linaro.org> wrote:
> >
> >
> >
> > On 11/11/2025 9:21 pm, Ian Rogers wrote:
> > > Add support to getting a common set of metrics from a default
> > > table. It simplifies the generation to add json metrics at the same
> > > time. The metrics added are CPUs_utilized, cs_per_second,
> > > migrations_per_second, page_faults_per_second, insn_per_cycle,
> > > stalled_cycles_per_instruction, frontend_cycles_idle,
> > > backend_cycles_idle, cycles_frequency, branch_frequency and
> > > branch_miss_rate based on the shadow metric definitions.
> > >
> > > Following this change the default perf stat output on an alderlake
> > > looks like:
> > > ```
> > > $ perf stat -a -- sleep 2
> > >
> > > Performance counter stats for 'system wide':
> > >
> > > 0.00 msec cpu-clock # 0.000 CPUs utilized
> > > 77,739 context-switches
> > > 15,033 cpu-migrations
> > > 321,313 page-faults
> > > 14,355,634,225 cpu_atom/instructions/ # 1.40 insn per cycle (35.37%)
> > > 134,561,560,583 cpu_core/instructions/ # 3.44 insn per cycle (57.85%)
> > > 10,263,836,145 cpu_atom/cycles/ (35.42%)
> > > 39,138,632,894 cpu_core/cycles/ (57.60%)
> > > 2,989,658,777 cpu_atom/branches/ (42.60%)
> > > 32,170,570,388 cpu_core/branches/ (57.39%)
> > > 29,789,870 cpu_atom/branch-misses/ # 1.00% of all branches (42.69%)
> > > 165,991,152 cpu_core/branch-misses/ # 0.52% of all branches (57.19%)
> > > (software) # nan cs/sec cs_per_second
> > > TopdownL1 (cpu_core) # 11.9 % tma_bad_speculation
> > > # 19.6 % tma_frontend_bound (63.97%)
> > > TopdownL1 (cpu_core) # 18.8 % tma_backend_bound
> > > # 49.7 % tma_retiring (63.97%)
> > > (software) # nan faults/sec page_faults_per_second
> > > # nan GHz cycles_frequency (42.88%)
> > > # nan GHz cycles_frequency (69.88%)
> > > TopdownL1 (cpu_atom) # 11.7 % tma_bad_speculation
> > > # 29.9 % tma_retiring (50.07%)
> > > TopdownL1 (cpu_atom) # 31.3 % tma_frontend_bound (43.09%)
> > > (cpu_atom) # nan M/sec branch_frequency (43.09%)
> > > # nan M/sec branch_frequency (70.07%)
> > > # nan migrations/sec migrations_per_second
> > > TopdownL1 (cpu_atom) # 27.1 % tma_backend_bound (43.08%)
> > > (software) # 0.0 CPUs CPUs_utilized
> > > # 1.4 instructions insn_per_cycle (43.04%)
> > > # 3.5 instructions insn_per_cycle (69.99%)
> > > # 1.0 % branch_miss_rate (35.46%)
> > > # 0.5 % branch_miss_rate (65.02%)
> > >
> > > 2.005626564 seconds time elapsed
> > > ```
> > >
> > > Signed-off-by: Ian Rogers <irogers@google.com>
> > > ---
> > > .../arch/common/common/metrics.json | 86 +++++++++++++
> > > tools/perf/pmu-events/empty-pmu-events.c | 115 +++++++++++++-----
> > > tools/perf/pmu-events/jevents.py | 21 +++-
> > > tools/perf/pmu-events/pmu-events.h | 1 +
> > > tools/perf/util/metricgroup.c | 31 +++--
> > > 5 files changed, 212 insertions(+), 42 deletions(-)
> > > create mode 100644 tools/perf/pmu-events/arch/common/common/metrics.json
> > >
> > > diff --git a/tools/perf/pmu-events/arch/common/common/metrics.json b/tools/perf/pmu-events/arch/common/common/metrics.json
> > > new file mode 100644
> > > index 000000000000..d915be51e300
> > > --- /dev/null
> > > +++ b/tools/perf/pmu-events/arch/common/common/metrics.json
> > > @@ -0,0 +1,86 @@
> > > +[
> > > + {
> > > + "BriefDescription": "Average CPU utilization",
> > > + "MetricExpr": "(software@cpu\\-clock\\,name\\=cpu\\-clock@ if #target_cpu else software@task\\-clock\\,name\\=task\\-clock@) / (duration_time * 1e9)",
> >
> > Hi Ian,
> >
> > I noticed that this metric is making "perf stat tests" fail.
> > "duration_time" is a tool event and they don't work with "perf stat
> > record" anymore. The test tests the record command with the default args
> > which results in this event being used and a failure.
> >
> > I suppose there are three issues. First two are unrelated to this change:
> >
> > - Perf stat record continues to write out a bad perf.data file even
> > though it knows that tool events won't work.
> >
> > For example 'status' ends up being -1 in cmd_stat() but it's ignored
> > for some of the writing parts. It does decide to not print any stdout
> > though:
> >
> > $ perf stat record -e "duration_time"
> > <blank>
> >
> > - The other issue is obviously that tool events don't work with perf
> > stat record which seems to be a regression from 6828d6929b76 ("perf
> > evsel: Refactor tool events")
> >
> > - The third issue is that this change adds a broken tool event to the
> > default output of perf stat
> >
> > I'm not actually sure what "perf stat record" is for? It's possible that
> > it's not used anymore, expecially if nobody noticed that tool events
> > haven't been working in it for a while.
> >
> > I think we're also supposed to have json output for perf stat (although
> > this is also broken in some obscure scenarios), so maybe perf stat
> > record isn't needed anymore?
>
> Hi James,
>
> Thanks for the report. I think this is also an overlap with perf stat
> metrics don't work with perf stat record, and because these changes
> made that the default. Let me do some follow up work as the perf
> script work shows we can do useful things with metrics while not being
> on a live perf stat - there's the obstacle that the CPUID of the host
> will be used :-/
>
> Anyway, I'll take a look and we should add a test on this. There is
> one that the perf stat json output is okay, to some definition. One
> problem is that the stat-display code is complete spaghetti. Now that
> stat-shadow only handles json metrics, and perf script isn't trying to
> maintain a set of shadow counters, that is a little bit improved.
I have another test failure on this. On my AMD machine, perf all
metrics test fails due to missing "LLC-loads" events.
$ sudo perf stat -M llc_miss_rate true
Error:
No supported events found.
The LLC-loads event is not supported.
Maybe we need to make some cache metrics conditional as some events are
missing.
Thanks,
Namhyung
next prev parent reply other threads:[~2025-11-15 17:52 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-11 21:21 [PATCH v4 00/18] Ian Rogers
2025-11-11 21:21 ` [PATCH v4 01/18] perf metricgroup: Add care to picking the evsel for displaying a metric Ian Rogers
2025-11-11 21:21 ` [PATCH v4 02/18] perf expr: Add #target_cpu literal Ian Rogers
2025-11-11 21:21 ` [PATCH v4 03/18] perf jevents: Add set of common metrics based on default ones Ian Rogers
2025-11-14 16:28 ` James Clark
2025-11-14 16:57 ` Ian Rogers
2025-11-15 17:52 ` Namhyung Kim [this message]
2025-11-16 3:29 ` Ian Rogers
2025-11-18 1:36 ` Namhyung Kim
2025-11-18 2:28 ` Ian Rogers
2025-11-18 7:29 ` Namhyung Kim
2025-11-18 10:57 ` James Clark
2025-11-11 21:21 ` [PATCH v4 04/18] perf jevents: Add metric DefaultShowEvents Ian Rogers
2025-11-11 21:21 ` [PATCH v4 05/18] perf stat: Add detail -d,-dd,-ddd metrics Ian Rogers
2025-11-11 21:21 ` [PATCH v4 06/18] perf script: Change metric format to use json metrics Ian Rogers
2025-11-11 21:21 ` [PATCH v4 07/18] perf stat: Remove hard coded shadow metrics Ian Rogers
2025-11-11 21:21 ` [PATCH v4 08/18] perf stat: Fix default metricgroup display on hybrid Ian Rogers
2025-11-11 21:21 ` [PATCH v4 09/18] perf stat: Sort default events/metrics Ian Rogers
2025-11-11 21:21 ` [PATCH v4 10/18] perf stat: Remove "unit" workarounds for metric-only Ian Rogers
2025-11-11 21:21 ` [PATCH v4 11/18] perf test stat+json: Improve metric-only testing Ian Rogers
2025-11-11 21:22 ` [PATCH v4 12/18] perf test stat: Ignore failures in Default[234] metricgroups Ian Rogers
2025-11-11 21:22 ` [PATCH v4 13/18] perf test stat: Update std_output testing metric expectations Ian Rogers
2025-11-11 21:22 ` [PATCH v4 14/18] perf test metrics: Update all metrics for possibly failing default metrics Ian Rogers
2025-11-11 21:22 ` [PATCH v4 15/18] perf test stat: Update shadow test to use metrics Ian Rogers
2025-11-11 21:22 ` [PATCH v4 16/18] perf test stat: Update test expectations and events Ian Rogers
2025-11-11 21:22 ` [PATCH v4 17/18] perf test stat csv: " Ian Rogers
2025-11-11 21:22 ` [PATCH v4 18/18] perf tool_pmu: Make core_wide and target_cpu json events Ian Rogers
2025-11-11 22:42 ` [PATCH v4 00/18] Namhyung Kim
2025-11-11 23:13 ` Ian Rogers
2025-11-12 1:08 ` Namhyung Kim
2025-11-12 8:20 ` Mi, Dapeng
2025-11-12 9:03 ` Mi, Dapeng
2025-11-12 17:56 ` Namhyung Kim
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=aRi9xnwdLh3Dir9f@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=collin.funk1@gmail.com \
--cc=ctshao@google.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=howardchu95@gmail.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--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=peterz@infradead.org \
--cc=sumanthk@linux.ibm.com \
--cc=thomas.falcon@intel.com \
--cc=tmricht@linux.ibm.com \
--cc=weilin.wang@intel.com \
--cc=xu.yang_2@nxp.com \
--cc=yang.lee@linux.alibaba.com \
--cc=yeoreum.yun@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.