perf test: Workload test of metric and metricgroups

Test every metric and metricgroup with 'true' as a workload. For
metrics, check that we see the metric printed or get unsupported. If the
'true' workload executes too quickly retry with 'perf bench internals
synthesize'.

v3. Fix test condition (thanks to Paul A. Clarke <[email protected]>). Add a
    fallback case of a larger workload so that we don't ignore "<not
    counted>".
v2. Switched the workload to something faster.

Signed-off-by: Ian Rogers <[email protected]>
Reviewed-by: John Garry <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Jin Yao <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Clarke <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
Ian Rogers authored and Arnaldo Carvalho de Melo committed 2021-09-28 15:43:49 -03:00
1 parent 0e46c83075
commit 4a87dea9e6
2 files changed
+34

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
# perf all metricgroups test
# SPDX-License-Identifier: GPL-2.0
set -e
for m in $(perf list --raw-dump metricgroups); do
echo "Testing $m"
perf stat -M "$m" true
done
exit 0
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
# perf all metrics test
# SPDX-License-Identifier: GPL-2.0
set -e
for m in $(perf list --raw-dump metrics); do
echo "Testing $m"
result=$(perf stat -M "$m" true 2>&1)
if [[ ! "$result" =~ "$m" ]] && [[ ! "$result" =~ "<not supported>" ]]; then
# We failed to see the metric and the events are support. Possibly the
# workload was too small so retry with something longer.
result=$(perf stat -M "$m" perf bench internals synthesize 2>&1)
if [[ ! "$result" =~ "$m" ]]; then
echo "Metric '$m' not printed in:"
echo "$result"
exit 1
fi
fi
done
exit 0