Skip to content

Commit b5e018f

Browse files
committed
Merge: perf/testing: Fix perf-stat-bpf-counters-test
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/4919 JIRA: https://issues.redhat.com/browse/RHEL-33020 Signed-off-by: Michael Petlan <mpetlan@redhat.com> Approved-by: Artem Savkov <asavkov@redhat.com> Approved-by: Tony Camuso <tcamuso@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Lucas Zampieri <lzampier@redhat.com>
2 parents 08d32a2 + 1a7693d commit b5e018f

File tree

1 file changed

+54
-25
lines changed

1 file changed

+54
-25
lines changed

tools/perf/tests/shell/stat_bpf_counters.sh

Lines changed: 54 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,71 @@
44

55
set -e
66

7+
workload="perf test -w brstack"
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_instructions=$1
29+
bpf_instructions=$2
30+
31+
if [ "$base_instructions" = "<not" ]; then
32+
echo "Skipping: instructions event not counted"
33+
exit 2
34+
fi
35+
if [ "$bpf_instructions" = "<not" ]; then
36+
echo "Failed: instructions not counted with --bpf-counters"
37+
exit 1
38+
fi
39+
}
40+
41+
test_bpf_counters()
42+
{
43+
printf "Testing --bpf-counters "
44+
base_instructions=$(perf stat --no-big-num -e instructions -- $workload 2>&1 | awk '/instructions/ {print $1}')
45+
bpf_instructions=$(perf stat --no-big-num --bpf-counters -e instructions -- $workload 2>&1 | awk '/instructions/ {print $1}')
46+
check_counts $base_instructions $bpf_instructions
47+
compare_number $base_instructions $bpf_instructions
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 instructions/name=base_instructions/,instructions/name=bpf_instructions/b -- $workload 2>&1)
55+
base_instructions=$(echo "$stat_output"| awk '/base_instructions/ {print $1}')
56+
bpf_instructions=$(echo "$stat_output"| awk '/bpf_instructions/ {print $1}')
57+
check_counts $base_instructions $bpf_instructions
58+
compare_number $base_instructions $bpf_instructions
59+
echo "[Success]"
2260
}
2361

2462
# skip if --bpf-counters is not supported
25-
if ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then
63+
if ! perf stat -e instructions --bpf-counters true > /dev/null 2>&1; then
2664
if [ "$1" = "-v" ]; then
2765
echo "Skipping: --bpf-counters not supported"
28-
perf --no-pager stat -e cycles --bpf-counters true || true
66+
perf --no-pager stat -e instructions --bpf-counters true || true
2967
fi
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)