lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3f5f1075-49b3-3ba4-6392-cd0e6abf57d8@huawei.com>
Date:   Wed, 11 May 2022 12:13:29 +0100
From:   John Garry <john.garry@...wei.com>
To:     Ian Rogers <irogers@...gle.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Ingo Molnar <mingo@...hat.com>,
        Arnaldo Carvalho de Melo <acme@...nel.org>,
        Mark Rutland <mark.rutland@....com>,
        Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
        Jiri Olsa <jolsa@...nel.org>,
        "Namhyung Kim" <namhyung@...nel.org>,
        Kan Liang <kan.liang@...ux.intel.com>,
        Andi Kleen <ak@...ux.intel.com>,
        Zhengjun Xing <zhengjun.xing@...ux.intel.com>,
        "Felix Fietkau" <nbd@....name>, Qi Liu <liuqi115@...wei.com>,
        Like Xu <likexu@...cent.com>, <linux-kernel@...r.kernel.org>,
        <linux-perf-users@...r.kernel.org>,
        Nick Forrington <nick.forrington@....com>,
        Kajol Jain <kjain@...ux.ibm.com>,
        James Clark <james.clark@....com>,
        Andrew Kilroy <andrew.kilroy@....com>,
        "Paul A . Clarke" <pc@...ibm.com>, Will Deacon <will@...nel.org>,
        Mathieu Poirier <mathieu.poirier@...aro.org>,
        <ananth.narayan@....com>, <ravi.bangoria@....com>,
        <santosh.shukla@....com>, <sandipan.das@....com>,
        Caleb Biggers <caleb.biggers@...el.com>,
        Perry Taylor <perry.taylor@...el.com>,
        Kshipra Bopardikar <kshipra.bopardikar@...el.com>
CC:     Stephane Eranian <eranian@...gle.com>
Subject: Re: [PATCH 0/7] Rewrite jevents program in python

On 11/05/2022 08:01, 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).
> 

Hi Ian,

This does not build for me:

Auto-detecting system features:
...                         dwarf: [ on  ]
...            dwarf_getlocations: [ on  ]
...                         glibc: [ on  ]
...                        libbfd: [ OFF ]
...                libbfd-buildid: [ OFF ]
...                        libcap: [ on  ]
...                        libelf: [ on  ]
...                       libnuma: [ on  ]
...        numa_num_possible_cpus: [ on  ]
...                       libperl: [ on  ]
...                     libpython: [ on  ]
...                     libcrypto: [ on  ]
...                     libunwind: [ on  ]
...            libdw-dwarf-unwind: [ on  ]
...                          zlib: [ on  ]
...                          lzma: [ on  ]
...                     get_cpuid: [ on  ]
...                           bpf: [ on  ]
...                        libaio: [ on  ]
...                       libzstd: [ on  ]
...        disassembler-four-args: [ on  ]


make[3]: Nothing to be done for 'install_headers'.
  GEN     pmu-events/pmu-events.c
  CC      /home/john/acme/tools/perf/libbpf/staticobjs/libbpf.o
  LINK    dlfilters/dlfilter-test-api-v0.so
  CC      dlfilters/dlfilter-show-cycles.o
  CC      builtin-bench.o
Traceback (most recent call last):
  File "pmu-events/jevents.py", line 23, in <module>
    def file_name_to_table_name(parents: list[str], dirname: str) -> str:
TypeError: 'type' object is not subscriptable
make[3]: *** [pmu-events/Build:15: pmu-events/pmu-events.c] Error 1
make[2]: *** [Makefile.perf:662: pmu-events/pmu-events-in.o] Error 2
make[2]: *** Waiting for unfinished jobs....

What baseline do you use? It's always good to mention it I think.

> 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.

As you know (and have done), verifying no regression should be 
straightforward by diff'ing. For avoidance of doubt, which archs did you 
test? We also need to ensure those which don't use pmu-events (like 
arm32) work as before.

> 
> 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.

Thanks,
John

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ