From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ian Rogers <irogers@google.com>,
James Clark <james.clark@linaro.org>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v3] perf test: Fix perf stat --bpf-counters on hybrid machines
Date: Sun, 22 Mar 2026 19:05:09 -0300 [thread overview]
Message-ID: <acBnlSMHS9oe8yFR@x1> (raw)
In-Reply-To: <20260319064513.9269-1-namhyung@kernel.org>
On Wed, Mar 18, 2026 at 11:45:13PM -0700, Namhyung Kim wrote:
> The test constantly fails on my Intel hybrid machine. The issue was it
> has two events in the output even if I only gave it one event.
>
> $ perf stat -e instructions -- perf test -w sqrtloop
>
> Performance counter stats for 'perf test -w sqrtloop':
>
> 910,856,421 cpu_atom/instructions/ (28.05%)
> 14,852,865,997 cpu_core/instructions/ (96.79%)
>
> 1.014313341 seconds time elapsed
>
> 1.004114000 seconds user
> 0.008174000 seconds sys
>
> Let's modify the awk script to add the values for each line and print
> the total. The variable 'i' has a number of input lines that have valid
> output and variable 'c' has the sum of actual counter values. That way
> it should work on any platforms.
Still doesn't pass reliably for me, only once it did work:
⬢ [acme@toolbx perf-tools]$ git log --oneline -1
38415985abcdb64d (HEAD -> perf-tools, number/perf-tools, number/HEAD) perf test: Fix perf stat --bpf-counters on hybrid machines
⬢ [acme@toolbx perf-tools]$
logout
acme@x1:~/git/perf-tools$
acme@x1:~/git/perf-tools$
acme@x1:~/git/perf-tools$ sudo su -
root@x1:~# perf -v
perf version 7.0.rc4.g38415985abcd
root@x1:~# perf test 152
152: perf stat --bpf-counters test : FAILED!
root@x1:~# set -o vi
root@x1:~# perf test -v 152
152: perf stat --bpf-counters test : Ok
root@x1:~# perf test -v 152
--- start ---
test child forked, pid 1829364
Testing --bpf-counters The difference between 21947395146 and 16947118203 are greater than 20%.
---- end(-1) ----
152: perf stat --bpf-counters test : FAILED!
root@x1:~# perf test -v 152
--- start ---
test child forked, pid 1829401
Testing --bpf-counters [Success]
Testing bpf event modifier The difference between 22461906845 and 17190344465 are greater than 20%.
---- end(-1) ----
152: perf stat --bpf-counters test : FAILED!
root@x1:~# perf test -v 152
--- start ---
test child forked, pid 1829445
Testing --bpf-counters The difference between 24210793380 and 16852007232 are greater than 20%.
---- end(-1) ----
152: perf stat --bpf-counters test : FAILED!
root@x1:~# perf test -v 152
--- start ---
test child forked, pid 1829481
Testing --bpf-counters The difference between 24293201069 and 17225814972 are greater than 20%.
---- end(-1) ----
152: perf stat --bpf-counters test : FAILED!
root@x1:~# grep -m1 "model name" /proc/cpuinfo
model name : 13th Gen Intel(R) Core(TM) i7-1365U
root@x1:~#
acme@x1:~/git/perf-tools$ uname -a
Linux x1 6.17.12-300.fc43.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Dec 13 05:06:24 UTC 2025 x86_64 GNU/Linux
acme@x1:~/git/perf-tools$
> Reviewed-by: Ian Rogers <irogers@google.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> v3) make sure to print numbers w/o thousand separators.
> v2) handle '<not counted>' and '<not supported>'.
>
> tools/perf/tests/shell/stat_bpf_counters.sh | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/tests/shell/stat_bpf_counters.sh b/tools/perf/tests/shell/stat_bpf_counters.sh
> index f43e28a136d3c9bc..35463358b273ce1c 100755
> --- a/tools/perf/tests/shell/stat_bpf_counters.sh
> +++ b/tools/perf/tests/shell/stat_bpf_counters.sh
> @@ -41,8 +41,14 @@ check_counts()
> test_bpf_counters()
> {
> printf "Testing --bpf-counters "
> - base_instructions=$(perf stat --no-big-num -e instructions -- $workload 2>&1 | awk '/instructions/ {print $1}')
> - bpf_instructions=$(perf stat --no-big-num --bpf-counters -e instructions -- $workload 2>&1 | awk '/instructions/ {print $1}')
> + base_instructions=$(perf stat --no-big-num -e instructions -- $workload 2>&1 | \
> + awk -v i=0 -v c=0 '/instructions/ { \
> + if ($1 != "<not") { i++; c += $1 } \
> + } END { if (i > 0) printf "%.0f", c; else print "<not" }')
> + bpf_instructions=$(perf stat --no-big-num --bpf-counters -e instructions -- $workload 2>&1 | \
> + awk -v i=0 -v c=0 '/instructions/ { \
> + if ($1 != "<not") { i++; c += $1 } \
> + } END { if (i > 0) printf "%.0f", c; else print "<not" }')
> check_counts $base_instructions $bpf_instructions
> compare_number $base_instructions $bpf_instructions
> echo "[Success]"
> @@ -52,8 +58,14 @@ test_bpf_modifier()
> {
> printf "Testing bpf event modifier "
> stat_output=$(perf stat --no-big-num -e instructions/name=base_instructions/,instructions/name=bpf_instructions/b -- $workload 2>&1)
> - base_instructions=$(echo "$stat_output"| awk '/base_instructions/ {print $1}')
> - bpf_instructions=$(echo "$stat_output"| awk '/bpf_instructions/ {print $1}')
> + base_instructions=$(echo "$stat_output"| \
> + awk -v i=0 -v c=0 '/base_instructions/ { \
> + if ($1 != "<not") { i++; c += $1 } \
> + } END { if (i > 0) printf "%.0f", c; else print "<not" }')
> + bpf_instructions=$(echo "$stat_output"| \
> + awk -v i=0 -v c=0 '/bpf_instructions/ { \
> + if ($1 != "<not") { i++; c += $1 } \
> + } END { if (i > 0) printf "%.0f", c; else print "<not" }')
> check_counts $base_instructions $bpf_instructions
> compare_number $base_instructions $bpf_instructions
> echo "[Success]"
> --
> 2.53.0
next prev parent reply other threads:[~2026-03-22 22:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-19 6:45 [PATCH v3] perf test: Fix perf stat --bpf-counters on hybrid machines Namhyung Kim
2026-03-22 22:05 ` Arnaldo Carvalho de Melo [this message]
2026-03-23 20:15 ` Ian Rogers
2026-03-23 20:24 ` [RFC PATCH v1] " Ian Rogers
2026-03-23 20:26 ` Ian Rogers
2026-03-25 7:04 ` Namhyung Kim
2026-03-25 17:16 ` [PATCH v2] " Ian Rogers
2026-04-03 19:20 ` Falcon, Thomas
2026-04-01 21:52 ` [PATCH v3] " Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=acBnlSMHS9oe8yFR@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.