From: Disha Goel <disgoel@linux.ibm.com>
To: Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
acme@kernel.org, jolsa@kernel.org, mpe@ellerman.id.au
Cc: linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
maddy@linux.vnet.ibm.com, rnsastry@linux.ibm.com,
kjain@linux.ibm.com, disgoel@linux.vnet.ibm.com
Subject: Re: [PATCH 1/2] tools/perf/tests/shell: Update stat+csv_output.sh to include sanity check for topology
Date: Mon, 17 Oct 2022 21:09:55 +0530 [thread overview]
Message-ID: <c92d40fa-4394-a755-62f2-abbd21296412@linux.ibm.com> (raw)
In-Reply-To: <20221006155149.67205-1-atrajeev@linux.vnet.ibm.com>
On 10/6/22 9:21 PM, Athira Rajeev wrote:
> Testcase stat+csv_output.sh fails in powerpc:
>
> 84: perf stat CSV output linter: FAILED!
>
> The testcase "stat+csv_output.sh" verifies perf stat
> CSV output. The test covers aggregation modes like
> per-socket, per-core, per-die, -A (no_aggr mode) along
> with few other tests. It counts expected fields for
> various commands. For example say -A (i.e, AGGR_NONE
> mode), expects 7 fields in the output having "CPU" as
> first field. Same way, for per-socket, it expects the
> first field in result to point to socket id. The testcases
> compares the result with expected count.
>
> The values for socket, die, core and cpu are fetched
> from topology directory:
> /sys/devices/system/cpu/cpu*/topology.
> For example, socket value is fetched from
> "physical_package_id" file of topology directory.
> (cpu__get_topology_int() in util/cpumap.c)
>
> If a platform fails to fetch the topology information,
> values will be set to -1. For example, incase of pSeries
> platform of powerpc, value for "physical_package_id" is
> restricted and not exposed. So, -1 will be assigned.
>
> Perf code has a checks for valid cpu id in "aggr_printout"
> (stat-display.c), which displays the fields. So, in cases
> where topology values not exposed, first field of the
> output displaying will be empty. This cause the testcase
> to fail, as it counts number of fields in the output.
>
> Incase of -A (AGGR_NONE mode,), testcase expects 7 fields
> in the output, becos of -1 value obtained from topology
> files for some, only 6 fields are printed. Hence a testcase
> failure reported due to mismatch in number of fields in
> the output.
>
> Patch here adds a sanity check in the testcase for topology.
> Check will help to skip the test if -1 value found.
>
> Fixes: 7473ee56dbc9 ("perf test: Add checking for perf stat CSV output.")
> Reported-by: Disha Goel <disgoel@linux.vnet.ibm.com>
> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> Suggested-by: James Clark <james.clark@arm.com>
> Suggested-by: Ian Rogers <irogers@google.com>
For the patchset,
Tested-by: Disha Goel <disgoel@linux.vnet.ibm.com>
> ---
> tools/perf/tests/shell/stat+csv_output.sh | 43 ++++++++++++++++++++---
> 1 file changed, 39 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/tests/shell/stat+csv_output.sh b/tools/perf/tests/shell/stat+csv_output.sh
> index eb5196f58190..b7f050aa6210 100755
> --- a/tools/perf/tests/shell/stat+csv_output.sh
> +++ b/tools/perf/tests/shell/stat+csv_output.sh
> @@ -6,6 +6,8 @@
>
> set -e
>
> +skip_test=0
> +
> function commachecker()
> {
> local -i cnt=0
> @@ -156,14 +158,47 @@ check_per_socket()
> echo "[Success]"
> }
>
> +# The perf stat options for per-socket, per-core, per-die
> +# and -A ( no_aggr mode ) uses the info fetched from this
> +# directory: "/sys/devices/system/cpu/cpu*/topology". For
> +# example, socket value is fetched from "physical_package_id"
> +# file in topology directory.
> +# Reference: cpu__get_topology_int in util/cpumap.c
> +# If the platform doesn't expose topology information, values
> +# will be set to -1. For example, incase of pSeries platform
> +# of powerpc, value for "physical_package_id" is restricted
> +# and set to -1. Check here validates the socket-id read from
> +# topology file before proceeding further
> +
> +FILE_LOC="/sys/devices/system/cpu/cpu*/topology/"
> +FILE_NAME="physical_package_id"
> +
> +check_for_topology()
> +{
> + if ! ParanoidAndNotRoot 0
> + then
> + socket_file=`ls $FILE_LOC/$FILE_NAME | head -n 1`
> + [ -z $socket_file ] && return 0
> + socket_id=`cat $socket_file`
> + [ $socket_id == -1 ] && skip_test=1
> + return 0
> + fi
> +}
> +
> +check_for_topology
> check_no_args
> check_system_wide
> -check_system_wide_no_aggr
> check_interval
> check_event
> -check_per_core
> check_per_thread
> -check_per_die
> check_per_node
> -check_per_socket
> +if [ $skip_test -ne 1 ]
> +then
> + check_system_wide_no_aggr
> + check_per_core
> + check_per_die
> + check_per_socket
> +else
> + echo "[Skip] Skipping tests for system_wide_no_aggr, per_core, per_die and per_socket since socket id exposed via topology is invalid"
> +fi
> exit 0
prev parent reply other threads:[~2022-10-17 15:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-06 15:51 [PATCH 1/2] tools/perf/tests/shell: Update stat+csv_output.sh to include sanity check for topology Athira Rajeev
2022-10-06 15:51 ` [PATCH 2/2] tools/perf/tests/shell: Update stat+json_output.sh " Athira Rajeev
2022-10-14 20:22 ` [PATCH 1/2] tools/perf/tests/shell: Update stat+csv_output.sh " Arnaldo Carvalho de Melo
2022-10-17 15:39 ` Disha Goel [this message]
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=c92d40fa-4394-a755-62f2-abbd21296412@linux.ibm.com \
--to=disgoel@linux.ibm.com \
--cc=acme@kernel.org \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=disgoel@linux.vnet.ibm.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.vnet.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=rnsastry@linux.ibm.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).