From: Suresh Siddha <suresh.b.siddha@intel.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: Re: [PATCH v2] NOHZ: fix nohz on cpu unplug
Date: Mon, 02 Feb 2009 15:57:03 -0800 [thread overview]
Message-ID: <1233619023.16238.12.camel@vayu> (raw)
In-Reply-To: <200902021323.44015.borntraeger@de.ibm.com>
On Mon, 2009-02-02 at 04:23 -0800, Christian Borntraeger wrote:
> After some testing, I think this patch is better:
> [PATCH] NOHZ: fix nohz on cpu unplug
>
> From: Christian Borntraeger <borntraeger@de.ibm.com>
>
> After using cpu unplug I have seen one cpu with full ticks, even
> on a idle systems. It turns out that nohz.cpu_mask is not updated on
> cpu unplug.
> In select_nohz_load_balancer we check if the system is completely
> idle to turn of load balancing. We compare cpu_online_map with
> nohz.cpu_mask.
> Since cpu_online_map is updated on cpu unplug, but nohz.cpu_mask is
> not, the check fails and the scheduler believes that we need an
> "idle load balancer" even on a fully idle system. Since the ilb
> cpu does not deactivate the timer tick this breaks NOHZ.
>
> This patch clear the nohz bits in the migration_call, a function that
> is already called by the cpu hotplug notifier.
>
> Opinions?
Hi,
select_nohz_load_balancer() already takes care of one cpu offline
scenario. It missed one more scenario leading to the issue you
explained. We should take care of this in select_nohz_load_balancer().
Does this patch fix the issue? Thanks.
---
diff --git a/kernel/sched.c b/kernel/sched.c
index 96439a4..8a0419b 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4026,19 +4026,24 @@ int select_nohz_load_balancer(int stop_tick)
int cpu = smp_processor_id();
if (stop_tick) {
- cpumask_set_cpu(cpu, nohz.cpu_mask);
cpu_rq(cpu)->in_nohz_recently = 1;
- /*
- * If we are going offline and still the leader, give up!
- */
- if (!cpu_active(cpu) &&
- atomic_read(&nohz.load_balancer) == cpu) {
+ if (!cpu_active(cpu) {
+ if (atomic_read(&nohz.load_balancer) != cpu)
+ return 0;
+
+ /*
+ * If we are going offline and still the leader,
+ * give up!
+ */
if (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu)
BUG();
+
return 0;
}
+ cpumask_set_cpu(cpu, nohz.cpu_mask);
+
/* time for ilb owner also to sleep */
if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) {
if (atomic_read(&nohz.load_balancer) == cpu)
next prev parent reply other threads:[~2009-02-02 23:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-30 16:29 [RFC] NOHZ: fix nohz on cpu unplug Christian Borntraeger
2009-02-02 9:58 ` [PATCH/RFC] " Christian Borntraeger
2009-02-02 12:23 ` [PATCH v2] " Christian Borntraeger
2009-02-02 23:57 ` Suresh Siddha [this message]
2009-02-03 8:48 ` Christian Borntraeger
2009-02-03 12:28 ` Ingo Molnar
2009-02-04 6:19 ` Christian Borntraeger
2009-02-04 19:59 ` Suresh Siddha
2009-02-04 21:32 ` Ingo Molnar
2009-02-05 19:54 ` Mark Lord
2009-02-06 2:33 ` Suresh Siddha
2009-02-06 14:52 ` Mark Lord
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=1233619023.16238.12.camel@vayu \
--to=suresh.b.siddha@intel.com \
--cc=borntraeger@de.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=schwidefsky@de.ibm.com \
--cc=tglx@linutronix.de \
/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.