From 59df607bf8b482588fae63fb3e1d666ed866f491 Mon Sep 17 00:00:00 2001 From: Gautam Menghani Date: Mon, 19 May 2025 12:51:44 -0700 Subject: perf python: Add counting.py as example for counting perf events Add counting.py - a python version of counting.c to demonstrate measuring and reading of counts for given perf events. Committer testing: Build perf and make the generated python binding somewhere you can point to to avoid using the one in the distro python3-perf (fedora, may be different in other distros): $ make -k O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin Copy /tmp/build/perf-tools-next/python/perf.cpython-313-x86_64-linux-gnu.so to somewhere outside this toolbox container and then use it with root: # export PYTHONPATH=/root/python/ # ls -la /root/python/ total 10640 drwxr-xr-x. 1 root root 72 May 21 11:40 . dr-xr-x---. 1 root root 574 May 21 11:40 .. -rwxr-xr-x. 1 acme acme 10894360 May 21 11:40 perf.cpython-313-x86_64-linux-gnu.so # tools/perf/python/counting.py | head -5 For evsel(software/cpu-clock/) val: 2930946 enable: 2932479 run: 2932479 For evsel(software/cpu-clock/) val: 2924975 enable: 2926267 run: 2926267 For evsel(software/cpu-clock/) val: 2921017 enable: 2922430 run: 2922430 For evsel(software/cpu-clock/) val: 2914966 enable: 2916549 run: 2916549 For evsel(software/cpu-clock/) val: 2910027 enable: 2911589 run: 2911589 # Signed-off-by: Gautam Menghani Tested-by: Arnaldo Carvalho de Melo Cc: Adrian Hunter Cc: Alexander Shishkin Cc: Howard Chu Cc: Ingo Molnar Cc: Jiri Olsa Cc: Kan Liang Cc: Madhavan Srinivasan Cc: Mark Rutland Cc: Namhyung Kim Cc: Peter Zijlstra [ make the API take a CPU and thread then compute from these the appropriate indices. ] Signed-off-by: Ian Rogers Link: https://lore.kernel.org/linux-perf-users/CAP-5=fWb-=hCYmpg7U5N9C94EucQGTOS7YwR2-fo4ptOexzxyg@mail.gmail.com/ Link: https://lore.kernel.org/r/20250519195148.1708988-8-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/python/counting.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tools/perf/python/counting.py (limited to 'tools/perf/python') diff --git a/tools/perf/python/counting.py b/tools/perf/python/counting.py new file mode 100755 index 000000000000..02121d2bb11d --- /dev/null +++ b/tools/perf/python/counting.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 +# -*- python -*- +# -*- coding: utf-8 -*- + +import argparse +import perf + +def main(event: str): + evlist = perf.parse_events(event) + + for evsel in evlist: + evsel.read_format = perf.FORMAT_TOTAL_TIME_ENABLED | perf.FORMAT_TOTAL_TIME_RUNNING + + evlist.open() + evlist.enable() + + count = 100000 + while count > 0: + count -= 1 + + evlist.disable() + + for evsel in evlist: + for cpu in evsel.cpus(): + for thread in evsel.threads(): + counts = evsel.read(cpu, thread) + print(f"For {evsel} val: {counts.val} enable: {counts.ena} run: {counts.run}") + + evlist.close() + +if __name__ == '__main__': + ap = argparse.ArgumentParser() + ap.add_argument('-e', '--event', help="Events to open", default="cpu-clock,task-clock") + args = ap.parse_args() + main(args.event) -- cgit v1.2.3 ow=1'>rtlwifi: Update regulatory databaseShao Fu1-4/+38 2015-05-26rndis_wlan: harmless issue calling set_bit()Dan Carpenter1-3/+3 2015-05-26ath9k_htc: memory corruption calling set_bit()Dan Carpenter1-3/+3 2015-05-26brcmfmac: avoid gcc-5.1 warningArnd Bergmann1-1/+1 2015-05-26carl9170: match wait_for_completion_timeout return typeNicholas Mc Guire1-2/+3 2015-05-26mwifiex: change dbg print func to mwifiex_dbgZhaoyang Liu29-1698/+2122 2015-05-26mwifiex: add dump data debug supportZhaoyang Liu5-3/+27 2015-05-26mwifiex: add prints debug ctrl supportZhaoyang Liu5-0/+112 2015-05-26mwifiex: add support for FW memory read/write operationsChin-ran Lo6-0/+133 2015-05-26rtlwifi: btcoexist: Fix interference between rtl8723be and BluetoothDaniel Drake1-2/+5 2015-05-26adm8211: fixed the possible pci cache line sizes inside switch-caseOkash Khawaja1-2/+2 2015-05-26adm8211: fix checkpatch errors for indentation and new lineOkash Khawaja1-8/+12 2015-05-26brcmfmac: prohibit ACPI power management for brcmfmac driverFu, Zhonghui1-0/+9 2015-05-26rtlwifi: rtl8192cu: Remove rtl92c_init_beacon_max_error's parameterTaehee Yoo3-3/+3 2015-05-26rtlwifi: rtl8192cu: Remove setting REG_BCN_MAX_ERR code in _rtl92cu_set_media...Taehee Yoo1-1/+0 2015-05-26rtlwifi: rtl8188ee: Fix pwrseqcmd.h include path.Lauri Kenttä2-2/+2 2015-05-25cxgb4: Add PHY firmware support for T420-BT cardsHariprasad Shenai4-42/+375 2015-05-25test_bpf: add more eBPF jump torture casesDaniel Borkmann1-0/+67 2015-05-25amd-xgbe: Add more netif_dbg output to the driverLendacky, Thomas1-6/+62 2015-05-25amd-xgbe: Fix initial mode when auto-negotiation is disabledLendacky, Thomas1-3/+42 2015-05-25amd-xgbe: Add setting of a missing hardware featureLendacky, Thomas1-0/+1 2015-05-25ip: reject too-big defragmented DF-skb when forwardingFlorian Westphal1-7/+11 2015-05-25net: af_unix: implement splice for stream af_unix socketsHannes Frederic Sowa3-21/+121 2015-05-25net: make skb_splice_bits more configureableHannes Frederic Sowa3-21/+40 2015-05-25net: af_unix: implement stream sendpage supportHannes Frederic Sowa1-1/+98 2015-05-25net: skbuff: add skb_append_pagefrags and use itHannes Frederic Sowa3-11/+25 2015-05-24net/mlx4_core: Enable single ported IB VFsOr Gerlitz2-12/+11 2015-05-24net/mlx4_core: Adjust the schedule queue port in reset-to-init tooOr Gerlitz1-0/+8 2015-05-24net/mlx4_core: Adjust the schedule queue port for single ported IB VFsOr Gerlitz1-2/+2 2015-05-24net/mlx4_core: Modify port values when generting EQEs for VFsOr Gerlitz2-5/+26 2015-05-24IB/mlx4: Convert slave port before building address-handleOr Gerlitz1-4/+7 2015-05-24net/mlx4_core: Enhance the MAD_IFC wrapper to convert VF port to physicalOr Gerlitz1-4/+6 2015-05-24enic: Grammar s/an negative/a negative/Geert Uytterhoeven1-1/+1