162306a36Sopenharmony_ci#!/bin/sh 262306a36Sopenharmony_ci# perf stat --bpf-counters test 362306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciset -e 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci# check whether $2 is within +/- 10% of $1 862306a36Sopenharmony_cicompare_number() 962306a36Sopenharmony_ci{ 1062306a36Sopenharmony_ci first_num=$1 1162306a36Sopenharmony_ci second_num=$2 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci # upper bound is first_num * 110% 1462306a36Sopenharmony_ci upper=$(expr $first_num + $first_num / 10 ) 1562306a36Sopenharmony_ci # lower bound is first_num * 90% 1662306a36Sopenharmony_ci lower=$(expr $first_num - $first_num / 10 ) 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci if [ $second_num -gt $upper ] || [ $second_num -lt $lower ]; then 1962306a36Sopenharmony_ci echo "The difference between $first_num and $second_num are greater than 10%." 2062306a36Sopenharmony_ci exit 1 2162306a36Sopenharmony_ci fi 2262306a36Sopenharmony_ci} 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci# skip if --bpf-counters is not supported 2562306a36Sopenharmony_ciif ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then 2662306a36Sopenharmony_ci if [ "$1" = "-v" ]; then 2762306a36Sopenharmony_ci echo "Skipping: --bpf-counters not supported" 2862306a36Sopenharmony_ci perf --no-pager stat -e cycles --bpf-counters true || true 2962306a36Sopenharmony_ci fi 3062306a36Sopenharmony_ci exit 2 3162306a36Sopenharmony_cifi 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cibase_cycles=$(perf stat --no-big-num -e cycles -- perf bench sched messaging -g 1 -l 100 -t 2>&1 | awk '/cycles/ {print $1}') 3462306a36Sopenharmony_ciif [ "$base_cycles" = "<not" ]; then 3562306a36Sopenharmony_ci echo "Skipping: cycles event not counted" 3662306a36Sopenharmony_ci exit 2 3762306a36Sopenharmony_cifi 3862306a36Sopenharmony_cibpf_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}') 3962306a36Sopenharmony_ciif [ "$bpf_cycles" = "<not" ]; then 4062306a36Sopenharmony_ci echo "Failed: cycles not counted with --bpf-counters" 4162306a36Sopenharmony_ci exit 1 4262306a36Sopenharmony_cifi 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cicompare_number $base_cycles $bpf_cycles 4562306a36Sopenharmony_ciexit 0 46