From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
John Garry <john.garry@huawei.com>,
Kan Liang <kan.liang@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>,
Zhengjun Xing <zhengjun.xing@linux.intel.com>,
Felix Fietkau <nbd@nbd.name>, Qi Liu <liuqi115@huawei.com>,
Like Xu <likexu@tencent.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Nick Forrington <nick.forrington@arm.com>,
Kajol Jain <kjain@linux.ibm.com>,
James Clark <james.clark@arm.com>,
Andrew Kilroy <andrew.kilroy@arm.com>,
"Paul A . Clarke" <pc@us.ibm.com>, Will Deacon <will@kernel.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
ananth.narayan@amd.com, ravi.bangoria@amd.com,
santosh.shukla@amd.com, sandipan.das@amd.com,
Caleb Biggers <caleb.biggers@intel.com>,
Perry Taylor <perry.taylor@intel.com>,
Kshipra Bopardikar <kshipra.bopardikar@intel.com>
Cc: Stephane Eranian <eranian@google.com>, Ian Rogers <irogers@google.com>
Subject: [PATCH 0/7] Rewrite jevents program in python
Date: Wed, 11 May 2022 00:01:26 -0700 [thread overview]
Message-ID: <20220511070133.710721-1-irogers@google.com> (raw)
New architectures bring new complexity, such as Intel's hybrid
models. jevents provides an alternative to specifying events in the
kernel and exposing them through sysfs, however, it is difficult to
work with. For example, an error in the json input would yield an
error message but no json file or location. It is also a challenge to
update jsmn.c given its forked nature.
The changes here switch from jevents.c to a rewrite in python called
jevents.py. This means there is a build time dependency on python, but
such a dependency already exists for asciidoc (used to generate perf's
man pages).
A challenge with this code is in avoiding regressions. For this reason
the jevents.py produces identical output to jevents.c, validated with a
test script and build target.
A difference in the python to the C approach is that the python loads
an entire json file in to memory, while the C code works from token to
token. In some cases the C approach was sensitive to the order of
dictionary items in the json file. To ensure matching output there are
two changes made to jevents.c to cause it to read all values before
creating output.
The changes also found a bug in Ivytown's UNC_M_ACT_COUNT.RD event
encoding, as well as unnecessary whitespace introduced in Alderlake's
metrics. In these cases the json input is fixed.
Ian Rogers (7):
perf jevents: Append PMU description later
perf vendor events: Fix Alderlake metric groups
perf vendor events: Fix Ivytown UNC_M_ACT_COUNT.RD umask
perf jevents: Modify match field
perf jevents: Add python converter script
perf jevents: Switch build to use jevents.py
perf jevents: Remove jevents.c
tools/perf/Makefile.perf | 13 +-
tools/perf/pmu-events/Build | 9 +-
.../arch/x86/alderlake/adl-metrics.json | 32 -
.../arch/x86/ivytown/uncore-memory.json | 3 +-
tools/perf/pmu-events/jevents.c | 1322 -----------------
tools/perf/pmu-events/jevents.py | 392 +++++
tools/perf/pmu-events/jsmn.h | 68 -
tools/perf/pmu-events/json.c | 162 --
tools/perf/pmu-events/json.h | 39 -
tools/perf/tests/pmu-events.c | 30 +-
10 files changed, 412 insertions(+), 1658 deletions(-)
delete mode 100644 tools/perf/pmu-events/jevents.c
create mode 100755 tools/perf/pmu-events/jevents.py
delete mode 100644 tools/perf/pmu-events/jsmn.h
delete mode 100644 tools/perf/pmu-events/json.c
delete mode 100644 tools/perf/pmu-events/json.h
--
2.36.0.512.ge40c2bad7a-goog
next reply other threads:[~2022-05-11 7:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-11 7:01 Ian Rogers [this message]
2022-05-11 7:01 ` [PATCH 1/7] perf jevents: Append PMU description later Ian Rogers
2022-05-11 7:01 ` [PATCH 2/7] perf vendor events: Fix Alderlake metric groups Ian Rogers
2022-05-11 7:01 ` [PATCH 3/7] perf vendor events: Fix Ivytown UNC_M_ACT_COUNT.RD umask Ian Rogers
2022-05-11 7:01 ` [PATCH 4/7] perf jevents: Modify match field Ian Rogers
2022-05-11 7:43 ` Xing Zhengjun
2022-05-11 17:26 ` Ian Rogers
2022-05-11 7:01 ` [PATCH 5/7] perf jevents: Add python converter script Ian Rogers
2022-05-11 7:01 ` [PATCH 6/7] perf jevents: Switch build to use jevents.py Ian Rogers
2022-05-11 7:01 ` [PATCH 7/7] perf jevents: Remove jevents.c Ian Rogers
2022-05-11 7:35 ` [PATCH 0/7] Rewrite jevents program in python Peter Zijlstra
2022-05-11 13:50 ` Ian Rogers
2022-05-11 13:56 ` Peter Zijlstra
2022-05-11 14:00 ` Ian Rogers
2022-05-11 11:13 ` John Garry
2022-05-11 13:58 ` 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=20220511070133.710721-1-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ananth.narayan@amd.com \
--cc=andrew.kilroy@arm.com \
--cc=caleb.biggers@intel.com \
--cc=eranian@google.com \
--cc=james.clark@arm.com \
--cc=john.garry@huawei.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kjain@linux.ibm.com \
--cc=kshipra.bopardikar@intel.com \
--cc=likexu@tencent.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=liuqi115@huawei.com \
--cc=mark.rutland@arm.com \
--cc=mathieu.poirier@linaro.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=nbd@nbd.name \
--cc=nick.forrington@arm.com \
--cc=pc@us.ibm.com \
--cc=perry.taylor@intel.com \
--cc=peterz@infradead.org \
--cc=ravi.bangoria@amd.com \
--cc=sandipan.das@amd.com \
--cc=santosh.shukla@amd.com \
--cc=will@kernel.org \
--cc=zhengjun.xing@linux.intel.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;
as well as URLs for NNTP newsgroup(s).