Skip to content

Commit d9bd1d4

Browse files
captain5050acmel
authored andcommitted
perf test bpf-counters: Add test for BPF event modifier
Refactor test to better enable sharing of logic, to give an idea of progress and introduce test functions. Add test of measuring both cycles and cycles:b simultaneously. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Song Liu <song@kernel.org> Cc: Thomas Richter <tmricht@linux.ibm.com> Link: https://lore.kernel.org/r/20240416170014.985191-2-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent eb4d27c commit d9bd1d4

File tree

1 file changed

+52
-23
lines changed

1 file changed

+52
-23
lines changed

tools/perf/tests/shell/stat_bpf_counters.sh

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,59 @@
44

55
set -e
66

7+
workload="perf bench sched messaging -g 1 -l 100 -t"
8+
79
# check whether $2 is within +/- 20% of $1
810
compare_number()
911
{
10-
first_num=$1
11-
second_num=$2
12-
13-
# upper bound is first_num * 120%
14-
upper=$(expr $first_num + $first_num / 5 )
15-
# lower bound is first_num * 80%
16-
lower=$(expr $first_num - $first_num / 5 )
17-
18-
if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
19-
echo "The difference between $first_num and $second_num are greater than 20%."
20-
exit 1
21-
fi
12+
first_num=$1
13+
second_num=$2
14+
15+
# upper bound is first_num * 120%
16+
upper=$(expr $first_num + $first_num / 5 )
17+
# lower bound is first_num * 80%
18+
lower=$(expr $first_num - $first_num / 5 )
19+
20+
if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then
21+
echo "The difference between $first_num and $second_num are greater than 20%."
22+
exit 1
23+
fi
24+
}
25+
26+
check_counts()
27+
{
28+
base_cycles=$1
29+
bpf_cycles=$2
30+
31+
if [ "$base_cycles" = "<not" ]; then
32+
echo "Skipping: cycles event not counted"
33+
exit 2
34+
fi
35+
if [ "$bpf_cycles" = "<not" ]; then
36+
echo "Failed: cycles not counted with --bpf-counters"
37+
exit 1
38+
fi
39+
}
40+
41+
test_bpf_counters()
42+
{
43+
printf "Testing --bpf-counters "
44+
base_cycles=$(perf stat --no-big-num -e cycles -- $workload 2>&1 | awk '/cycles/ {print $1}')
45+
bpf_cycles=$(perf stat --no-big-num --bpf-counters -e cycles -- $workload 2>&1 | awk '/cycles/ {print $1}')
46+
check_counts $base_cycles $bpf_cycles
47+
compare_number $base_cycles $bpf_cycles
48+
echo "[Success]"
49+
}
50+
51+
test_bpf_modifier()
52+
{
53+
printf "Testing bpf event modifier "
54+
stat_output=$(perf stat --no-big-num -e cycles/name=base_cycles/,cycles/name=bpf_cycles/b -- $workload 2>&1)
55+
base_cycles=$(echo "$stat_output"| awk '/base_cycles/ {print $1}')
56+
bpf_cycles=$(echo "$stat_output"| awk '/bpf_cycles/ {print $1}')
57+
check_counts $base_cycles $bpf_cycles
58+
compare_number $base_cycles $bpf_cycles
59+
echo "[Success]"
2260
}
2361

2462
# skip if --bpf-counters is not supported
@@ -30,16 +68,7 @@ if ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then
3068
exit 2
3169
fi
3270

33-
base_cycles=$(perf stat --no-big-num -e cycles -- perf bench sched messaging -g 1 -l 100 -t 2>&1 | awk '/cycles/ {print $1}')
34-
if [ "$base_cycles" = "<not" ]; then
35-
echo "Skipping: cycles event not counted"
36-
exit 2
37-
fi
38-
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}')
39-
if [ "$bpf_cycles" = "<not" ]; then
40-
echo "Failed: cycles not counted with --bpf-counters"
41-
exit 1
42-
fi
71+
test_bpf_counters
72+
test_bpf_modifier
4373

44-
compare_number $base_cycles $bpf_cycles
4574
exit 0

0 commit comments

Comments
 (0)