2 # perf stat --bpf-counters test (exclusive)
3 # SPDX-License-Identifier: GPL-2.0
7 workload
="perf test -w sqrtloop"
9 # check whether $2 is within +/- 20% of $1
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 )
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%."
31 if [ "$base_instructions" = "<not" ]; then
32 echo "Skipping: instructions event not counted"
35 if [ "$bpf_instructions" = "<not" ]; then
36 echo "Failed: instructions not counted with --bpf-counters"
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
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
62 # skip if --bpf-counters is not supported
63 if ! perf stat
-e instructions
--bpf-counters true
> /dev
/null
2>&1; then
64 if [ "$1" = "-v" ]; then
65 echo "Skipping: --bpf-counters not supported"
66 perf
--no-pager stat
-e instructions
--bpf-counters true || true