Message ID | 20221216143609.186415-1-acme@kernel.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp1002263wrn; Fri, 16 Dec 2022 06:38:19 -0800 (PST) X-Google-Smtp-Source: AA0mqf4yuzOttBOZrcUW/9ET1YUn+ZeF6/ogU2qDYqACFZtskPlQnm7OCkUdOjBTBvqtGANRI0+Q X-Received: by 2002:a17:902:bb98:b0:188:bed6:3fba with SMTP id m24-20020a170902bb9800b00188bed63fbamr31937564pls.3.1671201499186; Fri, 16 Dec 2022 06:38:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671201499; cv=none; d=google.com; s=arc-20160816; b=1IrSGCQ7Z3cgOyVJHMsL619Z5mPtVT967BHvyLUKbI+hCOZjtk/mFa4b0Q1NrmwvHq gTuCCIUyVz55dgYMLskvbChon5BtiuKGhPMAErHpIl3HrPyaBL5Zzm8xMl4d3wItDrcq LSBiMb6xgd/CwerH9q0tLe22bmbxDYyw7du3nFjeinPxr16F1/q3fR99GSQ8q75uUcWW XKmpEw1X3NJ4ISw3oDK3kOr6rSvA5ER5Rj7+a/lx0HG+F2Ye8ppNB6p+/Bv9uRprI4hT pfj4Jkgsa0d2zRVcREfNGVn8Q5l0xHUx0EXEyMNcLBUkKesEtTzgNAB9+6YTgZUWhRvQ lqdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=PUls47u4p1ZiogDAYzDVULQ/tJ6ndhldan/qpMPq+wQ=; b=NYogaWtmAuZKi877kse3Kb4VYp6zDR5mj+aiV56sI7rHT3lS6FKxgZg0XPX6bEbXCa Ow41WxhYobxiW6UbMZpzgmDkBcB8+C1w6MUK7Gl7VAKSd4mP6hVLP3l5muejoVN9mY6l mMenURvuzpMXTWqTlV7/SoNNKcK4VoL2D9nxJVRrhZlc7yRmF/6h+d8ojpJ6wnTzChdZ jQFF3rLTti/QJBMqlSE5c75wHKUIplmpp0WmIhbgD0hlp+7ctud/XKIr4K3gliMA3DNq AsOrKhXFM4oqLG+ybeSeJeKPEoyILrkF1Oky2OdeBInoUkfziFl57SJTxTBshZHrKcPQ IjNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qX+Uc1gC; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i12-20020a170902cf0c00b00189ac5a3b1fsi2860119plg.158.2022.12.16.06.38.06; Fri, 16 Dec 2022 06:38:19 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qX+Uc1gC; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230283AbiLPOg3 (ORCPT <rfc822;jeantsuru.cumc.mandola@gmail.com> + 99 others); Fri, 16 Dec 2022 09:36:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229620AbiLPOgY (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 16 Dec 2022 09:36:24 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCB3D26A88; Fri, 16 Dec 2022 06:36:20 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4C3C862115; Fri, 16 Dec 2022 14:36:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6C67BC433EF; Fri, 16 Dec 2022 14:36:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1671201379; bh=SBgN16maTx49jLslTM+NjX5PdMWPnkwXxzCXcciHvbg=; h=From:To:Cc:Subject:Date:From; b=qX+Uc1gCRymJQDi4qIJ0Uquej/sBTVBSPpYARVSgEFp2fx31r1E+KZArGMHc4AcCD ftkCP7hdxubjdHXN1RgddaNhC/Nto4UQYDC/tgkAx752wXLl6ifGj/FyHLqT5HpMSx K/kolZ6WBTUS+a6bLRan4USTdD8DUsc2vfp450ihjsjxMNCmK0YF2s9xA+OEkkFTLF payPzKEJoVM2EMEkDvtB5UjO9AuZLnlrelrkLxPr7wYVASIWbbDJNT3VvctOOY4toV LAoyLUnFgmw3x6I97JbPBLdB+d2qNM82sOHtdlI7VkGywURVPV5KtyezDvObjaqZM5 amclmgBtNQHbw== From: Arnaldo Carvalho de Melo <acme@kernel.org> To: Linus Torvalds <torvalds@linux-foundation.org> Cc: Ingo Molnar <mingo@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Clark Williams <williams@redhat.com>, Kate Carcia <kcarcia@redhat.com>, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo <acme@kernel.org>, Adrian Hunter <adrian.hunter@intel.com>, Dmitrii Dolgov <9erthalion6@gmail.com>, Ian Rogers <irogers@google.com>, James Clark <james.clark@arm.com>, Kang Minchul <tegongkang@gmail.com>, Kan Liang <kan.liang@linux.intel.com>, Kautuk Consul <kconsul@ventanamicro.com>, Leo Yan <leo.yan@linaro.org>, Masami Hiramatsu <mhiramat@kernel.org>, Nikita Shubin <n.shubin@yadro.com>, Yang Jihong <yangjihong1@huawei.com>, Steven Rostedt <rostedt@goodmis.org>, Andrii Nakryiko <andrii@kernel.org>, Arnaldo Carvalho de Melo <acme@redhat.com> Subject: [GIT PULL] perf tools changes for v6.2: 1st batch Date: Fri, 16 Dec 2022 11:36:09 -0300 Message-Id: <20221216143609.186415-1-acme@kernel.org> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752381783613373065?= X-GMAIL-MSGID: =?utf-8?q?1752381783613373065?= |
Series |
[GIT,PULL] perf tools changes for v6.2: 1st batch
|
|
Pull-request
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-tools-for-v6.2-1-2022-12-16Message
Arnaldo Carvalho de Melo
Dec. 16, 2022, 2:36 p.m. UTC
Hi Linus,
This time there is a trivial resolution of a merge conflict
related to commit c302378bc157f6a7 ("libbpf: Hashmap interface update to
allow both long and void* keys/values"), that touched tools/perf/ files.
Please consider pulling,
Best regards,
- Arnaldo
The following changes since commit 84e57d292203a45c96dbcb2e6be9dd80961d981a:
Merge tag 'exfat-for-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat (2022-12-15 18:14:21 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-tools-for-v6.2-1-2022-12-16
for you to fetch changes up to 4ff17c448a7b0f437a17622d67f1c5c609c3a0e9:
libperf: Fix install_pkgconfig target (2022-12-16 10:04:06 -0300)
----------------------------------------------------------------
perf tools changes for v6.2: 1st batch
Libraries:
- Drop the old copy of libtraceevent in tools/lib/traceevent/ now that all major distros
ship it from its external repository.
This is now just another feature detection, emitting a warning when the
libtraceevent-dev[el] package isn't installed, disabling the build of perf features
and tools that strictly require parsing things from tracefs while keeping
the core functionality present and working with a subset of the events, the
most used ones like CPU cycles, hardware cache and also vendor events, etc.
This was tested with lots of containers for Fedora, Debian, OpenSUSE, Alpine Linux,
Ubuntu, with cross builds, etc.
Build:
- Update to C standard to gnu11, like was done for the kernel.
- Install the tools/lib/ libraries locally instead of having headers searched
directly from the source code directories, to help the cases where we can
build either from in-kernel source libraries or from the same library shipped
as a distro package, as is the case with libbpf and was the case with
libtraceevent.
perf stat:
- Do not delay the workload with --delay, the delay is just for starting to count
the events, to skip noise at workload startup.
- When we have events for each cgroup, the metric should be printed for each
cgroup separately.
$ perf stat -a --for-each-cgroup system.slice,user.slice --metric-only sleep 1
Performance counter stats for 'system wide':
GHz insn per cycle branch-misses of all branches
system.slice 3.792 0.61 3.24%
user.slice 3.661 2.32 0.37%
- Fix printing field separator in CSV metrics output.
- Fix --metric-only --json output.
- Fix summary output in CSV with --metric-only.
- Update event group check for support of uncore event.
perf test:
- Stop requiring a C toolchain in shell tests, instead add a workload option that has
all the previously C snippets built as part of 'perf test -w' that then get used in
the 'perf test' shell scripts.
- Add event group test for events in multiple PMUs
- The "kernel lock contention analysis" test should not print warnings in quiet mode.
- Add attr tests for ARM64's new VG register.
- Fix record test on KVM guests, as using precise flag with the
br_inst_retired.near_call event causes the test fail on KVM guests, even when
the guests have PMU forwarding enabled and the event itself is supported, so just
remove the precise flag from the event.
- Add mechanism for skipping attr tests on specific kernel versions where it is known that
these checks will fail.
- Skip watchpoint tests if no watchpoints available.
- Add more Intel PT 'perf test' entries: hybrid CPUs, split the packet decoder
into a suite of subtests.
perf script:
- Introduce task analyzer python script, where one first records some events:
Recording can be done in two ways:
$ perf script record tasks-analyzer -- sleep 10
$ perf record -e sched:sched_switch -a -- sleep 10
The script can parse any perf.data files, as long as it has sched:sched_switch events,
other events will be ignored.
The most simple report use case is to just call the script without arguments.
Runtime is the time the task was running on the CPU, Time Out-In is the time
between the process being scheduled *out* and scheduled back *in*. So the last
time span between two executions:
$ perf script report tasks-analyzer
Switched-In Switched-Out CPU PID TID Comm Runtime Time Out-In
15576.658891407 15576.659156086 4 2412 2428 gdbus 265 1949
15576.659111320 15576.659455410 0 2412 2412 gnome-shell 344 2267
15576.659491326 15576.659506173 2 74 74 kworker/2:1 15 13145
15576.659506173 15576.659825748 2 2858 2858 gnome-terminal- 320 63263
15576.659871270 15576.659902872 6 20932 20932 kworker/u16:0 32 2314582
15576.659909951 15576.659945501 3 27264 27264 sh 36 -1
15576.659853285 15576.659971052 7 27265 27265 perf 118 5050741
[...]
perf lock:
- Allow concurrent record and report to support live monitoring of kernel lock
contention without BPF:
# perf lock record -a -o- sleep 1 | perf lock contention -i-
contended total wait max wait avg wait type caller
2 10.27 us 6.17 us 5.13 us spinlock load_balance+0xc03
1 5.29 us 5.29 us 5.29 us rwlock:W ep_scan_ready_list+0x54
1 4.12 us 4.12 us 4.12 us spinlock smpboot_thread_fn+0x116
1 3.28 us 3.28 us 3.28 us mutex pipe_read+0x50
- Implement -t/--threads option when using BPF:
$ sudo ./perf lock contention -abt -E 5 sleep 1
contended total wait max wait avg wait pid comm
1 740.66 ms 740.66 ms 740.66 ms 1950 nv_queue
3 305.50 ms 298.19 ms 101.83 ms 1884 nvidia-modeset/
1 25.14 us 25.14 us 25.14 us 2725038 EventManager_De
12 23.09 us 9.30 us 1.92 us 0 swapper
1 20.18 us 20.18 us 20.18 us 2725033 EventManager_De
- Add -l/--lock-addr to aggregate per-lock-instance contention:
$ sudo ./perf lock contention -abl sleep 1
contended total wait max wait avg wait address symbol
1 36.28 us 36.28 us 36.28 us ffff92615d6448b8
9 10.91 us 1.84 us 1.21 us ffffffffbaed50c0 rcu_state
1 10.49 us 10.49 us 10.49 us ffff9262ac4f0c80
8 4.68 us 1.67 us 585 ns ffffffffbae07a40 jiffies_lock
3 3.03 us 1.45 us 1.01 us ffff9262277861e0
1 924 ns 924 ns 924 ns ffff926095ba9d20
1 436 ns 436 ns 436 ns ffff9260bfda4f60
perf record:
- Add remaining branch filters: "no_cycles", "no_flags" & "hw_index", to be
used with hardware such as Intel's LBR that allows things like stitching
stacks of two samples to overcome the limits of the number of LBR registers.
Symbol resolution:
- Handle .debug files created with 'objcopy --only-keep-debug', where program
headers are zeroed and thus can't be used for adjustments, use the info in
the runtime_ss (runtime ELF) instead.
perf trace:
- Add BPF based augmenter for the 'perf_event_open's 'struct perf_event_attr' argument.
- Add BPF based augmenter for the 'clock_gettime's 'struct timespec' argument.
- In both cases the syscall tracepoint has just the pointer value, we
need to hook a BPF program to collect the pointer contents, and then,
in userspace, pretty print it in 'perf trace'.
perf list:
- Introduce JSON output of events.
- Streamline how the expression specifying what events should be shown is handled,
fixing several corner cases, such as the metric filter that is specified as a glob
but was using strstr().
perf probe:
- Fix to avoid crashing if DW_AT_decl_file is NULL, coping with clang generating
DWARF5 like that.
- Use dwarf_attr_integrate() as generic DWARF attr accessor as it supersedes dwarf_attr(),
supporting abstact origin DIEs.
perf inject:
- Set PERF_RECORD_MISC_BUILD_ID_SIZE in the PERF_RECORD_HEADER_BUILD_ID so that
perf.data readers can get the real build-id size and avoid trailing zeros.
perf data:
- Add tracepoint fields when converting a perf.data file to JSON.
arm64:
- Fix mksyscalltbl, don't lose syscalls due to sort -nu.
- Add Arm Neoverse V2 PMU events.
riscv:
- Add riscv sbi firmware std event files.
- Add Sifive U74 vendor events (JSON) file.
- Add some more events and metrics for Alderlake/Alderlake-N.
Documentation:
- Add data documentation for the PMU structs in the C source code.
Miscellaneous:
- Periodic sanitization of headers, adding missing includes, removing needless ones,
creating new ones, etc.
- Use sig_atomic_t for signal handlers to avoid undefined behaviour in all perf
tools.
- Fixes for libbpf 1.0+ compatibility (maps, etc) on 'perf trace' BPF examples.
- Remove some old perf bpf examples, leave the best ones that demonstrate how
to associate BPF functions to points in the kernel.
- Make quiet mode consistent between tools.
- Use dedicated non-atomic clear/set bit helpers.
- Use "grep -E" instead of "egrep" as recommended by warning emitted by GNU
grep since at least version 3.8.
- Complete list of supported subcommands in the 'perf daemon' help message.
- Update John Garry's email address for arm64 perf tooling on the MAINTAINERS file,
he moved from Huawei to Oracle.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (4):
perf scripts python: intel-pt-events.py: Add ability interleave output
perf intel-pt: Start turning intel-pt-pkt-decoder-test.c into a suite of intel-pt subtests
perf intel-pt: Redefine test_suite to allow for adding more subtests
perf intel-pt: Add hybrid CPU compatibility test
Ajay Kaher (1):
perf symbol: correction while adjusting symbol
Alexander Gordeev (1):
libperf: Fix install_pkgconfig target
Anshuman Khandual (1):
perf record: Add remaining branch filters: "no_cycles", "no_flags" & "hw_index"
Arnaldo Carvalho de Melo (28):
perf unwind arm64: Remove needless event.h & thread.h includes
perf arch x86: Add missing stdlib.h to get free() prototype
perf scripting python: Add missing util/perf_regs.h include to get perf_reg_name() prototype
perf event: Drop perf_regs.h include, not needed anymore
perf bpf: No need to include compiler.h when HAVE_LIBBPF_SUPPORT is true
perf bpf: No need to include headers just use forward declarations
perf branch: Remove some needless headers, add a needed one
perf tools: Move 'struct perf_sample' to a separate header file to disentangle headers
perf kwork: Remove includes not needed in kwork.h
perf machine: Move machine__resolve() from event.h
perf symbol: Move addr_location__put() from event.h
perf thread: Move thread__resolve() from event.h
perf tests: Add missing event.h include
perf mmap: Remove several unneeded includes from util/mmap.h
perf evlist: Add missing util/event.h header
Merge remote-tracking branch 'torvalds/master' into perf/core
perf examples bpf: Remove augmented_syscalls.c, the raw_syscalls one should be used instead
perf bpf: Rename perf_include_dir to libbpf_include_dir
perf trace: Add BPF augmenter to perf_event_open()'s 'struct perf_event_attr' arg
perf trace: Add augmenter for clock_gettime's rqtp timespec arg
Merge remote-tracking branch 'torvalds/master' into perf/core
libperf: Remove recursive perf/cpumap.h include from perf/cpumap.h
libperf: Add missing 'struct perf_cpu_map' forward declaration to perf/cpumap.h
Merge remote-tracking branch 'torvalds/master' into perf/core
Merge remote-tracking branch 'torvalds/master' into perf/core
machine: Adopt is_lock_function() from builtin-lock.c
perf tools: Check if libtracevent has TEP_FIELD_IS_RELATIVE
Merge remote-tracking branch 'torvalds/master' into perf/core
Athira Rajeev (2):
perf stat: Fix printing field separator in CSV metrics output
perf test: Update event group check for support of uncore event
Dmitrii Dolgov (1):
perf data: Add tracepoint fields when converting to JSON
Hagen Paul Pfeifer (1):
perf script: Introduce task analyzer python script
Hans-Peter Nilsson (1):
perf arm64: Fix mksyscalltbl, don't lose syscalls due to sort -nu
Ian Rogers (61):
perf test: Parse events workaround for dash/minus
perf build: Update to C standard to gnu11
perf record: Use sig_atomic_t for signal handlers
perf daemon: Use sig_atomic_t to avoid UB
perf ftrace: Use sig_atomic_t to avoid UB
perf session: Change type to avoid undefined behaviour in a signal handler
perf stat: Use sig_atomic_t to avoid undefined behaviour in a signal handler
perf top: Use sig_atomic_t to avoid undefined behaviour in a signal handler
perf trace: Use sig_atomic_t to avoid undefined behaviour in a signal handler
perf trace: Raw augmented syscalls fix libbpf 1.0+ compatibility
perf trace: hello fix libbpf 1.0+ compatibility
perf trace: empty fix libbpf 1.0+ compatibility
perf trace: 5sec fix libbpf 1.0+ compatibility
perf bpf: Remove now unused BPF headers
perf pmu: Remove mostly unused 'struct perf_pmu' 'is_hybrid' member
perf pmu: Add data structure documentation
tools lib api fs tracing_path: Add scandir alphasort
perf tracepoint: Sort events in iterator
perf list: Generalize limiting to a PMU name
perf list: Simplify cache event printing
perf list: Simplify symbol event printing
perf pmu: Restructure print_pmu_events() to avoid memory allocations
tools lib api: Add install target
tools lib subcmd: Add install target
perf build: Install libsubcmd locally when building
perf build: Install libapi locally when building
perf build: Install libperf locally when building
perf build: Install libtraceevent locally when building
tools lib api: Add missing install headers
tools lib perf: Add missing install headers
tool lib symbol: Add Makefile/Build
perf build: Install libsymbol locally when building
perf expr: Tidy hashmap dependency
perf thread_map: Reduce exposure of libperf internal API
perf cpumap: Tidy libperf includes
perf build: Use tools/lib headers from install path
tools lib api: Clean up install_headers
tools lib bpf: Avoid install_headers make warning
tools lib symbol: Clean up build output
tools lib perf: Make install_headers clearer
tools lib subcmd: Make install_headers clearer
tools lib traceevent: Make install_headers clearer
perf build: Fix LIBTRACEEVENT_DYNAMIC
perf list: Reorganize to use callbacks to allow honouring command line options
perf list: Add JSON output option
perf list: Support newlines in wordwrap
perf list: JSON escape encoding improvements
perf list: List callback support for libpfm
perf stat: Check existence of os->prefix, fixing a segfault
tools lib api: Add dependency test to install_headers
tools lib perf: Add dependency test to install_headers
tools lib subcmd: Add dependency test to install_headers
tools lib symbol: Add dependency test to install_headers
perf util: Make header guard consistent with tool
perf util: Add host_is_bigendian to util.h
perf build: Fixes for LIBTRACEEVENT_DYNAMIC
perf jevents: Parse metrics during conversion
perf build: Use libtraceevent from the system
tools lib traceevent: Remove libtraceevent
perf build: Fix python/perf.so library's name
perf evlist: Remove group option.
James Clark (14):
perf tools: Fix "kernel lock contention analysis" test by not printing warnings in quiet mode
perf tools: Make quiet mode consistent between tools
perf vendor events: Add Arm Neoverse V2 PMU events
perf branch: Fix interpretation of branch records
perf stat: Fix invalid output handle
perf cs-etm: Print unknown header version as an error
perf cs-etm: Remove unused stub methods
perf cs-etm: Tidy up auxtrace info header printing
perf cs-etm: Cleanup cs_etm__process_auxtrace_info()
perf cs-etm: Print auxtrace info even if OpenCSD isn't linked
perf test: Add ability to test exit code for attr tests
perf test: Add mechanism for skipping attr tests on auxiliary vector values
perf test: Add mechanism for skipping attr tests on kernel versions
perf test arm64: Add attr tests for new VG register
John Garry (1):
MAINTAINERS: Update John Garry's email address for arm64 perf tooling
Kang Minchul (1):
perf print-events: Remove redundant comparison with zero
Khem Raj (1):
perf python: Account for multiple words in CC
Leo Yan (5):
perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number
perf trace: Return error if a system call doesn't exist
perf trace: Handle failure when trace point folder is missed
perf augmented_raw_syscalls: Remove unused variable 'syscall'
perf trace: Remove unused bpf map 'syscalls'
Masami Hiramatsu (Google) (4):
perf probe: Fix to avoid crashing if DW_AT_decl_file is NULL
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
perf probe: Fix to get declared file name from clang DWARF5
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Michael Petlan (1):
perf test: Fix record test on KVM guests
Namhyung Kim (100):
perf tools: Save evsel->pmu in parse_events()
perf tools: Use pmu info in evsel__is_hybrid()
perf stat: Use evsel__is_hybrid() more
perf stat: Add aggr id for global mode
perf stat: Add cpu aggr id for no aggregation mode
perf stat: Add 'needs_sort' argument to cpu_aggr_map__new()
perf stat: Add struct perf_stat_aggr to perf_stat_evsel
perf stat: Allocate evsel->stats->aggr properly
perf stat: Aggregate events using evsel->stats->aggr
perf stat: Factor out evsel__count_has_error()
perf stat: Aggregate per-thread stats using evsel->stats->aggr
perf stat: Allocate aggr counts for recorded data
perf stat: Reset aggr counts for each interval
perf stat: Split process_counters() to share it with process_stat_round_event()
perf stat: Add perf_stat_merge_counters()
perf stat: Add perf_stat_process_percore()
perf stat: Add perf_stat_process_shadow_stats()
perf stat: Display event stats using aggr counts
perf stat: Display percore events properly
perf stat: Remove unused perf_counts.aggr field
perf test: Do not use instructions:u explicitly
perf test: Fix shellcheck issues in the record test
perf test: Use a test program in 'perf record' tests
perf test: Wait for a new thread when testing --per-thread record
perf test: Add system-wide mode in 'perf record' tests
perf test: Add target workload test in 'perf record' tests
perf test: Test record with --threads option
perf test: Do not set TEST_SKIP for record subtests
perf lock contention: Fix memory sanitizer issue
perf lock contention: Check --max-stack option
perf lock contention: Avoid variable length arrays
perf lock contention: Increase default stack skip to 4
perf lock: Allow concurrent record and report
perf stat: Increase metric length to align outputs
perf stat: Clear screen only if output file is a tty
perf stat: Move common code in print_metric_headers()
perf stat: Fix --metric-only --json output
perf stat: Do not indent headers for JSON
perf stat: Add header for interval in JSON output
perf stat: Fix condition in print_interval()
perf stat: Consolidate condition to print metrics
perf stat: Fix summary output in CSV with --metric-only
perf stat: Add missing separator in the CSV header
perf stat: Clear screen only if output file is a tty
perf stat: Split print_running() function
perf stat: Split print_noise_pct() function
perf stat: Split print_cgroup() function
perf stat: Split aggr_printout() function
perf stat: Factor out print_counter_value() function
perf stat: Handle bad events in abs_printout()
perf stat: Add before_metric argument
perf stat: Align cgroup names
perf stat: Split print_metric_headers() function
perf stat: Factor out prepare_interval()
perf stat: Cleanup interval print alignment
perf stat: Remove impossible condition
perf stat: Rework header display
perf stat: Move condition to print_footer()
perf stat: Factor out prefix display
perf stat: Factor out print_metric_{begin,end}()
perf stat: Support --for-each-cgroup and --metric-only
perf stat: Add print_aggr_cgroup() for --for-each-cgroup and --topdown
perf test: Add -w/--workload option
perf test: Replace pipe test workload with noploop
perf test: Add 'thloop' test workload
perf test: Replace record test workload with thloop
perf test: Add 'leafloop' test workload
perf test: Replace arm callgraph fp test workload with leafloop
perf test: Add 'sqrtloop' test workload
perf test: Replace arm spe fork test workload with sqrtloop
perf test: Add 'brstack' test workload
perf test: Replace brstack test workload
perf test: Add 'datasym' test workload
perf test: Replace data symbol test workload with datasym
perf inject: Set PERF_RECORD_MISC_BUILD_ID_SIZE
perf lock contention: Do not use BPF task local storage
perf stat: Fix cgroup display in JSON output
perf stat: Move summary prefix printing logic in CSV output
perf stat: Do not align time prefix in CSV output
perf stat: Use scnprintf() in prepare_interval()
perf stat: Remove prefix argument in print_metric_headers()
perf stat: Remove metric_only argument in print_counter_aggrdata()
perf stat: Pass const char *prefix to display routines
perf stat: Use 'struct outstate' in evlist__print_counters()
perf stat: Pass 'struct outstate' to print_metric_begin()
perf stat: Pass struct outstate to printout()
perf stat: Do not pass runtime_stat to printout()
perf stat: Pass through 'struct outstate'
perf stat: Fix JSON output in metric-only mode
perf stat: Rename "aggregate-number" to "cpu-count" in JSON
perf stat: Tidy up JSON metric-only output when no metrics
Revert "perf stat: Rename "aggregate-number" to "cpu-count" in JSON"
perf stat: Fix multi-line metric output in JSON
perf stat: Update event skip condition for system-wide per-thread mode and merged uncore and hybrid events
perf off_cpu: Fix a typo in BTF tracepoint name, it should be 'btf_trace_sched_switch'
perf lock contention: Add lock_data.h for common data
perf lock contention: Implement -t/--threads option for BPF
perf lock contention: Add -l/--lock-addr option
perf test: Update perf lock contention test
perf stat: Do not delay the workload with --delay
Naveen N. Rao (1):
perf test: Skip watchpoint tests if no watchpoints available
Nikita Shubin (3):
perf tools riscv: Add support for get_cpuid_str function
perf arch events: riscv sbi firmware std event files
perf vendor events riscv: add Sifive U74 JSON file
Petar Gligoric (2):
perf script: task-analyzer add csv support
perf test: add new task-analyzer tests
Ravi Bangoria (2):
perf tool: Move pmus list variable to a new file
perf test: Add event group test for events in multiple PMUs
Sean Christopherson (1):
perf tools: Use dedicated non-atomic clear/set bit helpers
Tiezhu Yang (1):
perf tools: Use "grep -E" instead of "egrep"
Yang Jihong (2):
perf daemon: Complete list of supported subcommand in help message
perf config: Add missing newline on pr_warning() call in home_perfconfig()
Zhengjun Xing (4):
perf vendor events intel: Add core event list for Alderlake-N
perf vendor events intel: Add uncore event list for Alderlake-N
perf vendor events intel: Add metrics for Alderlake-N
perf vendor events intel: Update events and metrics for alderlake
MAINTAINERS | 2 +-
tools/lib/api/Makefile | 66 +
tools/lib/api/fs/tracing_path.c | 16 +
tools/lib/api/fs/tracing_path.h | 1 +
tools/lib/bpf/Makefile | 1 +
tools/lib/perf/Makefile | 37 +-
tools/lib/perf/include/perf/cpumap.h | 3 +-
tools/lib/subcmd/Makefile | 52 +
tools/lib/symbol/Build | 1 +
tools/lib/symbol/Makefile | 122 +
tools/lib/traceevent/.gitignore | 4 -
tools/lib/traceevent/Build | 8 -
tools/lib/traceevent/Documentation/Makefile | 207 -
tools/lib/traceevent/Documentation/asciidoc.conf | 120 -
.../Documentation/libtraceevent-commands.txt | 153 -
.../Documentation/libtraceevent-cpus.txt | 77 -
.../Documentation/libtraceevent-endian_read.txt | 78 -
.../Documentation/libtraceevent-event_find.txt | 103 -
.../Documentation/libtraceevent-event_get.txt | 99 -
.../Documentation/libtraceevent-event_list.txt | 122 -
.../Documentation/libtraceevent-event_print.txt | 130 -
.../Documentation/libtraceevent-field_find.txt | 118 -
.../Documentation/libtraceevent-field_get_val.txt | 122 -
.../Documentation/libtraceevent-field_print.txt | 126 -
.../Documentation/libtraceevent-field_read.txt | 81 -
.../Documentation/libtraceevent-fields.txt | 105 -
.../Documentation/libtraceevent-file_endian.txt | 91 -
.../Documentation/libtraceevent-filter.txt | 209 -
.../Documentation/libtraceevent-func_apis.txt | 183 -
.../Documentation/libtraceevent-func_find.txt | 88 -
.../Documentation/libtraceevent-handle.txt | 101 -
.../Documentation/libtraceevent-header_page.txt | 102 -
.../Documentation/libtraceevent-host_endian.txt | 104 -
.../Documentation/libtraceevent-long_size.txt | 78 -
.../Documentation/libtraceevent-page_size.txt | 82 -
.../Documentation/libtraceevent-parse_event.txt | 90 -
.../Documentation/libtraceevent-parse_head.txt | 82 -
.../Documentation/libtraceevent-plugins.txt | 122 -
.../Documentation/libtraceevent-record_parse.txt | 137 -
.../libtraceevent-reg_event_handler.txt | 156 -
.../Documentation/libtraceevent-reg_print_func.txt | 155 -
.../Documentation/libtraceevent-set_flag.txt | 104 -
.../Documentation/libtraceevent-strerror.txt | 85 -
.../Documentation/libtraceevent-tseq.txt | 158 -
.../lib/traceevent/Documentation/libtraceevent.txt | 192 -
.../lib/traceevent/Documentation/manpage-1.72.xsl | 14 -
.../lib/traceevent/Documentation/manpage-base.xsl | 35 -
.../Documentation/manpage-bold-literal.xsl | 17 -
.../traceevent/Documentation/manpage-normal.xsl | 13 -
.../Documentation/manpage-suppress-sp.xsl | 21 -
tools/lib/traceevent/Makefile | 300 -
tools/lib/traceevent/event-parse-api.c | 333 -
tools/lib/traceevent/event-parse-local.h | 123 -
tools/lib/traceevent/event-parse.c | 7624 --------------------
tools/lib/traceevent/event-parse.h | 750 --
tools/lib/traceevent/event-plugin.c | 711 --
tools/lib/traceevent/event-utils.h | 67 -
tools/lib/traceevent/kbuffer-parse.c | 809 ---
tools/lib/traceevent/kbuffer.h | 68 -
tools/lib/traceevent/libtraceevent.pc.template | 10 -
tools/lib/traceevent/parse-filter.c | 2281 ------
tools/lib/traceevent/parse-utils.c | 71 -
tools/lib/traceevent/plugins/Build | 12 -
tools/lib/traceevent/plugins/Makefile | 225 -
tools/lib/traceevent/plugins/plugin_cfg80211.c | 43 -
tools/lib/traceevent/plugins/plugin_function.c | 282 -
tools/lib/traceevent/plugins/plugin_futex.c | 123 -
tools/lib/traceevent/plugins/plugin_hrtimer.c | 74 -
tools/lib/traceevent/plugins/plugin_jbd2.c | 61 -
tools/lib/traceevent/plugins/plugin_kmem.c | 80 -
tools/lib/traceevent/plugins/plugin_kvm.c | 527 --
tools/lib/traceevent/plugins/plugin_mac80211.c | 88 -
tools/lib/traceevent/plugins/plugin_sched_switch.c | 146 -
tools/lib/traceevent/plugins/plugin_scsi.c | 434 --
tools/lib/traceevent/plugins/plugin_tlb.c | 66 -
tools/lib/traceevent/plugins/plugin_xen.c | 138 -
tools/lib/traceevent/tep_strerror.c | 53 -
tools/lib/traceevent/trace-seq.c | 249 -
tools/lib/traceevent/trace-seq.h | 55 -
tools/perf/.gitignore | 7 +-
tools/perf/Build | 20 +-
tools/perf/Documentation/perf-annotate.txt | 2 +-
tools/perf/Documentation/perf-diff.txt | 2 +-
tools/perf/Documentation/perf-intel-pt.txt | 12 +-
tools/perf/Documentation/perf-list.txt | 10 +-
tools/perf/Documentation/perf-lock.txt | 6 +-
tools/perf/Documentation/perf-probe.txt | 2 +-
tools/perf/Documentation/perf-record.txt | 11 +-
tools/perf/Documentation/perf-report.txt | 2 +-
tools/perf/Documentation/perf-stat.txt | 4 +-
tools/perf/Documentation/perf-top.txt | 7 +-
tools/perf/MANIFEST | 4 +-
tools/perf/Makefile | 2 +-
tools/perf/Makefile.config | 62 +-
tools/perf/Makefile.perf | 170 +-
tools/perf/arch/arm/util/unwind-libdw.c | 2 +-
tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 2 +-
tools/perf/arch/arm64/util/Build | 2 +-
tools/perf/arch/arm64/util/machine.c | 1 +
tools/perf/arch/arm64/util/pmu.c | 1 +
tools/perf/arch/arm64/util/unwind-libdw.c | 2 +-
tools/perf/arch/powerpc/util/Build | 2 +-
tools/perf/arch/powerpc/util/event.c | 1 +
tools/perf/arch/powerpc/util/unwind-libdw.c | 2 +-
tools/perf/arch/riscv/util/Build | 1 +
tools/perf/arch/riscv/util/header.c | 104 +
tools/perf/arch/s390/util/Build | 2 +-
tools/perf/arch/s390/util/unwind-libdw.c | 1 +
tools/perf/arch/x86/include/arch-tests.h | 1 +
tools/perf/arch/x86/tests/Build | 2 +-
tools/perf/arch/x86/tests/arch-tests.c | 15 +-
...intel-pt-pkt-decoder-test.c => intel-pt-test.c} | 154 +
tools/perf/arch/x86/tests/sample-parsing.c | 1 +
tools/perf/arch/x86/util/Build | 2 +-
tools/perf/arch/x86/util/event.c | 2 +
tools/perf/arch/x86/util/intel-pt.c | 4 +
tools/perf/arch/x86/util/iostat.c | 4 +-
tools/perf/arch/x86/util/tsc.c | 1 +
tools/perf/arch/x86/util/unwind-libdw.c | 2 +-
tools/perf/bench/inject-buildid.c | 2 +-
tools/perf/bench/numa.c | 9 +-
tools/perf/builtin-annotate.c | 4 +-
tools/perf/builtin-daemon.c | 4 +-
tools/perf/builtin-data.c | 5 +-
tools/perf/builtin-diff.c | 2 +-
tools/perf/builtin-ftrace.c | 4 +-
tools/perf/builtin-inject.c | 8 +
tools/perf/builtin-kmem.c | 1 +
tools/perf/builtin-kvm.c | 12 +-
tools/perf/builtin-kwork.c | 7 +
tools/perf/builtin-list.c | 565 +-
tools/perf/builtin-lock.c | 251 +-
tools/perf/builtin-mem.c | 1 +
tools/perf/builtin-probe.c | 7 +-
tools/perf/builtin-record.c | 14 +-
tools/perf/builtin-report.c | 11 +-
tools/perf/builtin-script.c | 23 +-
tools/perf/builtin-stat.c | 250 +-
tools/perf/builtin-timechart.c | 1 +
tools/perf/builtin-top.c | 6 +-
tools/perf/builtin-trace.c | 153 +-
tools/perf/builtin-version.c | 1 +
tools/perf/examples/bpf/5sec.c | 8 +-
tools/perf/examples/bpf/augmented_raw_syscalls.c | 175 +-
tools/perf/examples/bpf/augmented_syscalls.c | 169 -
tools/perf/examples/bpf/empty.c | 13 +-
tools/perf/examples/bpf/etcsnoop.c | 76 -
tools/perf/examples/bpf/hello.c | 24 +-
tools/perf/include/bpf/bpf.h | 70 -
tools/perf/include/bpf/linux/socket.h | 24 -
tools/perf/include/bpf/pid_filter.h | 21 -
tools/perf/include/bpf/stdio.h | 16 -
tools/perf/include/bpf/unistd.h | 10 -
tools/perf/perf.c | 24 +-
tools/perf/pmu-events/Build | 2 +-
.../{neoverse-n2 => neoverse-n2-v2}/branch.json | 0
.../arm/{neoverse-n2 => neoverse-n2-v2}/bus.json | 0
.../arm/{neoverse-n2 => neoverse-n2-v2}/cache.json | 0
.../{neoverse-n2 => neoverse-n2-v2}/exception.json | 0
.../instruction.json | 0
.../{neoverse-n2 => neoverse-n2-v2}/memory.json | 0
.../{neoverse-n2 => neoverse-n2-v2}/pipeline.json | 0
.../arm/{neoverse-n2 => neoverse-n2-v2}/spe.json | 0
.../arm/{neoverse-n2 => neoverse-n2-v2}/trace.json | 0
tools/perf/pmu-events/arch/arm64/mapfile.csv | 3 +-
tools/perf/pmu-events/arch/riscv/mapfile.csv | 17 +
.../pmu-events/arch/riscv/riscv-sbi-firmware.json | 134 +
.../pmu-events/arch/riscv/sifive/u74/firmware.json | 68 +
.../arch/riscv/sifive/u74/instructions.json | 92 +
.../pmu-events/arch/riscv/sifive/u74/memory.json | 32 +
.../arch/riscv/sifive/u74/microarch.json | 57 +
.../pmu-events/arch/x86/alderlake/adl-metrics.json | 73 +-
.../perf/pmu-events/arch/x86/alderlake/cache.json | 1391 ++--
.../arch/x86/alderlake/floating-point.json | 91 +-
.../pmu-events/arch/x86/alderlake/frontend.json | 224 +-
.../perf/pmu-events/arch/x86/alderlake/memory.json | 214 +-
.../perf/pmu-events/arch/x86/alderlake/other.json | 132 +-
.../pmu-events/arch/x86/alderlake/pipeline.json | 1932 ++---
.../arch/x86/alderlake/uncore-memory.json | 185 +-
.../arch/x86/alderlake/uncore-other.json | 73 +-
.../arch/x86/alderlake/virtual-memory.json | 223 +-
.../arch/x86/alderlaken/adln-metrics.json | 583 ++
.../perf/pmu-events/arch/x86/alderlaken/cache.json | 330 +
.../arch/x86/alderlaken/floating-point.json | 18 +
.../pmu-events/arch/x86/alderlaken/frontend.json | 26 +
.../pmu-events/arch/x86/alderlaken/memory.json | 81 +
.../perf/pmu-events/arch/x86/alderlaken/other.json | 38 +
.../pmu-events/arch/x86/alderlaken/pipeline.json | 533 ++
.../arch/x86/alderlaken/uncore-memory.json | 175 +
.../arch/x86/alderlaken/uncore-other.json | 33 +
.../arch/x86/alderlaken/virtual-memory.json | 47 +
tools/perf/pmu-events/arch/x86/mapfile.csv | 3 +-
tools/perf/pmu-events/jevents.py | 12 +-
tools/perf/pmu-events/metric.py | 502 ++
tools/perf/pmu-events/metric_test.py | 157 +
tools/perf/scripts/python/Perf-Trace-Util/Build | 2 +-
tools/perf/scripts/python/bin/task-analyzer-record | 2 +
tools/perf/scripts/python/bin/task-analyzer-report | 3 +
tools/perf/scripts/python/intel-pt-events.py | 65 +-
tools/perf/scripts/python/task-analyzer.py | 934 +++
tools/perf/tests/Build | 15 +-
tools/perf/tests/attr.py | 71 +-
tools/perf/tests/attr/README | 2 -
tools/perf/tests/attr/test-record-group | 22 -
.../attr/test-record-user-regs-no-sve-aarch64 | 9 +
.../attr/test-record-user-regs-old-sve-aarch64 | 10 +
.../tests/attr/test-record-user-regs-sve-aarch64 | 14 +
tools/perf/tests/attr/test-stat-group | 17 -
tools/perf/tests/builtin-test.c | 36 +
tools/perf/tests/code-reading.c | 4 +-
tools/perf/tests/cpumap.c | 2 +-
tools/perf/tests/dlfilter-test.c | 1 +
tools/perf/tests/event_groups.c | 139 +
tools/perf/tests/expr.c | 1 +
tools/perf/tests/make | 2 +-
tools/perf/tests/mmap-basic.c | 2 +
tools/perf/tests/openat-syscall-tp-fields.c | 1 +
tools/perf/tests/openat-syscall.c | 1 +
tools/perf/tests/parse-events.c | 36 +-
tools/perf/tests/parse-metric.c | 2 +-
tools/perf/tests/parse-no-sample-id-all.c | 1 +
tools/perf/tests/perf-record.c | 2 +
tools/perf/tests/perf-time-to-tsc.c | 1 +
tools/perf/tests/pmu-events.c | 3 +-
tools/perf/tests/sample-parsing.c | 4 +-
tools/perf/tests/shell/lib/probe_vfs_getname.sh | 4 +-
tools/perf/tests/shell/lock_contention.sh | 63 +-
tools/perf/tests/shell/pipe_test.sh | 55 +-
.../tests/shell/record+probe_libc_inet_pton.sh | 2 +-
.../tests/shell/record+script_probe_vfs_getname.sh | 2 +-
tools/perf/tests/shell/record.sh | 129 +-
tools/perf/tests/shell/record_offcpu.sh | 2 +-
tools/perf/tests/shell/stat.sh | 10 +-
tools/perf/tests/shell/test_arm_callgraph_fp.sh | 34 +-
tools/perf/tests/shell/test_arm_coresight.sh | 8 +-
tools/perf/tests/shell/test_arm_spe.sh | 6 +-
tools/perf/tests/shell/test_arm_spe_fork.sh | 46 +-
tools/perf/tests/shell/test_brstack.sh | 68 +-
tools/perf/tests/shell/test_data_symbol.sh | 33 +-
tools/perf/tests/shell/test_java_symbol.sh | 2 +-
tools/perf/tests/shell/test_task_analyzer.sh | 151 +
tools/perf/tests/shell/trace+probe_vfs_getname.sh | 4 +-
tools/perf/tests/sw-clock.c | 1 +
tools/perf/tests/switch-tracking.c | 1 +
tools/perf/tests/tests.h | 28 +
tools/perf/tests/thread-map.c | 1 +
tools/perf/tests/workloads/Build | 13 +
tools/perf/tests/workloads/brstack.c | 40 +
tools/perf/tests/workloads/datasym.c | 24 +
tools/perf/tests/workloads/leafloop.c | 34 +
tools/perf/tests/workloads/noploop.c | 32 +
tools/perf/tests/workloads/sqrtloop.c | 45 +
tools/perf/tests/workloads/thloop.c | 53 +
tools/perf/tests/wp.c | 12 +-
tools/perf/trace/beauty/Build | 1 +
tools/perf/trace/beauty/beauty.h | 3 +
tools/perf/trace/beauty/fadvise.sh | 2 +-
tools/perf/trace/beauty/fsmount.sh | 2 +-
tools/perf/trace/beauty/fspick.sh | 2 +-
tools/perf/trace/beauty/kcmp_type.sh | 2 +-
tools/perf/trace/beauty/kvm_ioctl.sh | 4 +-
tools/perf/trace/beauty/madvise_behavior.sh | 2 +-
tools/perf/trace/beauty/mmap_flags.sh | 22 +-
tools/perf/trace/beauty/mmap_prot.sh | 12 +-
tools/perf/trace/beauty/mount_flags.sh | 4 +-
tools/perf/trace/beauty/move_mount_flags.sh | 2 +-
tools/perf/trace/beauty/mremap_flags.sh | 4 +-
tools/perf/trace/beauty/perf_event_open.c | 44 +
tools/perf/trace/beauty/perf_ioctl.sh | 2 +-
.../perf/trace/beauty/pkey_alloc_access_rights.sh | 2 +-
tools/perf/trace/beauty/prctl_option.sh | 4 +-
tools/perf/trace/beauty/rename_flags.sh | 4 +-
tools/perf/trace/beauty/sockaddr.sh | 4 +-
tools/perf/trace/beauty/socket.sh | 4 +-
tools/perf/trace/beauty/sync_file_range.sh | 2 +-
tools/perf/trace/beauty/timespec.c | 21 +
.../trace/beauty/tracepoints/x86_irq_vectors.sh | 4 +-
tools/perf/trace/beauty/tracepoints/x86_msr.sh | 12 +-
tools/perf/trace/beauty/usbdevfs_ioctl.sh | 4 +-
tools/perf/trace/beauty/vhost_virtio_ioctl.sh | 4 +-
tools/perf/trace/beauty/x86_arch_prctl.sh | 4 +-
tools/perf/ui/util.c | 5 +
tools/perf/util/Build | 30 +-
tools/perf/util/amd-sample-raw.c | 1 +
.../perf/util/arm64-frame-pointer-unwind-support.h | 6 +-
tools/perf/util/auxtrace.c | 1 +
tools/perf/util/auxtrace.h | 2 +-
tools/perf/util/bpf-loader.c | 4 -
tools/perf/util/bpf-prologue.h | 6 +-
tools/perf/util/bpf_counter.c | 2 +-
tools/perf/util/bpf_kwork.c | 3 +
tools/perf/util/bpf_lock_contention.c | 114 +-
tools/perf/util/bpf_map.h | 3 +-
tools/perf/util/bpf_off_cpu.c | 2 +-
tools/perf/util/bpf_skel/lock_contention.bpf.c | 101 +-
tools/perf/util/bpf_skel/lock_data.h | 30 +
tools/perf/util/branch.h | 9 +-
tools/perf/util/config.c | 4 +-
tools/perf/util/counts.c | 1 -
tools/perf/util/counts.h | 1 -
tools/perf/util/cpumap.c | 17 +-
tools/perf/util/cpumap.h | 10 +-
tools/perf/util/cs-etm-base.c | 174 +
tools/perf/util/cs-etm.c | 208 +-
tools/perf/util/cs-etm.h | 46 +-
tools/perf/util/data-convert-bt.c | 8 +-
tools/perf/util/data-convert-json.c | 27 +
tools/perf/util/dwarf-aux.c | 77 +-
tools/perf/util/dwarf-aux.h | 3 +
tools/perf/util/event.h | 124 +-
tools/perf/util/evlist.c | 10 +-
tools/perf/util/evlist.h | 6 +-
tools/perf/util/evsel.c | 54 +-
tools/perf/util/evsel.h | 16 +-
tools/perf/util/evsel_fprintf.c | 7 +-
tools/perf/util/expr.c | 1 +
tools/perf/util/expr.h | 7 +-
tools/perf/util/header.c | 19 +
tools/perf/util/header.h | 2 +
.../util/intel-pt-decoder/intel-pt-insn-decoder.c | 1 +
tools/perf/util/intel-pt.c | 7 +-
tools/perf/util/iostat.c | 3 +-
tools/perf/util/iostat.h | 4 +-
tools/perf/util/kwork.h | 12 +-
tools/perf/util/llvm-utils.c | 8 +-
tools/perf/util/lock-contention.h | 5 +-
tools/perf/util/machine.c | 40 +
tools/perf/util/machine.h | 8 +
tools/perf/util/metricgroup.c | 243 +-
tools/perf/util/metricgroup.h | 4 +-
tools/perf/util/mmap.h | 5 -
tools/perf/util/parse-branch-options.c | 3 +
tools/perf/util/parse-events.c | 16 +
tools/perf/util/parse-events.h | 1 -
tools/perf/util/perf_regs.c | 2 +-
tools/perf/util/pfm.c | 154 +-
tools/perf/util/pfm.h | 7 +-
tools/perf/util/pmu.c | 294 +-
tools/perf/util/pmu.h | 128 +-
tools/perf/util/pmus.c | 5 +
tools/perf/util/pmus.h | 9 +
tools/perf/util/print-events.c | 639 +-
tools/perf/util/print-events.h | 42 +-
tools/perf/util/probe-finder.c | 37 +-
tools/perf/util/python.c | 26 +-
tools/perf/util/record.c | 7 -
tools/perf/util/record.h | 1 -
tools/perf/util/s390-cpumsf.c | 1 +
tools/perf/util/s390-sample-raw.c | 1 +
tools/perf/util/sample.h | 117 +
tools/perf/util/scripting-engines/Build | 6 +-
.../perf/util/scripting-engines/trace-event-perl.c | 3 +
.../util/scripting-engines/trace-event-python.c | 12 +-
tools/perf/util/session.c | 5 +-
tools/perf/util/session.h | 2 +
tools/perf/util/setup.py | 15 +-
tools/perf/util/sort.c | 63 +-
tools/perf/util/stat-display.c | 1514 ++--
tools/perf/util/stat-shadow.c | 1 +
tools/perf/util/stat.c | 406 +-
tools/perf/util/stat.h | 41 +-
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.h | 2 +
tools/perf/util/synthetic-events.c | 9 +-
tools/perf/util/thread.h | 3 +
tools/perf/util/thread_map.c | 1 +
tools/perf/util/thread_map.h | 2 -
tools/perf/util/trace-event-info.c | 14 +-
tools/perf/util/trace-event-parse.c | 2 +
tools/perf/util/trace-event-read.c | 4 +-
tools/perf/util/trace-event-scripting.c | 3 +-
tools/perf/util/trace-event.c | 1 -
tools/perf/util/trace-event.h | 13 +-
tools/perf/util/util.h | 25 +-
374 files changed, 11404 insertions(+), 26462 deletions(-)
create mode 100644 tools/lib/symbol/Build
create mode 100644 tools/lib/symbol/Makefile
delete mode 100644 tools/lib/traceevent/.gitignore
delete mode 100644 tools/lib/traceevent/Build
delete mode 100644 tools/lib/traceevent/Documentation/Makefile
delete mode 100644 tools/lib/traceevent/Documentation/asciidoc.conf
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-commands.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-cpus.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-endian_read.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_find.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_get.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_list.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_print.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_find.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_get_val.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_print.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_read.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-fields.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-file_endian.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_apis.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_find.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-handle.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-header_page.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-host_endian.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-long_size.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-page_size.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_event.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_head.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-plugins.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_parse.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_event_handler.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_print_func.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-set_flag.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-strerror.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq.txt
delete mode 100644 tools/lib/traceevent/Documentation/libtraceevent.txt
delete mode 100644 tools/lib/traceevent/Documentation/manpage-1.72.xsl
delete mode 100644 tools/lib/traceevent/Documentation/manpage-base.xsl
delete mode 100644 tools/lib/traceevent/Documentation/manpage-bold-literal.xsl
delete mode 100644 tools/lib/traceevent/Documentation/manpage-normal.xsl
delete mode 100644 tools/lib/traceevent/Documentation/manpage-suppress-sp.xsl
delete mode 100644 tools/lib/traceevent/Makefile
delete mode 100644 tools/lib/traceevent/event-parse-api.c
delete mode 100644 tools/lib/traceevent/event-parse-local.h
delete mode 100644 tools/lib/traceevent/event-parse.c
delete mode 100644 tools/lib/traceevent/event-parse.h
delete mode 100644 tools/lib/traceevent/event-plugin.c
delete mode 100644 tools/lib/traceevent/event-utils.h
delete mode 100644 tools/lib/traceevent/kbuffer-parse.c
delete mode 100644 tools/lib/traceevent/kbuffer.h
delete mode 100644 tools/lib/traceevent/libtraceevent.pc.template
delete mode 100644 tools/lib/traceevent/parse-filter.c
delete mode 100644 tools/lib/traceevent/parse-utils.c
delete mode 100644 tools/lib/traceevent/plugins/Build
delete mode 100644 tools/lib/traceevent/plugins/Makefile
delete mode 100644 tools/lib/traceevent/plugins/plugin_cfg80211.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_function.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_futex.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_hrtimer.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_jbd2.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_kmem.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_kvm.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_mac80211.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_sched_switch.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_scsi.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_tlb.c
delete mode 100644 tools/lib/traceevent/plugins/plugin_xen.c
delete mode 100644 tools/lib/traceevent/tep_strerror.c
delete mode 100644 tools/lib/traceevent/trace-seq.c
delete mode 100644 tools/lib/traceevent/trace-seq.h
create mode 100644 tools/perf/arch/riscv/util/header.c
rename tools/perf/arch/x86/tests/{intel-pt-pkt-decoder-test.c => intel-pt-test.c} (80%)
delete mode 100644 tools/perf/examples/bpf/augmented_syscalls.c
delete mode 100644 tools/perf/examples/bpf/etcsnoop.c
delete mode 100644 tools/perf/include/bpf/bpf.h
delete mode 100644 tools/perf/include/bpf/linux/socket.h
delete mode 100644 tools/perf/include/bpf/pid_filter.h
delete mode 100644 tools/perf/include/bpf/stdio.h
delete mode 100644 tools/perf/include/bpf/unistd.h
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/branch.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/bus.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/cache.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/exception.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/instruction.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/memory.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/pipeline.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/spe.json (100%)
rename tools/perf/pmu-events/arch/arm64/arm/{neoverse-n2 => neoverse-n2-v2}/trace.json (100%)
create mode 100644 tools/perf/pmu-events/arch/riscv/mapfile.csv
create mode 100644 tools/perf/pmu-events/arch/riscv/riscv-sbi-firmware.json
create mode 100644 tools/perf/pmu-events/arch/riscv/sifive/u74/firmware.json
create mode 100644 tools/perf/pmu-events/arch/riscv/sifive/u74/instructions.json
create mode 100644 tools/perf/pmu-events/arch/riscv/sifive/u74/memory.json
create mode 100644 tools/perf/pmu-events/arch/riscv/sifive/u74/microarch.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/adln-metrics.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/cache.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/floating-point.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/frontend.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/other.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/pipeline.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/uncore-memory.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/uncore-other.json
create mode 100644 tools/perf/pmu-events/arch/x86/alderlaken/virtual-memory.json
create mode 100644 tools/perf/pmu-events/metric.py
create mode 100644 tools/perf/pmu-events/metric_test.py
create mode 100755 tools/perf/scripts/python/bin/task-analyzer-record
create mode 100755 tools/perf/scripts/python/bin/task-analyzer-report
create mode 100755 tools/perf/scripts/python/task-analyzer.py
delete mode 100644 tools/perf/tests/attr/test-record-group
create mode 100644 tools/perf/tests/attr/test-record-user-regs-no-sve-aarch64
create mode 100644 tools/perf/tests/attr/test-record-user-regs-old-sve-aarch64
create mode 100644 tools/perf/tests/attr/test-record-user-regs-sve-aarch64
delete mode 100644 tools/perf/tests/attr/test-stat-group
create mode 100644 tools/perf/tests/event_groups.c
create mode 100755 tools/perf/tests/shell/test_task_analyzer.sh
create mode 100644 tools/perf/tests/workloads/Build
create mode 100644 tools/perf/tests/workloads/brstack.c
create mode 100644 tools/perf/tests/workloads/datasym.c
create mode 100644 tools/perf/tests/workloads/leafloop.c
create mode 100644 tools/perf/tests/workloads/noploop.c
create mode 100644 tools/perf/tests/workloads/sqrtloop.c
create mode 100644 tools/perf/tests/workloads/thloop.c
create mode 100644 tools/perf/trace/beauty/timespec.c
create mode 100644 tools/perf/util/bpf_skel/lock_data.h
create mode 100644 tools/perf/util/cs-etm-base.c
create mode 100644 tools/perf/util/pmus.c
create mode 100644 tools/perf/util/pmus.h
create mode 100644 tools/perf/util/sample.h
Comments
On Fri, Dec 16, 2022 at 8:36 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > This time there is a trivial resolution of a merge conflict > related to commit c302378bc157f6a7 ("libbpf: Hashmap interface update to > allow both long and void* keys/values"), that touched tools/perf/ files. Normally I'd ask you very sternly to please not resolve merge conflicts for me, but since I just screwed up another merge due to being on the road and not having done a full build test, I guess I will just be quiet this time. So the real reason for this email is that I get an error like this on my laptop when trying to build the perf tools: INSTALL libbpf_headers Traceback (most recent call last): File "util/setup.py", line 31, in <module> from setuptools import setup, Extension ImportError: No module named setuptools cp: cannot stat 'python_ext_build/lib/perf*.so': No such file or directory make[2]: *** [Makefile.perf:651: python/perf] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [Makefile.perf:236: sub-make] Error 2 make: *** [Makefile:70: all] Error 2 and it's not new to this pull - I've seen it before and it's something stupid I've done. I think it's a missing package dependency that this laptop then hits. But considering my previous merge failure, I'm not super-happy about traveling with a laptop that then can't do this build test. It would be lovely to have that package dependency - whatever it may be - tested for explicitly. Hint hint. Linus
The pull request you sent on Fri, 16 Dec 2022 11:36:09 -0300:
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-tools-for-v6.2-1-2022-12-16
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/aa4800e31c547ed00681318335ca2298c4bca33a
Thank you!
Em Fri, Dec 16, 2022 at 01:41:24PM -0600, Linus Torvalds escreveu: > On Fri, Dec 16, 2022 at 8:36 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > This time there is a trivial resolution of a merge conflict > > related to commit c302378bc157f6a7 ("libbpf: Hashmap interface update to > > allow both long and void* keys/values"), that touched tools/perf/ files. > Normally I'd ask you very sternly to please not resolve merge > conflicts for me, but since I just screwed up another merge due to I thought I was helping you... Now I know better :-/ > being on the road and not having done a full build test, I guess I > will just be quiet this time. > So the real reason for this email is that I get an error like this on > my laptop when trying to build the perf tools: > INSTALL libbpf_headers > Traceback (most recent call last): > File "util/setup.py", line 31, in <module> > from setuptools import setup, Extension > ImportError: No module named setuptools > cp: cannot stat 'python_ext_build/lib/perf*.so': No such file or directory > make[2]: *** [Makefile.perf:651: python/perf] Error 1 > make[2]: *** Waiting for unfinished jobs.... > make[1]: *** [Makefile.perf:236: sub-make] Error 2 > make: *** [Makefile:70: all] Error 2 > and it's not new to this pull - I've seen it before and it's something > stupid I've done. > I think it's a missing package dependency that this laptop then hits. > But considering my previous merge failure, I'm not super-happy about > traveling with a laptop that then can't do this build test. My bad, I should have acted upon that immediately, oh well, fell thru the cracks but now I have a fix in my perf/core and perf/urgent branches. git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git perf/urgent It will be in my next pull req if you prefer not to apply it unsigned or manually from the copy below. > It would be lovely to have that package dependency - whatever it may > be - tested for explicitly. Hint hint. And below you have it, now back to the pool, the kids are waiting :-) Regards, - Arnaldo From 71c2c68e4fadc9019d727bdcf54490c438d59cdb Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo <acme@redhat.com> Date: Sat, 17 Dec 2022 11:37:15 -0300 Subject: [PATCH 1/1] perf python: Don't stop building if python setuptools isn't installed The python3-setuptools package is needed to build the python binding, so that one can use things like: # ~acme/git/perf/tools/perf/python/twatch.py cpu: 6, pid: 4573, tid: 2184618 { type: exit, pid: 4573, ppid: 4172, tid: 2184618, ptid: 4172, time: 12563190090107} cpu: 24, pid: 4573, tid: 4573 { type: fork, pid: 4573, ppid: 4573, tid: 2190991, ptid: 4573, time: 12563415289331} cpu: 29, pid: 4573, tid: 2190991 { type: comm, pid: 4573, tid: 2190991, comm: StreamT~ns #401 } cpu: 29, pid: 4573, tid: 2190991 { type: comm, pid: 4573, tid: 2190991, comm: StreamT~ns #401 } ^CTraceback (most recent call last): File "/var/home/acme/git/perf/tools/perf/python/twatch.py", line 61, in <module> main() File "/var/home/acme/git/perf/tools/perf/python/twatch.py", line 33, in main evlist.poll(timeout = -1) KeyboardInterrupt # That have 'import perf;'. But distros don't always have that python3-setuptools (or equivalent) installed, which was breaking the build. Just check if it is installed and emit a warning that such binding isn't being built and continue the build without it: With it: $ rpm -q python3-setuptools python3-setuptools-59.6.0-3.fc36.noarch $ rm -rf /tmp/build/perf; mkdir -p /tmp/build/perf $ make O=/tmp/build/perf -C tools/perf install-bin make: Entering directory '/var/home/acme/git/perf/tools/perf' <SNIP> ... libpython: [ on ] <SNIP> GEN /tmp/build/perf/python/perf.cpython-310-x86_64-linux-gnu.so <SNIP> $ ls -la /tmp/build/perf/python/perf.cpython-310-x86_64-linux-gnu.so -rwxr-xr-x. 1 acme acme 1609112 Dec 17 11:39 /tmp/build/perf/python/perf.cpython-310-x86_64-linux-gnu.so $ Without it: $ sudo rpm -e python3-setuptools $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf $ make O=/tmp/build/perf -C tools/perf install-bin make: Entering directory '/var/home/acme/git/perf/tools/perf' <SNIP> ... libpython: [ on ] <SNIP> $ ls -la /tmp/build/perf/python/perf.cpython-310-x86_64-linux-gnu.so ls: cannot access '/tmp/build/perf/python/perf.cpython-310-x86_64-linux-gnu.so': No such file or directory $ Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Makefile.config | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 83ed969b95b4a53f..c21bd6010be1384c 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -890,8 +890,13 @@ else else LDFLAGS += $(PYTHON_EMBED_LDFLAGS) EXTLIBS += $(PYTHON_EMBED_LIBADD) - PYTHON_EXTENSION_SUFFIX := $(shell $(PYTHON) -c 'from importlib import machinery; print(machinery.EXTENSION_SUFFIXES[0])') - LANG_BINDINGS += $(obj-perf)python/perf$(PYTHON_EXTENSION_SUFFIX) + PYTHON_SETUPTOOLS_INSTALLED := $(shell $(PYTHON) -c 'import setuptools;' 2> /dev/null && echo "yes" || echo "no") + ifeq ($(PYTHON_SETUPTOOLS_INSTALLED), yes) + PYTHON_EXTENSION_SUFFIX := $(shell $(PYTHON) -c 'from importlib import machinery; print(machinery.EXTENSION_SUFFIXES[0])') + LANG_BINDINGS += $(obj-perf)python/perf$(PYTHON_EXTENSION_SUFFIX) + else + msg := $(warning Missing python setuptools, the python binding won't be built, please install python3-setuptools or equivalent); + endif CFLAGS += -DHAVE_LIBPYTHON_SUPPORT $(call detected,CONFIG_LIBPYTHON) endif
On December 17, 2022 9:50:07 AM EST, Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > >And below you have it, now back to the pool, the kids are waiting :-) > Sure, rub it in to those of us in North America dealing with a snow storm! -- Steve
On Sat, Dec 17, 2022 at 8:50 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > The python3-setuptools package is needed to build the python binding, so > that one can use things like: So this fixes the error, but there's some other reason for it. I have Package python3-setuptools-59.6.0-3.fc36.noarch is already installed. and with that patch the 'perf' build now works for me, but it says: Makefile.config:898: Missing python setuptools, the python binding won't be built, please install python3-setuptools or equivalent and then (pre-existing) Makefile.config:921: Python interpreter too old (older than 3.6) disabling jevent generation but I have python3-3.10.8-3.fc36.x86_64 Now, for some reason I *also* have python2 installed, but that one is called "python2". [ Me trying to figure things out ] Ok, so if I uninstall my old python2 install, I now get Makefile.config:880: No python interpreter was found: disables Python support - please install python-devel/python-dev Makefile.config:915: No python interpreter disabling jevent generation ok, so I didn't have 'python3-devel' installed. Installing that fixes some things, but then I get Makefile.config:889: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev so apparently perf really wants *both* python2 and python3 installed. Isn't that a bit excessive? Anyway, it's clearly something about the install on this laptop, but the error messages and the "this package is missing" things are clearly not entirely right. Whatever. It does build cleanly now for me, and I'll ignore that "No 'Python.h' (for Python 2.x support)" thing. Linus
On December 17, 2022 4:55:25 PM GMT-03:00, Linus Torvalds <torvalds@linux-foundation.org> wrote: >On Sat, Dec 17, 2022 at 8:50 AM Arnaldo Carvalho de Melo ><acme@kernel.org> wrote: >> >> The python3-setuptools package is needed to build the python binding, so >> that one can use things like: > >So this fixes the error, but there's some other reason for it. > >I have > > Package python3-setuptools-59.6.0-3.fc36.noarch is already installed. > >and with that patch the 'perf' build now works for me, but it says: > > Makefile.config:898: Missing python setuptools, the python binding >won't be built, please install python3-setuptools or equivalent > >and then (pre-existing) > > Makefile.config:921: Python interpreter too old (older than 3.6) >disabling jevent generation > >but I have > > python3-3.10.8-3.fc36.x86_64 > >Now, for some reason I *also* have python2 installed, but that one is >called "python2". > >[ Me trying to figure things out ] > >Ok, so if I uninstall my old python2 install, I now get > > Makefile.config:880: No python interpreter was found: disables >Python support - please install python-devel/python-dev > Makefile.config:915: No python interpreter disabling jevent generation > >ok, so I didn't have 'python3-devel' installed. Installing that fixes >some things, but then I get > > Makefile.config:889: No 'Python.h' (for Python 2.x support) was >found: disables Python support - please install >python-devel/python-dev > >so apparently perf really wants *both* python2 and python3 installed. >Isn't that a bit excessive? Well, perf used python2, then python3 became and option, had to be explicitly selected, then the default moved to python3. Now probably the sensible thing is to get rid of all things related to python2, I'll spend some time on this... >Anyway, it's clearly something about the install on this laptop, but >the error messages and the "this package is missing" things are >clearly not entirely right. > >Whatever. It does build cleanly now for me, and I'll ignore that "No >'Python.h' (for Python 2.x support)" thing. Ok, thanks for testing it. - Arnaldo
tldr;: if you do: $ make -C tools clean $ sudo dnf remove python2 python2-devel $ sudo dnf install python-devel It should build cleanly, below I looked at the various places these feature detections are made and found places for improving messages, etc. Ian, that "jevent generation" gets confused when python2 _and_ python3 is installed, please take a look at that. - Arnaldo Em Sat, Dec 17, 2022 at 01:55:25PM -0600, Linus Torvalds escreveu: > On Sat, Dec 17, 2022 at 8:50 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > The python3-setuptools package is needed to build the python binding, so > > that one can use things like: > > So this fixes the error, but there's some other reason for it. > > I have > > Package python3-setuptools-59.6.0-3.fc36.noarch is already installed. > > and with that patch the 'perf' build now works for me, but it says: > > Makefile.config:898: Missing python setuptools, the python binding > won't be built, please install python3-setuptools or equivalent > > and then (pre-existing) > > Makefile.config:921: Python interpreter too old (older than 3.6) > disabling jevent generation > > but I have > > python3-3.10.8-3.fc36.x86_64 > > Now, for some reason I *also* have python2 installed, but that one is > called "python2". > [ Me trying to figure things out ] > > Ok, so if I uninstall my old python2 install, I now get > > Makefile.config:880: No python interpreter was found: disables > Python support - please install python-devel/python-dev > Makefile.config:915: No python interpreter disabling jevent generation > > ok, so I didn't have 'python3-devel' installed. Installing that fixes > some things, but then I get > > Makefile.config:889: No 'Python.h' (for Python 2.x support) was > found: disables Python support - please install > python-devel/python-dev Humm, I couldn't reproduce this one, as I have: ⬢[acme@toolbox perf]$ grep libpython /tmp/build/perf/FEATURE-DUMP feature-libpython=1 ⬢[acme@toolbox perf]$ And that message only happens when that feature-libpython != 1 That is set by this feature query snippet: ⬢[acme@toolbox perf]$ cat tools/build/feature/test-libpython.c // SPDX-License-Identifier: GPL-2.0 #include <Python.h> int main(void) { Py_Initialize(); return 0; } #undef _GNU_SOURCE ⬢[acme@toolbox perf]$ One can see the output of building it at (if you build it without O=, please look at tools/build/feature/test-libpython.make.output instead): ): ⬢[acme@toolbox perf]$ cat /tmp/build/perf/feature/test-libpython.make.output ⬢[acme@toolbox perf]$ In my case, it is working, so empty make.output file and the test binary works and links with python3 (tools/build/feature/test-libpython.bin when building without O=): ⬢[acme@toolbox perf]$ file /tmp/build/perf/feature/test-libpython.bin /tmp/build/perf/feature/test-libpython.bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=601e3a065cc8e045e7a46199234c0bbf80707981, for GNU/Linux 3.2.0, not stripped ⬢[acme@toolbox perf]$ ldd /tmp/build/perf/feature/test-libpython.bin linux-vdso.so.1 (0x00007ffc371fe000) libpython3.10.so.1.0 => /lib64/libpython3.10.so.1.0 (0x00007fddb0200000) libcrypt.so.2 => /lib64/libcrypt.so.2 (0x00007fddb05f9000) libm.so.6 => /lib64/libm.so.6 (0x00007fddb0122000) libc.so.6 => /lib64/libc.so.6 (0x00007fddafe00000) /lib64/ld-linux-x86-64.so.2 (0x00007fddb063f000) ⬢[acme@toolbox perf]$ The needed file is available and is part of the python3-devel file: ⬢[acme@toolbox perf]$ ls -la /usr/include/python3.10/Python.h -rw-r--r--. 1 root root 3224 Oct 11 08:21 /usr/include/python3.10/Python.h ⬢[acme@toolbox perf]$ rpm -qf /usr/include/python3.10/Python.h python3-devel-3.10.8-3.fc36.x86_64 ⬢[acme@toolbox perf]$ That message needs updating, its from a long time ago: 9734163b6ee1425c6 tools/perf/config/Makefile (Ingo Molnar 2013-09-30 15:18:37 +0200 888) ifneq ($(feature-libpython), 1) 6c5aa23704e2786eb tools/perf/config/Makefile (Ingo Molnar 2015-02-28 09:33:45 +0100 889) $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev) 6e533cf12de06368a tools/perf/config/Makefile (Jiri Olsa 2013-03-18 00:35:32 +0100 890) else > so apparently perf really wants *both* python2 and python3 installed. > Isn't that a bit excessive? I'll update that message, its one or the other, and we will work to make it support only python3 as python2 is deprecated. > Anyway, it's clearly something about the install on this laptop, but > the error messages and the "this package is missing" things are > clearly not entirely right. Right, perhaps a 'make -C tools clean' may clean some previous feature detection that stuck somehow? I'll do continue tinkering here to see if I get this in a better shape. > Whatever. It does build cleanly now for me, and I'll ignore that "No > 'Python.h' (for Python 2.x support)" thing. The only time I got this message was now that I uninstalled python3-devel: Makefile.config:889: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev The next one I got because I have python2 installed: ⬢[acme@toolbox perf]$ rpm -qa | grep python2 python2.7-2.7.18-22.fc36.x86_64 Makefile.config:921: Python interpreter too old (older than 3.6) disabling jevent generation Removing python2 I get: Makefile.config:880: No python interpreter was found: disables Python support - please install python-devel/python-dev Makefile.config:915: No python interpreter disabling jevent generation So you get this message: > Makefile.config:889: No 'Python.h' (for Python 2.x support) was > found: disables Python support - please install > python-devel/python-dev When you have python2 and python3 but no python3-devel nor python2-devel: ⬢[acme@toolbox perf]$ rpm -q python3 python3-3.10.8-3.fc36.x86_64 ⬢[acme@toolbox perf]$ rpm -qa | grep python2 python2.7-2.7.18-22.fc36.x86_64 ⬢[acme@toolbox perf]$ rpm -q python2-devel package python2-devel is not installed ⬢[acme@toolbox perf]$ rpm -q python3-devel package python3-devel is not installed ⬢[acme@toolbox perf]$ m make: Entering directory '/var/home/acme/git/perf/tools/perf' BUILD: Doing 'make -j32' parallel build <SNIP> Makefile.config:889: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev Makefile.config:921: Python interpreter too old (older than 3.6) disabling jevent generation Auto-detecting system features: <SNIP> ... libpython: [ OFF ] ⬢[acme@toolbox perf]$ If I then uninstall python2: ⬢[acme@toolbox perf]$ sudo dnf remove python2 It changes to: Makefile.config:880: No python interpreter was found: disables Python support - please install python-devel/python-dev Makefile.config:915: No python interpreter disabling jevent generation Which is more sensible, then if I install python-devel: ⬢[acme@toolbox perf]$ sudo dnf install python-devel $ sudo dnf install python-devel I see no warnings, clean build and libpython detected: ... libpython: [ on ] ⬢[acme@toolbox perf]$ ldd /tmp/build/perf/perf | grep python libpython3.10.so.1.0 => /lib64/libpython3.10.so.1.0 (0x00007f1eea200000) ⬢[acme@toolbox perf]$ - Arnaldo