提交 29d97dee 编写于 作者: I Ian Rogers 提交者: Arnaldo Carvalho de Melo

perf test: Make all metrics test more tolerant

Metric names are truncated so don't try to match all of one.

Allow AMX metrics to skip as floating point ones do.

Metrics for optane memory can also skip rather than fail.

Add a system wide check for uncore metrics.

Restructure code to avoid extensive nesting.

Some impetus for this in:

https://lore.kernel.org/lkml/d32376b5-5538-ff00-6620-e74ad4b4abf2@huawei.com/Suggested-by: NJohn Garry <john.garry@huawei.com>
Signed-off-by: NIan Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.garry@huawei.com>
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: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20220707153449.202409-2-irogers@google.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 c7a774d7
#!/bin/sh #!/bin/bash
# perf all metrics test # perf all metrics test
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
set -e
err=0 err=0
for m in $(perf list --raw-dump metrics); do for m in $(perf list --raw-dump metrics); do
echo "Testing $m" echo "Testing $m"
result=$(perf stat -M "$m" true 2>&1) result=$(perf stat -M "$m" true 2>&1)
if [[ ! "$result" =~ "$m" ]] && [[ ! "$result" =~ "<not supported>" ]]; then if [[ "$result" =~ "${m:0:50}" ]] || [[ "$result" =~ "<not supported>" ]]
# We failed to see the metric and the events are support. Possibly the then
# workload was too small so retry with something longer. continue
fi
# Failed so try system wide.
result=$(perf stat -M "$m" -a true 2>&1)
if [[ "$result" =~ "${m:0:50}" ]]
then
continue
fi
# Failed again, possibly the workload was too small so retry with something
# longer.
result=$(perf stat -M "$m" perf bench internals synthesize 2>&1) result=$(perf stat -M "$m" perf bench internals synthesize 2>&1)
if [[ ! "$result" =~ "$m" ]]; then if [[ "$result" =~ "${m:0:50}" ]]
then
continue
fi
echo "Metric '$m' not printed in:" echo "Metric '$m' not printed in:"
echo "$result" echo "$result"
if [[ "$result" =~ "FP_ARITH" && "$err" != "1" ]]; then if [[ "$err" != "1" ]]
echo "Skip, not fail, for FP issues" then
err=2 err=2
if [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]]
then
echo "Skip, not fail, for FP issues"
elif [[ "$result" =~ "PMM" ]]
then
echo "Skip, not fail, for Optane memory issues"
else else
err=1 err=1
fi fi
fi fi
fi
done done
exit "$err" exit "$err"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册