From: Veronika Molnarova <vmolnaro@redhat.com>
To: kajoljain <kjain@linux.ibm.com>,
linux-perf-users@vger.kernel.org, acme@kernel.org,
acme@redhat.com
Cc: mpetlan@redhat.com
Subject: Re: [PATCH v2] perf test stat_all_pmu.sh: Parse return value of perf stat
Date: Fri, 26 Apr 2024 18:30:52 +0200 [thread overview]
Message-ID: <0db3b460-2520-4dbb-8864-458b3139566f@redhat.com> (raw)
In-Reply-To: <89dfc623-e583-437f-812f-d2a40dc42611@linux.ibm.com>
Hi Jain,
Thanks for letting me know, there was just some typo fixed in the comment upstream,
which caused it to fail. Will fix the patch, also add Ian's suggestion and
resend it shortly.
Thanks,
Veronika
On 4/23/24 10:01, kajoljain wrote:
> Hi Veronika,
> I was trying to test this patch. But I am not able to apply this
> patch cleanly on both upstream and acme's tmp.perf-tools-next branch.
>
> error: patch failed: tools/perf/tests/shell/stat_all_pmu.sh:2
> error: tools/perf/tests/shell/stat_all_pmu.sh: patch does not apply
>
> Can you check that part, but since its simple change I added it manually
> and could test the patch.
>
> Patch looks fine to me. I tested it by disabling hv-gpci events in HMC
>
> Without patch changes:
>
> localhost:/dev/shm/linux/tools/perf # ./perf test 95 -vv
> 95: perf all PMU test:
> --- start ---
> test child forked, pid 2234
> ---
> Testing cpu/stalled-cycles-frontend/
> Testing
> hv_gpci/system_hypervisor_times_time_spent_managing_partitions_over_entitlement/
> ---- end(-1) ----
> 95: perf all PMU test :
> FAILED!
>
> with patch changes:
>
> Testing event
> 'hv_gpci/system_hypervisor_times_time_spent_managing_partitions_over_entitlement/'
> -- no permission to enable
> Testing event
> 'hv_gpci/system_hypervisor_times_time_spent_on_system_management/' -- no
> permission to enable
> Testing event
> 'hv_gpci/system_hypervisor_times_time_spent_processing_virtual_processor_timers/'
> -- no permission to enable
> Testing event
> 'hv_gpci/system_hypervisor_times_time_spent_to_dispatch_virtual_processors/'
> -- no permission to enable
> Testing event
> 'hv_gpci/system_tlbie_count_and_time_time_spent_issuing_tlbies/' -- no
> permission to enable
> Testing event
> 'hv_gpci/system_tlbie_count_and_time_tlbie_instructions_issued/' -- no
> permission to enable
> Testing event 'pm_br_mpred_cmpl' -- supported
>
> On 4/15/24 15:12, vmolnaro@redhat.com wrote:
>> From: Veronika Molnarova <vmolnaro@redhat.com>
>>
>> With the upstream MR !3916 of commit a381bd3615de6 ('powerpc/hv-gpci:
>> Fix the H_GET_PERF_COUNTER_INFO hcall return value checks') the perf
>> stat for hv_gpci events without required permission set returns an
>> error value of -1 to differentiate the output from the unsupported
>> events. The stat_all_pmu test was designed in a way, that if any
>> command exits with a non-zero value the test exits with an error
>> value without any information provided due to the 'set -e' option.
>>
>> Running stat_all_pmu test on powerpc machine with unsupported hv_gpci
>> event causes failure after the MR as the zero return value was required.
>> The issue propagated upstream as the list of the files that affected perf
>> did not cover the changed files and was updated after the issue was
>> discovered. It was caught by CKI testing where it was triaged to stop
>> blocking further MRs, as most of the powerpc machines do not support
>> some of the hv_gpci events.
>>
>> Remove the 'set -e' option from the test and rework the test case to log
>> the status of the event for better maintainability. Instead of exiting
>> immediately after 'perf stat' ends with a non-zero value, check the
>> return value and output of the 'perf stat' command with the appropriate action.
>>
>> Link to the MR !3916 of commit a381bd3615de6:
>> https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/3916
>>
>> Signed-off-by: Veronika Molnarova <vmolnaro@redhat.com>
>> ---
>> tools/perf/tests/shell/stat_all_pmu.sh | 36 ++++++++++++++++++--------
>> 1 file changed, 25 insertions(+), 11 deletions(-)
>>
>> diff --git a/tools/perf/tests/shell/stat_all_pmu.sh b/tools/perf/tests/shell/stat_all_pmu.sh
>> index c77955419173..d9f0d2100baa 100755
>> --- a/tools/perf/tests/shell/stat_all_pmu.sh
>> +++ b/tools/perf/tests/shell/stat_all_pmu.sh
>> @@ -2,21 +2,35 @@
>> # perf all PMU test
>> # SPDX-License-Identifier: GPL-2.0
>>
>> -set -e
>
> It will create extra blank line can you remove that. Also make sure to
> test the patch with checkpatch script to avoid any format issue.
>
> Thanks,
> Kajol Jain
>
>>
>> # Test all PMU events; however exclude parametrized ones (name contains '?')
>> for p in $(perf list --raw-dump pmu | sed 's/[[:graph:]]\+?[[:graph:]]\+[[:space:]]//g'); do
>> - echo "Testing $p"
>> - result=$(perf stat -e "$p" true 2>&1)
>> - if ! echo "$result" | grep -q "$p" && ! echo "$result" | grep -q "<not supported>" ; then
>> - # We failed to see the event and it is supported. Possibly the workload was
>> - # too small so retry with something longer.
>> - result=$(perf stat -e "$p" perf bench internals synthesize 2>&1)
>> - if ! echo "$result" | grep -q "$p" ; then
>> - echo "Event '$p' not printed in:"
>> - echo "$result"
>> - exit 1
>> + echo -n "Testing event '$p' -- "
>> + stat_output=$(perf stat -e "$p" true 2>&1)
>> + stat_result=$?
>> + if echo "$stat_output" | grep -q "$p"; then
>> + # return value 0 if counters gets printed either if the event is supported or not
>> + if [ $stat_result -eq 0 ] && ! echo "$stat_output" | grep -q "<not supported>"; then
>> + echo "supported"
>> + elif [ $stat_result -eq 0 ]; then
>> + echo "not supported"
>> + # return value 255 when the required pemission for the event is not set
>> + elif [ $stat_result -eq 255 ] && echo "$stat_output" | grep -q "No permission"; then
>> + echo "no permission to enable"
>> + # return value 129 when trying to run 'perf stat' with a non-existent event
>> + elif [ $stat_result -eq 129 ] && echo "$stat_output" | grep -q "Bad event name"; then
>> + echo "Fail: Bad event name"
>> + echo "$stat_output"
>> + exit 1
>> + else
>> + echo "Fail: Unknown return value $stat_result"
>> + echo "$stat_output"
>> + exit 1
>> fi
>> + else
>> + echo "Fail: Event '$p' not printed in:"
>> + echo "$stat_output"
>> + exit 1
>> fi
>> done
>>
>
next prev parent reply other threads:[~2024-04-26 16:31 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-09 13:02 [PATCH] perf test stat_all_pmu.sh: Parse return value of perf stat vmolnaro
2024-04-11 18:18 ` Arnaldo Carvalho de Melo
2024-04-15 9:42 ` [PATCH v2] " vmolnaro
2024-04-15 17:41 ` Arnaldo Carvalho de Melo
2024-04-16 14:33 ` Arnaldo Carvalho de Melo
2024-04-18 7:06 ` kajoljain
2024-04-23 8:01 ` kajoljain
2024-04-26 16:30 ` Veronika Molnarova [this message]
2024-04-16 15:03 ` [PATCH] " Ian Rogers
2024-04-16 15:28 ` Arnaldo Carvalho de Melo
2024-04-29 10:56 ` [PATCH v2] " vmolnaro
2024-05-03 20:25 ` Arnaldo Carvalho de Melo
2024-05-08 10:28 ` Veronika Molnarova
2024-08-12 13:13 ` Arnaldo Carvalho de Melo
2024-08-13 7:51 ` kajoljain
2024-08-13 15:15 ` Arnaldo Carvalho de Melo
2024-08-14 16:35 ` Veronika Molnarova
2024-04-26 16:19 ` [PATCH] " Veronika Molnarova
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=0db3b460-2520-4dbb-8864-458b3139566f@redhat.com \
--to=vmolnaro@redhat.com \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=kjain@linux.ibm.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=mpetlan@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).