tools/perf/tests/shell/stat_all_metrics.sh | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-)
Determine if a metric is default from `perf list --raw-dump $m` eg:
```
$ perf list --raw-dump l1_prefetch_miss_rate
Default4 l1_prefetch_miss_rate
```
If a metric has "not supported" or "no supported events" then ignore
these failures for default metrics. Tidy up the skip/fail messages in
the output to make them easier to spot/read.
Reported-by: Thomas Richter <tmricht@linux.ibm.com>
Closes: https://lore.kernel.org/linux-perf-users/20251119104751.51960-1-tmricht@linux.ibm.com/
Reported-by: Namhyung Kim <namhyung@kernel.org>
Reported-by: James Clark <james.clark@linaro.org>
Closes: https://lore.kernel.org/lkml/aRi9xnwdLh3Dir9f@google.com/
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/shell/stat_all_metrics.sh | 27 ++++++++++++++--------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/tools/perf/tests/shell/stat_all_metrics.sh b/tools/perf/tests/shell/stat_all_metrics.sh
index a7edf01b3943..3dabb39c7cc8 100755
--- a/tools/perf/tests/shell/stat_all_metrics.sh
+++ b/tools/perf/tests/shell/stat_all_metrics.sh
@@ -27,19 +27,20 @@ for m in $(perf list --raw-dump metrics); do
fi
if [[ "$result" =~ "Cannot resolve IDs for" || "$result" =~ "No supported events found" ]]
then
- if [[ "$m" == @(l1_prefetch_miss_rate|stalled_cycles_per_instruction) ]]
+ if [[ $(perf list --raw-dump $m) == "Default"* ]]
then
- # Default metrics that may use unsupported events.
+ echo "[Ignored $m] failed but as a Default metric this can be expected"
+ echo $result
continue
fi
- echo "Metric contains missing events"
+ echo "[Failed $m] Metric contains missing events"
echo $result
err=1 # Fail
continue
elif [[ "$result" =~ \
"Access to performance monitoring and observability operations is limited" ]]
then
- echo "Permission failure"
+ echo "[Skipped $m] Permission failure"
echo $result
if [[ $err -eq 0 ]]
then
@@ -48,7 +49,7 @@ for m in $(perf list --raw-dump metrics); do
continue
elif [[ "$result" =~ "in per-thread mode, enable system wide" ]]
then
- echo "Permissions - need system wide mode"
+ echo "[Skipped $m] Permissions - need system wide mode"
echo $result
if [[ $err -eq 0 ]]
then
@@ -57,7 +58,13 @@ for m in $(perf list --raw-dump metrics); do
continue
elif [[ "$result" =~ "<not supported>" ]]
then
- echo "Not supported events"
+ if [[ $(perf list --raw-dump $m) == "Default"* ]]
+ then
+ echo "[Ignored $m] failed but as a Default metric this can be expected"
+ echo $result
+ continue
+ fi
+ echo "[Skipped $m] Not supported events"
echo $result
if [[ $err -eq 0 ]]
then
@@ -66,7 +73,7 @@ for m in $(perf list --raw-dump metrics); do
continue
elif [[ "$result" =~ "<not counted>" ]]
then
- echo "Not counted events"
+ echo "[Skipped $m] Not counted events"
echo $result
if [[ $err -eq 0 ]]
then
@@ -75,7 +82,7 @@ for m in $(perf list --raw-dump metrics); do
continue
elif [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]]
then
- echo "FP issues"
+ echo "[Skipped $m] FP issues"
echo $result
if [[ $err -eq 0 ]]
then
@@ -84,7 +91,7 @@ for m in $(perf list --raw-dump metrics); do
continue
elif [[ "$result" =~ "PMM" ]]
then
- echo "Optane memory issues"
+ echo "[Skipped $m] Optane memory issues"
echo $result
if [[ $err -eq 0 ]]
then
@@ -101,7 +108,7 @@ for m in $(perf list --raw-dump metrics); do
# No error result and metric shown.
continue
fi
- echo "Metric '$m' has non-zero error '$result_err' or not printed in:"
+ echo "[Failed $m] has non-zero error '$result_err' or not printed in:"
echo "$result"
err=1
done
--
2.52.0.rc1.455.g30608eb744-goog
On Wed, 19 Nov 2025 11:30:47 -0800, Ian Rogers wrote: > Determine if a metric is default from `perf list --raw-dump $m` eg: > ``` > $ perf list --raw-dump l1_prefetch_miss_rate > Default4 l1_prefetch_miss_rate > ``` > If a metric has "not supported" or "no supported events" then ignore > these failures for default metrics. Tidy up the skip/fail messages in > the output to make them easier to spot/read. > > [...] Applied to perf-tools-next, thanks! Best regards, Namhyung
On Wed, Nov 19, 2025 at 11:30:47AM -0800, Ian Rogers wrote: > Determine if a metric is default from `perf list --raw-dump $m` eg: > ``` > $ perf list --raw-dump l1_prefetch_miss_rate > Default4 l1_prefetch_miss_rate > ``` > If a metric has "not supported" or "no supported events" then ignore > these failures for default metrics. Tidy up the skip/fail messages in > the output to make them easier to spot/read. > > Reported-by: Thomas Richter <tmricht@linux.ibm.com> > Closes: https://lore.kernel.org/linux-perf-users/20251119104751.51960-1-tmricht@linux.ibm.com/ > Reported-by: Namhyung Kim <namhyung@kernel.org> > Reported-by: James Clark <james.clark@linaro.org> > Closes: https://lore.kernel.org/lkml/aRi9xnwdLh3Dir9f@google.com/ > Signed-off-by: Ian Rogers <irogers@google.com> Thanks for the fix! $ sudo ./perf test -vv "all metrics" 103: perf all metrics test: --- start --- test child forked, pid 3329979 Testing CPUs_utilized Testing backend_cycles_idle [Ignored backend_cycles_idle] failed but as a Default metric this can be expected Performance counter stats for 'system wide': <not counted> cpu-cycles <not supported> stalled-cycles-backend 0.013059060 seconds time elapsed Testing branch_frequency Testing branch_miss_rate Testing cs_per_second Testing cycles_frequency Testing frontend_cycles_idle Testing insn_per_cycle Testing migrations_per_second Testing page_faults_per_second Testing stalled_cycles_per_instruction [Ignored stalled_cycles_per_instruction] failed but as a Default metric this can be expected Error: No supported events found. The stalled-cycles-backend event is not supported. Testing l1d_miss_rate Testing llc_miss_rate [Ignored llc_miss_rate] failed but as a Default metric this can be expected Error: No supported events found. The LLC-loads event is not supported. Testing dtlb_miss_rate Testing itlb_miss_rate Testing l1i_miss_rate Testing l1_prefetch_miss_rate [Ignored l1_prefetch_miss_rate] failed but as a Default metric this can be expected Performance counter stats for 'system wide': <not counted> L1-dcache-prefetches <not supported> L1-dcache-prefetch-misses 0.012868128 seconds time elapsed Testing branch_misprediction_ratio Testing all_remote_links_outbound Testing nps1_die_to_dram Testing all_l2_cache_accesses Testing all_l2_cache_hits Testing all_l2_cache_misses Testing ic_fetch_miss_ratio Testing l2_cache_accesses_from_l2_hwpf Testing l2_cache_misses_from_l2_hwpf Testing l3_read_miss_latency Testing l1_itlb_misses ---- end(0) ---- 103: perf all metrics test : Ok
On 19/11/2025 7:30 pm, Ian Rogers wrote: > Determine if a metric is default from `perf list --raw-dump $m` eg: > ``` > $ perf list --raw-dump l1_prefetch_miss_rate > Default4 l1_prefetch_miss_rate > ``` > If a metric has "not supported" or "no supported events" then ignore > these failures for default metrics. Tidy up the skip/fail messages in > the output to make them easier to spot/read. > > Reported-by: Thomas Richter <tmricht@linux.ibm.com> > Closes: https://lore.kernel.org/linux-perf-users/20251119104751.51960-1-tmricht@linux.ibm.com/ > Reported-by: Namhyung Kim <namhyung@kernel.org> > Reported-by: James Clark <james.clark@linaro.org> > Closes: https://lore.kernel.org/lkml/aRi9xnwdLh3Dir9f@google.com/ > Signed-off-by: Ian Rogers <irogers@google.com> Reviewed-by: James Clark <james.clark@linaro.org> > --- > tools/perf/tests/shell/stat_all_metrics.sh | 27 ++++++++++++++-------- > 1 file changed, 17 insertions(+), 10 deletions(-) > > diff --git a/tools/perf/tests/shell/stat_all_metrics.sh b/tools/perf/tests/shell/stat_all_metrics.sh > index a7edf01b3943..3dabb39c7cc8 100755 > --- a/tools/perf/tests/shell/stat_all_metrics.sh > +++ b/tools/perf/tests/shell/stat_all_metrics.sh > @@ -27,19 +27,20 @@ for m in $(perf list --raw-dump metrics); do > fi > if [[ "$result" =~ "Cannot resolve IDs for" || "$result" =~ "No supported events found" ]] > then > - if [[ "$m" == @(l1_prefetch_miss_rate|stalled_cycles_per_instruction) ]] > + if [[ $(perf list --raw-dump $m) == "Default"* ]] > then > - # Default metrics that may use unsupported events. > + echo "[Ignored $m] failed but as a Default metric this can be expected" > + echo $result > continue > fi > - echo "Metric contains missing events" > + echo "[Failed $m] Metric contains missing events" > echo $result > err=1 # Fail > continue > elif [[ "$result" =~ \ > "Access to performance monitoring and observability operations is limited" ]] > then > - echo "Permission failure" > + echo "[Skipped $m] Permission failure" > echo $result > if [[ $err -eq 0 ]] > then > @@ -48,7 +49,7 @@ for m in $(perf list --raw-dump metrics); do > continue > elif [[ "$result" =~ "in per-thread mode, enable system wide" ]] > then > - echo "Permissions - need system wide mode" > + echo "[Skipped $m] Permissions - need system wide mode" > echo $result > if [[ $err -eq 0 ]] > then > @@ -57,7 +58,13 @@ for m in $(perf list --raw-dump metrics); do > continue > elif [[ "$result" =~ "<not supported>" ]] > then > - echo "Not supported events" > + if [[ $(perf list --raw-dump $m) == "Default"* ]] > + then > + echo "[Ignored $m] failed but as a Default metric this can be expected" > + echo $result > + continue > + fi > + echo "[Skipped $m] Not supported events" > echo $result > if [[ $err -eq 0 ]] > then > @@ -66,7 +73,7 @@ for m in $(perf list --raw-dump metrics); do > continue > elif [[ "$result" =~ "<not counted>" ]] > then > - echo "Not counted events" > + echo "[Skipped $m] Not counted events" > echo $result > if [[ $err -eq 0 ]] > then > @@ -75,7 +82,7 @@ for m in $(perf list --raw-dump metrics); do > continue > elif [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]] > then > - echo "FP issues" > + echo "[Skipped $m] FP issues" > echo $result > if [[ $err -eq 0 ]] > then > @@ -84,7 +91,7 @@ for m in $(perf list --raw-dump metrics); do > continue > elif [[ "$result" =~ "PMM" ]] > then > - echo "Optane memory issues" > + echo "[Skipped $m] Optane memory issues" > echo $result > if [[ $err -eq 0 ]] > then > @@ -101,7 +108,7 @@ for m in $(perf list --raw-dump metrics); do > # No error result and metric shown. > continue > fi > - echo "Metric '$m' has non-zero error '$result_err' or not printed in:" > + echo "[Failed $m] has non-zero error '$result_err' or not printed in:" > echo "$result" > err=1 > done
On 11/19/25 20:30, Ian Rogers wrote: > Reported-by: Thomas Richter <tmricht@linux.ibm.com> Tested-by: Thomas Richter <tmricht@linux.ibm.com> Thanks for fixing this. -- Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany -- IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Wolfgang Wendt Geschäftsführung: David Faller Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
© 2016 - 2025 Red Hat, Inc.