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>
This commit is contained in:
parent
eb4d27cf9a
commit
d9bd1d4264
1 changed files with 50 additions and 21 deletions
|
@ -4,6 +4,8 @@
|
|||
|
||||
set -e
|
||||
|
||||
workload="perf bench sched messaging -g 1 -l 100 -t"
|
||||
|
||||
# check whether $2 is within +/- 20% of $1
|
||||
compare_number()
|
||||
{
|
||||
|
@ -21,6 +23,42 @@ compare_number()
|
|||
fi
|
||||
}
|
||||
|
||||
check_counts()
|
||||
{
|
||||
base_cycles=$1
|
||||
bpf_cycles=$2
|
||||
|
||||
if [ "$base_cycles" = "<not" ]; then
|
||||
echo "Skipping: cycles event not counted"
|
||||
exit 2
|
||||
fi
|
||||
if [ "$bpf_cycles" = "<not" ]; then
|
||||
echo "Failed: cycles not counted with --bpf-counters"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_bpf_counters()
|
||||
{
|
||||
printf "Testing --bpf-counters "
|
||||
base_cycles=$(perf stat --no-big-num -e cycles -- $workload 2>&1 | awk '/cycles/ {print $1}')
|
||||
bpf_cycles=$(perf stat --no-big-num --bpf-counters -e cycles -- $workload 2>&1 | awk '/cycles/ {print $1}')
|
||||
check_counts $base_cycles $bpf_cycles
|
||||
compare_number $base_cycles $bpf_cycles
|
||||
echo "[Success]"
|
||||
}
|
||||
|
||||
test_bpf_modifier()
|
||||
{
|
||||
printf "Testing bpf event modifier "
|
||||
stat_output=$(perf stat --no-big-num -e cycles/name=base_cycles/,cycles/name=bpf_cycles/b -- $workload 2>&1)
|
||||
base_cycles=$(echo "$stat_output"| awk '/base_cycles/ {print $1}')
|
||||
bpf_cycles=$(echo "$stat_output"| awk '/bpf_cycles/ {print $1}')
|
||||
check_counts $base_cycles $bpf_cycles
|
||||
compare_number $base_cycles $bpf_cycles
|
||||
echo "[Success]"
|
||||
}
|
||||
|
||||
# skip if --bpf-counters is not supported
|
||||
if ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then
|
||||
if [ "$1" = "-v" ]; then
|
||||
|
@ -30,16 +68,7 @@ if ! perf stat -e cycles --bpf-counters true > /dev/null 2>&1; then
|
|||
exit 2
|
||||
fi
|
||||
|
||||
base_cycles=$(perf stat --no-big-num -e cycles -- perf bench sched messaging -g 1 -l 100 -t 2>&1 | awk '/cycles/ {print $1}')
|
||||
if [ "$base_cycles" = "<not" ]; then
|
||||
echo "Skipping: cycles event not counted"
|
||||
exit 2
|
||||
fi
|
||||
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}')
|
||||
if [ "$bpf_cycles" = "<not" ]; then
|
||||
echo "Failed: cycles not counted with --bpf-counters"
|
||||
exit 1
|
||||
fi
|
||||
test_bpf_counters
|
||||
test_bpf_modifier
|
||||
|
||||
compare_number $base_cycles $bpf_cycles
|
||||
exit 0
|
||||
|
|
Loading…
Reference in a new issue