From: Greg KH <gregkh@linuxfoundation.org>
To: John Stultz <jstultz@google.com>
Cc: stable@vger.kernel.org, Jimmy Shiu <jimmyshiu@google.com>,
Peter Zijlstra <peterz@infradead.org>,
Chengming Zhou <chengming.zhou@linux.dev>,
Qais Yousef <qyousef@layalina.io>
Subject: Re: [PATCH 6.1] sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath
Date: Tue, 16 Jul 2024 16:21:50 +0200 [thread overview]
Message-ID: <2024071639-huff-outcast-21b0@gregkh> (raw)
In-Reply-To: <20240716004050.515306-1-jstultz@google.com>
On Mon, Jul 15, 2024 at 05:40:39PM -0700, John Stultz wrote:
> commit ddae0ca2a8fe12d0e24ab10ba759c3fbd755ada8 upstream.
>
> It was reported that in moving to 6.1, a larger then 10%
> regression was seen in the performance of
> clock_gettime(CLOCK_THREAD_CPUTIME_ID,...).
>
> Using a simple reproducer, I found:
> 5.10:
> 100000000 calls in 24345994193 ns => 243.460 ns per call
> 100000000 calls in 24288172050 ns => 242.882 ns per call
> 100000000 calls in 24289135225 ns => 242.891 ns per call
>
> 6.1:
> 100000000 calls in 28248646742 ns => 282.486 ns per call
> 100000000 calls in 28227055067 ns => 282.271 ns per call
> 100000000 calls in 28177471287 ns => 281.775 ns per call
>
> The cause of this was finally narrowed down to the addition of
> psi_account_irqtime() in update_rq_clock_task(), in commit
> 52b1364ba0b1 ("sched/psi: Add PSI_IRQ to track IRQ/SOFTIRQ
> pressure").
>
> In my initial attempt to resolve this, I leaned towards moving
> all accounting work out of the clock_gettime() call path, but it
> wasn't very pretty, so it will have to wait for a later deeper
> rework. Instead, Peter shared this approach:
>
> Rework psi_account_irqtime() to use its own psi_irq_time base
> for accounting, and move it out of the hotpath, calling it
> instead from sched_tick() and __schedule().
>
> In testing this, we found the importance of ensuring
> psi_account_irqtime() is run under the rq_lock, which Johannes
> Weiner helpfully explained, so also add some lockdep annotations
> to make that requirement clear.
>
> With this change the performance is back in-line with 5.10:
> 6.1+fix:
> 100000000 calls in 24297324597 ns => 242.973 ns per call
> 100000000 calls in 24318869234 ns => 243.189 ns per call
> 100000000 calls in 24291564588 ns => 242.916 ns per call
>
> Reported-by: Jimmy Shiu <jimmyshiu@google.com>
> Originally-by: Peter Zijlstra <peterz@infradead.org>
> Signed-off-by: John Stultz <jstultz@google.com>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Reviewed-by: Chengming Zhou <chengming.zhou@linux.dev>
> Reviewed-by: Qais Yousef <qyousef@layalina.io>
> Link: https://lore.kernel.org/r/20240618215909.4099720-1-jstultz@google.com
> Fixes: 52b1364ba0b1 ("sched/psi: Add PSI_IRQ to track IRQ/SOFTIRQ pressure")
> [jstultz: Fixed up minor collisions w/ 6.1-stable]
> Signed-off-by: John Stultz <jstultz@google.com>
> ---
> kernel/sched/core.c | 7 +++++--
> kernel/sched/psi.c | 21 ++++++++++++++++-----
> kernel/sched/sched.h | 1 +
> kernel/sched/stats.h | 11 ++++++++---
> 4 files changed, 30 insertions(+), 10 deletions(-)
Both backports now queued up, thanks.
greg k-h
prev parent reply other threads:[~2024-07-16 14:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-16 0:40 [PATCH 6.1] sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath John Stultz
2024-07-16 14:21 ` Greg KH [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=2024071639-huff-outcast-21b0@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=chengming.zhou@linux.dev \
--cc=jimmyshiu@google.com \
--cc=jstultz@google.com \
--cc=peterz@infradead.org \
--cc=qyousef@layalina.io \
--cc=stable@vger.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.