From: Namhyung Kim <namhyung@kernel.org>
To: Thomas Richter <tmricht@linux.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,
linux-perf-users@vger.kernel.org, acme@kernel.org,
agordeev@linux.ibm.com, gor@linux.ibm.com,
sumanthk@linux.ibm.com, hca@linux.ibm.com, irogers@google.com,
ctshao@google.com
Subject: Re: [PATCH V4] perf test: Allow tolerance for leader sampling test
Date: Wed, 30 Apr 2025 10:16:30 -0700 [thread overview]
Message-ID: <aBJa7qrdMcIEt7y8@google.com> (raw)
In-Reply-To: <20250430140611.599078-1-tmricht@linux.ibm.com>
Hello,
On Wed, Apr 30, 2025 at 04:06:11PM +0200, Thomas Richter wrote:
> V4: Update to be applied onto linux-next
> V3: Added check for missing samples as suggested by Chun-Tse.
> V2: Changed bc invocation to return 0 on success and 1 on error.
>
> There is a known issue that the leader sampling is inconsistent, since
> throttle only affect leader, not the slave. The detail is in [1]. To
> maintain test coverage, this patch sets a tolerance rate of 80% to
> accommodate the throttled samples and prevent test failures due to
> throttling.
>
> [1] lore.kernel.org/20250328182752.769662-1-ctshao@google.com
>
> Signed-off-by: Chun-Tse Shao <ctshao@google.com>
> Suggested-by: Ian Rogers <irogers@google.com>
> Suggested-by: Thomas Richter <tmricht@linux.ibm.com>
> Tested-by: Thomas Richter <tmricht@linux.ibm.com>
> Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> ---
> tools/perf/tests/shell/record.sh | 33 ++++++++++++++++++++++++++------
> 1 file changed, 27 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index 05d91a663fda..587f62e34414 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -240,22 +240,43 @@ test_leader_sampling() {
> err=1
> return
> fi
> + perf script -i "${perfdata}" | grep brstack > $script_output
> + # Check if the two instruction counts are equal in each record.
> + # However, the throttling code doesn't consider event grouping. During throttling, only the
> + # leader is stopped, causing the slave's counts significantly higher. To temporarily solve this,
> + # let's set the tolerance rate to 80%.
> + # TODO: Revert the code for tolerance once the throttling mechanism is fixed.
> index=0
> - perf script -i "${perfdata}" > "${script_output}"
> + valid_counts=0
> + invalid_counts=0
> + tolerance_rate=0.8
> while IFS= read -r line
> do
> - # Check if the two instruction counts are equal in each record
> cycles=$(echo $line | awk '{for(i=1;i<=NF;i++) if($i=="cycles:") print $(i-1)}')
> if [ $(($index%2)) -ne 0 ] && [ ${cycles}x != ${prev_cycles}x ]
> then
> - echo "Leader sampling [Failed inconsistent cycles count]"
> - err=1
> - return
> + invalid_counts=$(($invalid_counts+1))
> + else
> + valid_counts=$(($valid_counts+1))
> fi
> index=$(($index+1))
> prev_cycles=$cycles
> done < "${script_output}"
> - echo "Basic leader sampling test [Success]"
> + total_counts=$(bc <<< "$invalid_counts+$valid_counts")
> + if (( $(bc <<< "$total_counts <= 0") ))
> + then
> + echo "Leader sampling [No sample generated]"
> + err=1
> + return
> + fi
> + isok=$(bc <<< "scale=2; if (($invalid_counts/$total_counts) < (1-$tolerance_rate)) { 0 } else { 1 };")
I think the 'if-else' part can be omitted but I can live with that. :)
Thanks,
Namhyung
> + if [ $isok -eq 1 ]
> + then
> + echo "Leader sampling [Failed inconsistent cycles count]"
> + err=1
> + else
> + echo "Basic leader sampling test [Success]"
> + fi
> }
>
> test_topdown_leader_sampling() {
> --
> 2.45.2
>
next prev parent reply other threads:[~2025-04-30 17:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-30 14:06 [PATCH V4] perf test: Allow tolerance for leader sampling test Thomas Richter
2025-04-30 15:02 ` Ian Rogers
2025-04-30 17:16 ` Namhyung Kim [this message]
2025-05-02 16:35 ` Arnaldo Carvalho de Melo
2025-05-02 18:21 ` Chun-Tse Shao
2025-05-02 19:11 ` Arnaldo Carvalho de Melo
2025-05-15 15:53 ` Arnaldo Carvalho de Melo
2025-05-16 5:09 ` Thomas Richter
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=aBJa7qrdMcIEt7y8@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=ctshao@google.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=irogers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=sumanthk@linux.ibm.com \
--cc=tmricht@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 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.