Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

perf test stat: Additional topdown grouping tests

Add a loop and helper function to avoid repetition, the loop uses
arrays so switch the shell to bash. Add additional topdown group tests
where a topdown event needs to be moved beyond others and the slots
event isn't first in the target group. This replicates issues that
occur on hybrid systems where the other events are for the cpu_atom
PMU. Test with both PMU and software events. Place the slots event
later in the event list.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250307023906.1135613-5-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>

authored by

Ian Rogers and committed by
Namhyung Kim
5b562763 16dd43df

+47 -36
+47 -36
tools/perf/tests/shell/stat.sh
··· 1 - #!/bin/sh 1 + #!/bin/bash 2 2 # perf stat tests 3 3 # SPDX-License-Identifier: GPL-2.0 4 4 ··· 67 67 echo "Topdown event group test [Skipped event parsing failed]" 68 68 return 69 69 fi 70 - if perf stat -e '{slots,topdown-retiring}' true 2>&1 | grep -E -q "<not supported>" 70 + td_err=0 71 + do_topdown_group_test() { 72 + events=$1 73 + failure=$2 74 + if perf stat -e "$events" true 2>&1 | grep -E -q "<not supported>" 75 + then 76 + echo "Topdown event group test [Failed $failure for '$events']" 77 + td_err=1 78 + return 79 + fi 80 + } 81 + do_topdown_group_test "{slots,topdown-retiring}" "events not supported" 82 + do_topdown_group_test "{instructions,r400,r8000}" "raw format slots not reordered first" 83 + filler_events=("instructions" "cycles" 84 + "context-switches" "faults") 85 + for ((i = 0; i < ${#filler_events[@]}; i+=2)) 86 + do 87 + filler1=${filler_events[i]} 88 + filler2=${filler_events[i+1]} 89 + do_topdown_group_test "$filler1,topdown-retiring,slots" \ 90 + "slots not reordered first in no-group case" 91 + do_topdown_group_test "slots,$filler1,topdown-retiring" \ 92 + "topdown metrics event not reordered in no-group case" 93 + do_topdown_group_test "{$filler1,topdown-retiring,slots}" \ 94 + "slots not reordered first in single group case" 95 + do_topdown_group_test "{$filler1,slots},topdown-retiring" \ 96 + "topdown metrics event not move into slots group" 97 + do_topdown_group_test "topdown-retiring,{$filler1,slots}" \ 98 + "topdown metrics event not move into slots group last" 99 + do_topdown_group_test "{$filler1,slots},{topdown-retiring}" \ 100 + "topdown metrics group not merge into slots group" 101 + do_topdown_group_test "{topdown-retiring},{$filler1,slots}" \ 102 + "topdown metrics group not merge into slots group last" 103 + do_topdown_group_test "{$filler1,slots},$filler2,topdown-retiring" \ 104 + "non-adjacent topdown metrics group not move into slots group" 105 + do_topdown_group_test "$filler2,topdown-retiring,{$filler1,slots}" \ 106 + "non-adjacent topdown metrics group not move into slots group last" 107 + do_topdown_group_test "{$filler1,slots},{$filler2,topdown-retiring}" \ 108 + "metrics group not merge into slots group" 109 + do_topdown_group_test "{$filler1,topdown-retiring},{$filler2,slots}" \ 110 + "metrics group not merge into slots group last" 111 + done 112 + if test "$td_err" -eq 0 71 113 then 72 - echo "Topdown event group test [Failed events not supported]" 73 - err=1 74 - return 114 + echo "Topdown event group test [Success]" 115 + else 116 + err="$td_err" 75 117 fi 76 - if perf stat -e 'instructions,topdown-retiring,slots' true 2>&1 | grep -E -q "<not supported>" 77 - then 78 - echo "Topdown event group test [Failed slots not reordered first in no-group case]" 79 - err=1 80 - return 81 - fi 82 - if perf stat -e '{instructions,topdown-retiring,slots}' true 2>&1 | grep -E -q "<not supported>" 83 - then 84 - echo "Topdown event group test [Failed slots not reordered first in single group case]" 85 - err=1 86 - return 87 - fi 88 - if perf stat -e '{instructions,slots},topdown-retiring' true 2>&1 | grep -E -q "<not supported>" 89 - then 90 - echo "Topdown event group test [Failed topdown metrics event not move into slots group]" 91 - err=1 92 - return 93 - fi 94 - if perf stat -e '{instructions,slots},{topdown-retiring}' true 2>&1 | grep -E -q "<not supported>" 95 - then 96 - echo "Topdown event group test [Failed topdown metrics group not merge into slots group]" 97 - err=1 98 - return 99 - fi 100 - if perf stat -e '{instructions,r400,r8000}' true 2>&1 | grep -E -q "<not supported>" 101 - then 102 - echo "Topdown event group test [Failed raw format slots not reordered first]" 103 - err=1 104 - return 105 - fi 106 - echo "Topdown event group test [Success]" 107 118 } 108 119 109 120 test_topdown_weak_groups() {