Commit 29d97dee authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarIan 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.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent c7a774d7
Loading
Loading
Loading
Loading
+31 −16
Original line number Diff line number Diff line
#!/bin/sh
#!/bin/bash
# perf all metrics test
# SPDX-License-Identifier: GPL-2.0

set -e

err=0
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.
  if [[ "$result" =~ "${m:0:50}" ]] || [[ "$result" =~ "<not supported>" ]]
  then
    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)
    if [[ ! "$result" =~ "$m" ]]; then
  if [[ "$result" =~ "${m:0:50}" ]]
  then
    continue
  fi
  echo "Metric '$m' not printed in:"
  echo "$result"
      if [[ "$result" =~ "FP_ARITH" && "$err" != "1" ]]; then
        echo "Skip, not fail, for FP issues"
  if [[ "$err" != "1" ]]
  then
    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
      err=1
    fi
  fi
  fi
done

exit "$err"