tools/perf/tests/shell/lib/stat_output.sh | 5 +++++ tools/perf/tests/shell/stat+json_output.sh | 5 +++++ 2 files changed, 10 insertions(+)
On s390x z/VM machines the CPU Measurement Facility is not available.
Events cycles and instructions do not exist.
Running above tests on s390 z/VM always fails with this error:
# ./perf test 84 86
84: perf stat JSON output linter : FAILED!
86: perf stat STD output linter : FAILED!
#
Root cause is command
# perf stat -j --metric-only -e instructions,cycles -- true
{"metric-value" : "none"}
#
which fails due to unsupported events and returns "none".
Do not execute this test case on s390 z/VM machines.
Output after:
# ./perf test 84 86
84: perf stat JSON output linter : Ok
86: perf stat STD output linter : Ok
#
Fixes: 45a86d017adf ("perf test: Add --metric-only to perf stat output tests")
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Reviewed-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/tests/shell/lib/stat_output.sh | 5 +++++
tools/perf/tests/shell/stat+json_output.sh | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/tools/perf/tests/shell/lib/stat_output.sh b/tools/perf/tests/shell/lib/stat_output.sh
index 4d4aac547f01..a708dedf7d9d 100644
--- a/tools/perf/tests/shell/lib/stat_output.sh
+++ b/tools/perf/tests/shell/lib/stat_output.sh
@@ -151,6 +151,11 @@ check_per_socket()
check_metric_only()
{
echo -n "Checking $1 output: metric only "
+ if [ "$(uname -m)" = "s390x" ] && grep -q z/VM /proc/sysinfo
+ then
+ echo "[Skip] not supported on z/VM"
+ return
+ fi
perf stat --metric-only $2 -e instructions,cycles true
commachecker --metric-only
echo "[Success]"
diff --git a/tools/perf/tests/shell/stat+json_output.sh b/tools/perf/tests/shell/stat+json_output.sh
index a4f257ea839e..d78e06636a3a 100755
--- a/tools/perf/tests/shell/stat+json_output.sh
+++ b/tools/perf/tests/shell/stat+json_output.sh
@@ -176,6 +176,11 @@ check_per_socket()
check_metric_only()
{
echo -n "Checking json output: metric only "
+ if [ "$(uname -m)" = "s390x" ] && grep -q z/VM /proc/sysinfo
+ then
+ echo "[Skip] not supported on z/VM"
+ return
+ fi
perf stat -j --metric-only -e instructions,cycles -o "${stat_output}" true
$PYTHON $pythonchecker --metric-only --file "${stat_output}"
echo "[Success]"
--
2.49.0
On Tue, Apr 15, 2025 at 03:45:53PM +0200, Thomas Richter wrote:
> On s390x z/VM machines the CPU Measurement Facility is not available.
> Events cycles and instructions do not exist.
> Running above tests on s390 z/VM always fails with this error:
>
> # ./perf test 84 86
> 84: perf stat JSON output linter : FAILED!
> 86: perf stat STD output linter : FAILED!
> #
I would guess this fails also for KVM guests?
> diff --git a/tools/perf/tests/shell/lib/stat_output.sh b/tools/perf/tests/shell/lib/stat_output.sh
> index 4d4aac547f01..a708dedf7d9d 100644
> --- a/tools/perf/tests/shell/lib/stat_output.sh
> +++ b/tools/perf/tests/shell/lib/stat_output.sh
> @@ -151,6 +151,11 @@ check_per_socket()
> check_metric_only()
> {
> echo -n "Checking $1 output: metric only "
> + if [ "$(uname -m)" = "s390x" ] && grep -q z/VM /proc/sysinfo
> + then
> + echo "[Skip] not supported on z/VM"
> + return
> + fi
Wouldn't it be better to test for the availability of the CPU-measurement
counter facility? That is: test if facility number 67 is present in the
facilities field of /proc/cpuinfo.
On 4/17/25 13:52, Heiko Carstens wrote:
> On Tue, Apr 15, 2025 at 03:45:53PM +0200, Thomas Richter wrote:
>> On s390x z/VM machines the CPU Measurement Facility is not available.
>> Events cycles and instructions do not exist.
>> Running above tests on s390 z/VM always fails with this error:
>>
>> # ./perf test 84 86
>> 84: perf stat JSON output linter : FAILED!
>> 86: perf stat STD output linter : FAILED!
>> #
>
> I would guess this fails also for KVM guests?
Yes
>
>> diff --git a/tools/perf/tests/shell/lib/stat_output.sh b/tools/perf/tests/shell/lib/stat_output.sh
>> index 4d4aac547f01..a708dedf7d9d 100644
>> --- a/tools/perf/tests/shell/lib/stat_output.sh
>> +++ b/tools/perf/tests/shell/lib/stat_output.sh
>> @@ -151,6 +151,11 @@ check_per_socket()
>> check_metric_only()
>> {
>> echo -n "Checking $1 output: metric only "
>> + if [ "$(uname -m)" = "s390x" ] && grep -q z/VM /proc/sysinfo
>> + then
>> + echo "[Skip] not supported on z/VM"
>> + return
>> + fi
>
> Wouldn't it be better to test for the availability of the CPU-measurement
> counter facility? That is: test if facility number 67 is present in the
> facilities field of /proc/cpuinfo.
>
I can certains change the check and grep for facilities number 67.
Will send v2.
--
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.