Skip to content

Commit 67359f3

Browse files
committed
perf test bpf-counters: Add test for BPF event modifier
JIRA: https://issues.redhat.com/browse/RHEL-33020 upstream ======== commit d9bd1d4 Author: Ian Rogers <irogers@google.com> Date: Tue Apr 16 10:00:14 2024 -0700 description =========== 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> Signed-off-by: Michael Petlan <mpetlan@redhat.com>
1 parent ffa09cd commit 67359f3

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)