From: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
To: acme@kernel.org, jolsa@kernel.org, irogers@google.com,
namhyung@kernel.org
Cc: linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
maddy@linux.ibm.com, atrajeev@linux.vnet.ibm.com,
kjain@linux.ibm.com, disgoel@linux.vnet.ibm.com
Subject: [PATCH V2 1/2] tools/perf/tests: perf all metrics test fails when perf_event access is restricted
Date: Fri, 4 Aug 2023 10:30:46 +0530 [thread overview]
Message-ID: <20230804050047.94240-1-atrajeev@linux.vnet.ibm.com> (raw)
Perf all metrics test fails as below when perf_event access
is restricted.
./perf test -v "perf all metrics test"
Metric 'Memory_RD_BW_Chip' not printed in:
Error:
Access to performance monitoring and observability operations is limited.
Enforced MAC policy settings (SELinux) can limit access to performance
—
access to performance monitoring and observability operations for processes
without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability.
—
test child finished with -1
---- end ----
perf all metrics test: FAILED!
The perf all metrics test picks the input events from
"perf list --raw-dump metrics" and runs "perf stat -M "$m""
for each of the metrics in the list. It fails here for some
of the metrics which needs access, since it collects system
wide resource details/statistics. Fix the testcase to skip
those metric events. The check is added at two places:
- When metric is run for workload monitoring
- when metric is run for system wide.
It could happen that some of the metric events are not valid
in per-thread mode. Example from an x86 system:
$ ./perf stat -M smi_cycles true
Error:
Invalid event (msr/smi/u) in per-thread mode, enable system wide with '-a'.
The test fallbacks to system wide if first stage fails.
But when run with system wide for this metric, it hits the
issue with access restriction.
$ ./perf stat -M smi_cycles -a sleep 0.1
Error:
Access to performance monitoring and observability operations is limited.
Similar some events report not supported while running with system wide.
Example from an x86 system:
$ ./perf stat -M tma_info_system_socket_clks -a sleep 0.1
Performance counter stats for 'system wide':
<not supported> cbox_0/event=0x0/u
0.102633747 seconds time elapsed
Hence the checks for unsupported events and access restrictions is
added for both cases.
Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
---
Changelog:
v1 -> v2:
Added the check for access restriction in workload as
well as system wide check.
tools/perf/tests/shell/stat_all_metrics.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/tests/shell/stat_all_metrics.sh b/tools/perf/tests/shell/stat_all_metrics.sh
index 54774525e18a..b26420885560 100755
--- a/tools/perf/tests/shell/stat_all_metrics.sh
+++ b/tools/perf/tests/shell/stat_all_metrics.sh
@@ -1,18 +1,18 @@
#!/bin/bash
# perf all metrics test
# SPDX-License-Identifier: GPL-2.0
-
err=0
+//list="tma_info_system_socket_clks"
for m in $(perf list --raw-dump metrics); do
echo "Testing $m"
result=$(perf stat -M "$m" true 2>&1)
- if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]]
+ if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]] || [[ "$result" =~ "Access to performance monitoring and observability operations is limited" ]]
then
continue
fi
# Failed so try system wide.
result=$(perf stat -M "$m" -a sleep 0.01 2>&1)
- if [[ "$result" =~ ${m:0:50} ]]
+ if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]] || [[ "$result" =~ "Access to performance monitoring and observability operations is limited" ]]
then
continue
fi
--
2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
To: acme@kernel.org, jolsa@kernel.org, irogers@google.com,
namhyung@kernel.org
Cc: atrajeev@linux.vnet.ibm.com, kjain@linux.ibm.com,
linux-perf-users@vger.kernel.org, maddy@linux.ibm.com,
disgoel@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org
Subject: [PATCH V2 1/2] tools/perf/tests: perf all metrics test fails when perf_event access is restricted
Date: Fri, 4 Aug 2023 10:30:46 +0530 [thread overview]
Message-ID: <20230804050047.94240-1-atrajeev@linux.vnet.ibm.com> (raw)
Perf all metrics test fails as below when perf_event access
is restricted.
./perf test -v "perf all metrics test"
Metric 'Memory_RD_BW_Chip' not printed in:
Error:
Access to performance monitoring and observability operations is limited.
Enforced MAC policy settings (SELinux) can limit access to performance
—
access to performance monitoring and observability operations for processes
without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability.
—
test child finished with -1
---- end ----
perf all metrics test: FAILED!
The perf all metrics test picks the input events from
"perf list --raw-dump metrics" and runs "perf stat -M "$m""
for each of the metrics in the list. It fails here for some
of the metrics which needs access, since it collects system
wide resource details/statistics. Fix the testcase to skip
those metric events. The check is added at two places:
- When metric is run for workload monitoring
- when metric is run for system wide.
It could happen that some of the metric events are not valid
in per-thread mode. Example from an x86 system:
$ ./perf stat -M smi_cycles true
Error:
Invalid event (msr/smi/u) in per-thread mode, enable system wide with '-a'.
The test fallbacks to system wide if first stage fails.
But when run with system wide for this metric, it hits the
issue with access restriction.
$ ./perf stat -M smi_cycles -a sleep 0.1
Error:
Access to performance monitoring and observability operations is limited.
Similar some events report not supported while running with system wide.
Example from an x86 system:
$ ./perf stat -M tma_info_system_socket_clks -a sleep 0.1
Performance counter stats for 'system wide':
<not supported> cbox_0/event=0x0/u
0.102633747 seconds time elapsed
Hence the checks for unsupported events and access restrictions is
added for both cases.
Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
---
Changelog:
v1 -> v2:
Added the check for access restriction in workload as
well as system wide check.
tools/perf/tests/shell/stat_all_metrics.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/tests/shell/stat_all_metrics.sh b/tools/perf/tests/shell/stat_all_metrics.sh
index 54774525e18a..b26420885560 100755
--- a/tools/perf/tests/shell/stat_all_metrics.sh
+++ b/tools/perf/tests/shell/stat_all_metrics.sh
@@ -1,18 +1,18 @@
#!/bin/bash
# perf all metrics test
# SPDX-License-Identifier: GPL-2.0
-
err=0
+//list="tma_info_system_socket_clks"
for m in $(perf list --raw-dump metrics); do
echo "Testing $m"
result=$(perf stat -M "$m" true 2>&1)
- if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]]
+ if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]] || [[ "$result" =~ "Access to performance monitoring and observability operations is limited" ]]
then
continue
fi
# Failed so try system wide.
result=$(perf stat -M "$m" -a sleep 0.01 2>&1)
- if [[ "$result" =~ ${m:0:50} ]]
+ if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]] || [[ "$result" =~ "Access to performance monitoring and observability operations is limited" ]]
then
continue
fi
--
2.31.1
next reply other threads:[~2023-08-04 5:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-04 5:00 Athira Rajeev [this message]
2023-08-04 5:00 ` [PATCH V2 1/2] tools/perf/tests: perf all metrics test fails when perf_event access is restricted Athira Rajeev
2023-08-04 5:00 ` [PATCH V2 2/2] tools/perf/tests: perf all metricgroups " Athira Rajeev
2023-08-04 5:00 ` Athira Rajeev
2023-08-07 14:44 ` Disha Goel
2023-08-07 21:19 ` Arnaldo Carvalho de Melo
2023-08-07 21:19 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230804050047.94240-1-atrajeev@linux.vnet.ibm.com \
--to=atrajeev@linux.vnet.ibm.com \
--cc=acme@kernel.org \
--cc=disgoel@linux.vnet.ibm.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kjain@linux.ibm.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.