mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 16:41:58 +00:00
perf test: Add basic stat and topdown group test
Add a basic stat test. Add two tests of grouping behavior for topdown events. Topdown events are special as they must be grouped with the slots event first. Reviewed-by: Kan Liang <kan.liang@linux.intel.com> Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Florian Fischer <florian.fischer@muhq.space> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.garry@huawei.com> Cc: Kim Phillips <kim.phillips@amd.com> Cc: Madhavan Srinivasan <maddy@linux.ibm.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Riccardo Mancini <rickyman7@gmail.com> Cc: Shunsuke Nakamura <nakamura.shun@fujitsu.com> Cc: Stephane Eranian <eranian@google.com> Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com> Link: https://lore.kernel.org/r/20220517052724.283874-3-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
d98079c05b
commit
6a973e2919
67
tools/perf/tests/shell/stat.sh
Executable file
67
tools/perf/tests/shell/stat.sh
Executable file
@ -0,0 +1,67 @@
|
||||
#!/bin/sh
|
||||
# perf stat tests
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
|
||||
err=0
|
||||
test_default_stat() {
|
||||
echo "Basic stat command test"
|
||||
if ! perf stat true 2>&1 | egrep -q "Performance counter stats for 'true':"
|
||||
then
|
||||
echo "Basic stat command test [Failed]"
|
||||
err=1
|
||||
return
|
||||
fi
|
||||
echo "Basic stat command test [Success]"
|
||||
}
|
||||
|
||||
test_topdown_groups() {
|
||||
# Topdown events must be grouped with the slots event first. Test that
|
||||
# parse-events reorders this.
|
||||
echo "Topdown event group test"
|
||||
if ! perf stat -e '{slots,topdown-retiring}' true > /dev/null 2>&1
|
||||
then
|
||||
echo "Topdown event group test [Skipped event parsing failed]"
|
||||
return
|
||||
fi
|
||||
if perf stat -e '{slots,topdown-retiring}' true 2>&1 | egrep -q "<not supported>"
|
||||
then
|
||||
echo "Topdown event group test [Failed events not supported]"
|
||||
err=1
|
||||
return
|
||||
fi
|
||||
if perf stat -e '{topdown-retiring,slots}' true 2>&1 | egrep -q "<not supported>"
|
||||
then
|
||||
echo "Topdown event group test [Failed slots not reordered first]"
|
||||
err=1
|
||||
return
|
||||
fi
|
||||
echo "Topdown event group test [Success]"
|
||||
}
|
||||
|
||||
test_topdown_weak_groups() {
|
||||
# Weak groups break if the perf_event_open of multiple grouped events
|
||||
# fails. Breaking a topdown group causes the events to fail. Test a very large
|
||||
# grouping to see that the topdown events aren't broken out.
|
||||
echo "Topdown weak groups test"
|
||||
ok_grouping="{slots,topdown-bad-spec,topdown-be-bound,topdown-fe-bound,topdown-retiring},branch-instructions,branch-misses,bus-cycles,cache-misses,cache-references,cpu-cycles,instructions,mem-loads,mem-stores,ref-cycles,cache-misses,cache-references"
|
||||
if ! perf stat --no-merge -e "$ok_grouping" true > /dev/null 2>&1
|
||||
then
|
||||
echo "Topdown weak groups test [Skipped event parsing failed]"
|
||||
return
|
||||
fi
|
||||
group_needs_break="{slots,topdown-bad-spec,topdown-be-bound,topdown-fe-bound,topdown-retiring,branch-instructions,branch-misses,bus-cycles,cache-misses,cache-references,cpu-cycles,instructions,mem-loads,mem-stores,ref-cycles,cache-misses,cache-references}:W"
|
||||
if perf stat --no-merge -e "$group_needs_break" true 2>&1 | egrep -q "<not supported>"
|
||||
then
|
||||
echo "Topdown weak groups test [Failed events not supported]"
|
||||
err=1
|
||||
return
|
||||
fi
|
||||
echo "Topdown weak groups test [Success]"
|
||||
}
|
||||
|
||||
test_default_stat
|
||||
test_topdown_groups
|
||||
test_topdown_weak_groups
|
||||
exit $err
|
Loading…
Reference in New Issue
Block a user