mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-25 03:46:17 +00:00
f16fe29368
[ Upstream commit68ca249c96
] As of now, bpf counters (bperf) don't support event groups. But the default perf stat includes topdown metrics if supported (on recent Intel machines) which require groups. That makes perf stat exiting. $ sudo perf stat --bpf-counter true bpf managed perf events do not yet support groups. Actually the test explicitly uses cycles event only, but it missed to pass the option when it checks the availability of the command. Fixes:2c0cb9f560
("perf test: Add a shell test for 'perf stat --bpf-counters' new option") Reviewed-by: Song Liu <song@kernel.org> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: bpf@vger.kernel.org Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230825164152.165610-2-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
45 lines
1.3 KiB
Bash
Executable file
45 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
# perf stat --bpf-counters test
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
set -e
|
|
|
|
# check whether $2 is within +/- 10% of $1
|
|
compare_number()
|
|
{
|
|
first_num=$1
|
|
second_num=$2
|
|
|
|
# upper bound is first_num * 110%
|
|
upper=$(expr $first_num + $first_num / 10 )
|
|
# lower bound is first_num * 90%
|
|
lower=$(expr $first_num - $first_num / 10 )
|
|
|
|
if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
|
|
echo "The difference between $first_num and $second_num are greater than 10%."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# skip if --bpf-counters is not supported
|
|
if ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then
|
|
if [ "$1" = "-v" ]; then
|
|
echo "Skipping: --bpf-counters not supported"
|
|
perf --no-pager stat -e cycles --bpf-counters true || true
|
|
fi
|
|
exit 2
|
|
fi
|
|
|
|
base_cycles=$(perf stat --no-big-num -e cycles -- perf bench sched messaging -g 1 -l 100 -t 2>&1 | awk '/cycles/ {print $1}')
|
|
if [ "$base_cycles" == "<not" ]; then
|
|
echo "Skipping: cycles event not counted"
|
|
exit 2
|
|
fi
|
|
bpf_cycles=$(perf stat --no-big-num --bpf-counters -e cycles -- perf bench sched messaging -g 1 -l 100 -t 2>&1 | awk '/cycles/ {print $1}')
|
|
if [ "$bpf_cycles" == "<not" ]; then
|
|
echo "Failed: cycles not counted with --bpf-counters"
|
|
exit 1
|
|
fi
|
|
|
|
compare_number $base_cycles $bpf_cycles
|
|
exit 0
|