perf test: Avoid system wide when not privileged
authorIan Rogers <irogers@google.com>
Sat, 30 Sep 2023 06:02:06 +0000 (23:02 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 5 Oct 2023 05:28:07 +0000 (22:28 -0700)
Switch the test program to sleep that makes more sense for system wide
events. Only enable system wide when root or not paranoid. This avoids
failures under some testing conditions like ARM cloud.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20230930060206.2353141-1-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/tests/shell/stat_all_metricgroups.sh

index cb35e488809ae6c4d095f3e7c86af39e6c9a7a9f..f3e305649e2c10ab582a034bc893f5b563e9c69d 100755 (executable)
@@ -4,9 +4,21 @@
 
 set -e
 
-for m in $(perf list --raw-dump metricgroups); do
+function ParanoidAndNotRoot()
+{
+  [ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ]
+}
+
+system_wide_flag="-a"
+if ParanoidAndNotRoot 0
+then
+  system_wide_flag=""
+fi
+
+for m in $(perf list --raw-dump metricgroups)
+do
   echo "Testing $m"
-  perf stat -M "$m" -a true
+  perf stat -M "$m" $system_wide_flag sleep 0.01
 done
 
 exit 0