Re: [PATCH v3 0/5] Event parsing fixes

From: Ian Rogers
Date: Tue May 21 2024 - 16:49:01 EST


On Mon, May 13, 2024 at 9:48 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
>
> On Thu, May 9, 2024 at 10:38 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
> >
> > For the default events, parse from strings rather than use pre-cooked
> > perf_event_attr. This fixes non-x86 heterogeneous CPUs where legacy
> > hardware events wouldn't be opened for all PMUs. v2 was previously
> > just patch 3 but it is extended in v3 to incorporate related fixes.
> >
> > When a sysfs/json event is used in preference to a legacy event, allow
> > evsel__match to still function using a saved hardware config
> > number. This fixes hard coded metrics in stat-shadow for events like
> > "instructions" on Intel that have a sysfs file.
> >
> > Fix/improve uniquifying event names fixing the test "102: perf stat
> > metrics (shadow stat) test:" that was broken by a formatting issue
> > when the sysfs instructions event was used.
> >
> > Having evsel->pmu_name and evsel->pmu->name is confusing, get rid of
> > the former. Fix/improve evsel__sys_has_perf_metrics in the process.
> >
> > Ian Rogers (5):
> > perf evsel: Add alternate_hw_config and use in evsel__match
> > perf stat: Uniquify event name improvements
> > perf stat: Remove evlist__add_default_attrs use strings
> > perf evsel x86: Make evsel__has_perf_metrics work for legacy events
> > perf evsel: Remove pmu_name
>
> Hopefully the first 3 patches here can be a priority given the fixes.

Testing:
https://lore.kernel.org/lkml/20240521192614.3937942-1-acme@xxxxxxxxxx/
git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools.git
tags/perf-tools-for-v6.10-1-2024-05-21

I see this failure:
```
102: perf stat metrics (shadow stat) test:
--- start ---
test child forked, pid 785992
IPC is different: 1.31 != (2725291544 / 2085879817)
---- end(-1) ----
```
Which is addressed in the first 3 patches here.

Thanks,
Ian

> Thanks,
> Ian
>
> > tools/perf/arch/x86/util/evlist.c | 74 +-------
> > tools/perf/arch/x86/util/evsel.c | 35 +++-
> > tools/perf/builtin-diff.c | 6 +-
> > tools/perf/builtin-stat.c | 291 ++++++++++++------------------
> > tools/perf/tests/parse-events.c | 2 +-
> > tools/perf/util/evlist.c | 46 +----
> > tools/perf/util/evlist.h | 12 --
> > tools/perf/util/evsel.c | 28 ++-
> > tools/perf/util/evsel.h | 22 +--
> > tools/perf/util/metricgroup.c | 4 +-
> > tools/perf/util/parse-events.c | 52 ++++--
> > tools/perf/util/parse-events.h | 6 +
> > tools/perf/util/pmu.c | 6 +-
> > tools/perf/util/pmu.h | 2 +-
> > tools/perf/util/stat-display.c | 101 ++++++++---
> > tools/perf/util/stat-shadow.c | 14 +-
> > tools/perf/util/stat.c | 2 +-
> > 17 files changed, 305 insertions(+), 398 deletions(-)
> >
> > --
> > 2.45.0.118.g7fe29c98d7-goog
> >