From: Adam Li <adamli@os.amperecomputing.com>
To: Valentin Schneider <vschneid@redhat.com>,
mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
vincent.guittot@linaro.org
Cc: dietmar.eggemann@arm.com, rostedt@goodmis.org,
bsegall@google.com, mgorman@suse.de, cl@linux.com,
frederic@kernel.org, linux-kernel@vger.kernel.org,
patches@amperecomputing.com
Subject: Re: [PATCH] sched/nohz: Fix NOHZ imbalance by adding options for ILB CPU
Date: Thu, 21 Aug 2025 19:18:42 +0800 [thread overview]
Message-ID: <1db2d6df-16ff-4521-ada5-da585b87b06f@os.amperecomputing.com> (raw)
In-Reply-To: <xhsmhldnegqq4.mognet@vschneid-thinkpadt14sgen2i.remote.csb>
On 8/20/2025 7:46 PM, Valentin Schneider wrote:
>
> I'd say resend the whole series with the right folks cc'd.
>
OK. I resent the patch series.
Please refer to: https://lore.kernel.org/all/20250821042707.62993-1-adamli@os.amperecomputing.com/
>> 'nohz_full' option is supposed to benefit performance by reducing kernel
>> noise I think. Could you please give more detail on
>> 'NOHZ_FULL context switch overhead'?
>>
>
> The doc briefly touches on that:
>
> https://docs.kernel.org/timers/no_hz.html#omit-scheduling-clock-ticks-for-cpus-with-only-one-runnable-task
>
> The longer story is have a look at kernel/context_tracking.c; every
> transition into and out of the kernel to and from user or idle requires
> additional atomic operations and synchronization.
>
> It would be worth for you to quantify how much these processes
> sleep/context switch, it could be that keep the tick enabled incurs a lower
> throughput penalty than the NO_HZ_FULL overheads.
>
Thanks for the information.
>>> As for the actual balancing, yeah if you have idle NOHZ_FULL CPUs they
>>> won't do the periodic balance; the residual 1Hz remote tick doesn't do that
>>> either. But they should still do the newidle balance to pull work before
>>> going tickless idle, and wakeup balance should help as well, albeit that
>>> also depends on your topology.
>>>
>>
>> I think the newidle balance and wakeup balance do not help in this case
>> because the workload has few sleep and wakeup.
>>
>
> Right. So other than the NO_HZ_FULL vs NO_HZ_IDLE considerations above, you
> could manually affine the threads of the workload. Depending on how much
> control you have over how many threads it spawn, you could either pin on
> thread per CPU, or just spawn the workload into a cpuset covering the
> NO_HZ_FULL CPUs.
>
Yes, binding the threads to CPU can work around the performance
issue caused by load imbalance. Should we document that 'nohz_full' may cause
the scheduler load balancing not working well and CPU affinity is preferred?
> Having the scheduler do the balancing is bit of a precarious
> situation. Your single housekeeping CPU is pretty much going to be always
> running things, does it make sense to have it run the NOHZ idle balance
> when there are available idle NOHZ_FULL CPUs? And in the same sense, does
> it make sense to disturb an idle NOHZ_FULL CPU to get it to spread load on
> other NOHZ_FULL CPUs? Admins that manually affine their threads will
> probably say no.
>
I think when the NOHZ_FULL CPU is added to nohz.idle_cpus_mask and
its tick is stopped, the CPU is 'very' idle. We can safely assign some work to it.
> 9b019acb72e4 ("sched/nohz: Run NOHZ idle load balancer on HK_FLAG_MISC CPUs")
> also mentions SMT being an issue.
>
From the commit message of 9b019acb72e4:
"The problem was observed with increased jitter on an application
running on CPU0, caused by NOHZ idle load balancing being run on
CPU1 (an SMT sibling)."
Can we say if *no* SMT, it is safe to run NOHZ idle load balancing
on CPU in nohz.idle_cpus_mask? My patch checks '!sched_smt_active()' when
searching from nohz.idle_cpus_mask.
Thanks,
-adam
next prev parent reply other threads:[~2025-08-21 11:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-19 2:57 [PATCH] sched/nohz: Fix NOHZ imbalance by adding options for ILB CPU Adam Li
2025-08-19 14:00 ` Valentin Schneider
2025-08-20 3:35 ` Adam Li
2025-08-20 8:43 ` Valentin Schneider
2025-08-20 11:05 ` Adam Li
2025-08-20 11:46 ` Valentin Schneider
2025-08-21 11:18 ` Adam Li [this message]
2025-08-28 10:56 ` Valentin Schneider
2025-08-28 15:44 ` Christoph Lameter (Ampere)
2025-09-03 12:35 ` Valentin Schneider
2025-09-03 14:14 ` Vincent Guittot
2025-09-03 20:33 ` Christoph Lameter (Ampere)
2025-09-11 8:55 ` Vincent Guittot
2025-08-20 17:31 ` Christoph Lameter (Ampere)
2025-08-21 9:01 ` Valentin Schneider
2025-09-04 13:54 ` Frederic Weisbecker
2025-09-04 15:34 ` Christoph Lameter (Ampere)
2025-09-04 16:13 ` Frederic Weisbecker
2025-09-04 16:18 ` Christoph Lameter (Ampere)
2025-09-05 12:16 ` Frederic Weisbecker
2025-09-05 16:45 ` Christoph Lameter (Ampere)
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=1db2d6df-16ff-4521-ada5-da585b87b06f@os.amperecomputing.com \
--to=adamli@os.amperecomputing.com \
--cc=bsegall@google.com \
--cc=cl@linux.com \
--cc=dietmar.eggemann@arm.com \
--cc=frederic@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=patches@amperecomputing.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@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 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.