Re: WARNING: cpu_is_offline() at native_smp_send_reschedule()

From: Fengguang Wu
Date: Thu Sep 06 2012 - 21:20:56 EST


On Wed, Sep 05, 2012 at 08:57:00PM +0800, Fengguang Wu wrote:
> On Wed, Sep 05, 2012 at 12:54:40PM +0200, Peter Zijlstra wrote:
> > On Wed, 2012-09-05 at 12:35 +0800, Michael Wang wrote:
> > > > [ 10.968565] reboot: machine restart
> > > > [ 10.983510] ------------[ cut here ]------------
> > > > [ 10.984218] WARNING: at /c/kernel-tests/src/stable/arch/x86/kernel/smp.c:123 native_smp_send_reschedule+0x46/0x50()
> > > > [ 10.985880] Pid: 88, comm: kpktgend_0 Not tainted 3.6.0-rc3-00005-gb374aa1 #10
> > > > [ 10.987185] Call Trace:
> > > > [ 10.987506] [<7902f42a>] warn_slowpath_common+0x5a/0x80
> > > > [ 10.987506] [<7901ee16>] ? native_smp_send_reschedule+0x46/0x50
> > > > [ 10.987506] [<7901ee16>] ? native_smp_send_reschedule+0x46/0x50
> > > > [ 10.987506] [<7902f4fd>] warn_slowpath_null+0x1d/0x20
> > > > [ 10.987506] [<7901ee16>] native_smp_send_reschedule+0x46/0x50
> > >
> > > So this cpu try to fire a nohz balance kick ipi to an offline cpu?
> > >
> > > May be we are choosing a wrong cpu to kick but that's not the point,
> > > what I can't understand is why this cpu could do this kick.
> > >
> > > We have nohz_kick_needed() to check whether current cpu should do kick ,
> > > and the first condition we need to match is that current cpu should be
> > > idle, but the trace show current pid is 88 not 0.
> > >
> > > We should add Peter to cc list, may be he will be interested on what
> > > happened.
> >
> > > > [ 10.987506] [<7905fdad>] trigger_load_balance+0x1bd/0x250
> > > > [ 10.987506] [<79056d14>] scheduler_tick+0xd4/0x100
> > > > [ 10.987506] [<7903bde5>] update_process_times+0x55/0x70
> >
> > Hmm, added both venki and suresh as they touched it last ;-)
> >
> > I suppose you're running a hotplug loop along with your workload?
>
> I would definitely like to add some hotplug tests! However for this
> trace, it's simply booting into an ubuntu-core initrd and run the
> "reboot" command in some late init.d script.
>
> It seems that the bug was introduced somewhere in v3.3..v3.4. I'm now
> running 100 kvms to speedup the bisect progress :)

FYI, the bisect result is

commit 554cecaf733623b327eef9652b65965eb1081b81
Author: Diwakar Tundlam <dtundlam@xxxxxxxxxx>
Date: Wed Mar 7 14:44:26 2012 -0800

sched/nohz: Correctly initialize 'next_balance' in 'nohz' idle balancer

The 'next_balance' field of 'nohz' idle balancer must be initialized
to jiffies. Since jiffies is initialized to negative 300 seconds the
'nohz' idle balancer does not run for the first 300s (5mins) after
bootup. If no new processes are spawed or no idle cycles happen, the
load on the cpus will remain unbalanced for that duration.

Signed-off-by: Diwakar Tundlam <dtundlam@xxxxxxxxxx>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Link: http://lkml.kernel.org/r/1DD7BFEDD3147247B1355BEFEFE4665237994F30EF@xxxxxxxxxxxxxxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>

Thanks,
Fengguang
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/