Messages in this thread | | | From | Ian Rogers <> | Date | Fri, 17 Jun 2022 18:41:50 -0700 | Subject | Re: [PATCH v6 0/4] Rewrite jevents program in python |
| |
On Fri, Jun 17, 2022 at 5:23 PM Xing Zhengjun <zhengjun.xing@linux.intel.com> wrote: > > Hi Ian, > > On 6/18/2022 8:09 AM, Ian Rogers wrote: > > 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). If the build detects that python isn't present or is older > > than version 3.6 (released Dec. 2016) then an empty file is > > substituted for the generated one. > > > > 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. > > > > v6. Fixes an annotation and use of removesuffix that aren't present in > > Python 3.6. Linter issues are also fixed.The code was tested on > > Python 3.6 and 3.8 with docker. > > I just test it, now it can be built successfully with python 3.8.
Great! Tested-by/Reviewed-by/Acked-by always welcome :-)
Ian
> > v5. Adds a 2>/dev/null as suggested by David Laight > > <David.Laight@aculab.com>. > > v4. Fixes the build for systems with python2 installed by adding a > > patch that makes python3 the preferred python (Reported-by: John > > Garry <john.garry@huawei.com>). It also fixes a bash-ism in the > > jevents-test.sh and fixes the handling of an empty string for a > > metric BriefDescription as one was added for sapphirerapids in the > > metric Execute. > > v3. Updates the patches for merged changes (on > > acme/tmp.perf/core). Re-runs all comparisons to make sure the > > generated pmu-events.c isn't altered at all by this change. Adds > > the jevents.c ExtSel fix in: > > https://lore.kernel.org/lkml/20220525140410.1706851-1-zhengjun.xing@linux.intel.com/ > > Bumps the python version from 3.5 to 3.6, as f-strings weren't > > introduced until 3.6. > > > > v2. Fixes the build for architectures that don't have pmu-events json > > (Suggested-by: John Garry <john.garry@huawei.com>) and fixes the > > build for python not being present or too old (Suggested-by: Peter > > Zijlstra <peterz@infradead.org>/John Garry <john.garry@huawei.com>). > > > > Ian Rogers (4): > > perf python: Prefer python3 > > perf jevents: Add python converter script > > perf jevents: Switch build to use jevents.py > > perf jevents: Remove jevents.c > > > > tools/perf/Makefile.config | 27 +- > > tools/perf/Makefile.perf | 16 +- > > tools/perf/pmu-events/Build | 15 +- > > tools/perf/pmu-events/empty-pmu-events.c | 21 + > > tools/perf/pmu-events/jevents.c | 1342 ---------------------- > > tools/perf/pmu-events/jevents.py | 409 +++++++ > > tools/perf/pmu-events/jsmn.h | 68 -- > > tools/perf/pmu-events/json.c | 162 --- > > tools/perf/pmu-events/json.h | 39 - > > 9 files changed, 465 insertions(+), 1634 deletions(-) > > create mode 100644 tools/perf/pmu-events/empty-pmu-events.c > > 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 > > > > -- > Zhengjun Xing
| |