Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6780036iob; Wed, 11 May 2022 05:18:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOyhtHabp8CsswtVpg4q3LgSgrBw4xusFDM3n04PTHd40WICghVpZApWqs1JCLPTZxXgbr X-Received: by 2002:a05:6402:e99:b0:41d:11f2:85e0 with SMTP id h25-20020a0564020e9900b0041d11f285e0mr28249877eda.339.1652271535657; Wed, 11 May 2022 05:18:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652271535; cv=none; d=google.com; s=arc-20160816; b=Lk+GQV2D2VCe+I3holTIvCY7gsBGySnsLdnyPAGO1MAf9439gPfT/G1mO9MCf84xE+ KyasdCQcZlnGSm+CSx5FUA3t1eX4qPSPGjxfSn4SYJ1pVB4MsWdUyoedNXKIWH+kvJ50 YxWcvFXHKF24X3Cz+dCQQxAjVXXNYhbrNRw0xI4SJCIbY5Mzg5zQsifVWowmR/hsmN81 Pug4HkjnwTSfCwJxg6WIHrgEGVccdZesDP5j32Svf2pF4af9HO1NePA1NiaNesoeQtUo +e7lTi/nIv3mbUIEcZwsvTw9pOUhSJ7iMYPRj4ls5OxLY+PH4jntRXHLNLgBe1wjz1ZY iJMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=s4zpff4XOM/YT3dUlktN7Noc2xWyyD926y38XeND0nQ=; b=mpgp2ujiXesN+kgCHzjcWa1FFtXx1unxbdjHLvBdiZa8bVSlI5zxtoBJD6LVDkZ92M M2QybnbGs4efEWv9cWnJgX8aSdHEWfWyWYMFgnscLZ1tHPu4tMgWU3Fo/wx3y3o0lJy6 J/f5BsDBMA7l1IBBGuYalv21ZPzguSOBYh6nfe1pkOjzoE7vT0oiHa/KNLZ5I73u43h3 v1XSKbc/gT0M+I/AwAPBv+z2eI2wmRyzg9Oi/8vy2J5QeI9FHfBuVJ2N+RRBkPW2zyAA lL4kLhtUAFA/IdoE5ivn1qQoJXp5664k6maC1JqpEOWZ6AsC7AjMLeIsl70CoHKOM1a8 Y6Nw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fm19-20020a1709072ad300b006f363ca1755si1911802ejc.921.2022.05.11.05.18.28; Wed, 11 May 2022 05:18:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240966AbiEKLNa (ORCPT + 99 others); Wed, 11 May 2022 07:13:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237622AbiEKLNV (ORCPT ); Wed, 11 May 2022 07:13:21 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 789901ED2B2; Wed, 11 May 2022 04:13:19 -0700 (PDT) Received: from fraeml709-chm.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4KysbL4Nfgz6H6sP; Wed, 11 May 2022 19:08:30 +0800 (CST) Received: from lhreml724-chm.china.huawei.com (10.201.108.75) by fraeml709-chm.china.huawei.com (10.206.15.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Wed, 11 May 2022 13:13:16 +0200 Received: from [10.47.91.186] (10.47.91.186) by lhreml724-chm.china.huawei.com (10.201.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2375.24; Wed, 11 May 2022 12:13:15 +0100 Message-ID: <3f5f1075-49b3-3ba4-6392-cd0e6abf57d8@huawei.com> Date: Wed, 11 May 2022 12:13:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH 0/7] Rewrite jevents program in python To: Ian Rogers , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , "Namhyung Kim" , Kan Liang , Andi Kleen , Zhengjun Xing , "Felix Fietkau" , Qi Liu , Like Xu , , , Nick Forrington , Kajol Jain , James Clark , Andrew Kilroy , "Paul A . Clarke" , Will Deacon , Mathieu Poirier , , , , , Caleb Biggers , Perry Taylor , Kshipra Bopardikar CC: Stephane Eranian References: <20220511070133.710721-1-irogers@google.com> From: John Garry In-Reply-To: <20220511070133.710721-1-irogers@google.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.47.91.186] X-ClientProxiedBy: lhreml705-chm.china.huawei.com (10.201.108.54) To lhreml724-chm.china.huawei.com (10.201.108.75) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-3.3 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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