linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: David Miller <davem@davemloft.net>
Cc: Jonathan.Cameron@huawei.com, dzickus@redhat.com,
	sfr@canb.auug.org.au, linuxarm@huawei.com, npiggin@gmail.com,
	abdhalee@linux.vnet.ibm.com, sparclinux@vger.kernel.org,
	akpm@linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: RCU lockup issues when CONFIG_SOFTLOCKUP_DETECTOR=n - any one else seeing this?
Date: Wed, 26 Jul 2017 10:50:13 -0700	[thread overview]
Message-ID: <20170726175013.GT3730@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170726.095432.169004918437663011.davem@davemloft.net>

On Wed, Jul 26, 2017 at 09:54:32AM -0700, David Miller wrote:
> From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
> Date: Wed, 26 Jul 2017 08:49:00 -0700
> 
> > On Wed, Jul 26, 2017 at 04:33:40PM +0100, Jonathan Cameron wrote:
> >> Didn't leave it long enough. Still bad on 4.10-rc7 just took over
> >> an hour to occur.
> > 
> > And it is quite possible that SOFTLOCKUP_DETECTOR=y and HZ_PERIODIC=y
> > are just greatly reducing the probability of the problem rather than
> > completely preventing it.
> > 
> > Still, hopefully useful information, thank you for the testing!
> 
> I guess that invalidates my idea to test reverting recent changes to
> the tick-sched.c code... :-/
> 
> In NO_HZ_IDLE mode, what is really supposed to happen on a completely
> idle system?
> 
> All the cpus enter the idle loop, have no timers programmed, and they
> all just go to sleep until an external event happens.
> 
> What ensures that grace periods get processed in this regime?

There are several different situations with different mechanisms:

1.	No grace period is in progress and no RCU callbacks are pending
	anywhere in the system.  In this case, some other event would
	need to start a grace period, so RCU just stays idle until that
	happens, possibly indefinitely.  According to the battery-powered
	embedded guys, this is a feature, not a bug.  ;-)

2.	No grace period is in progress, but there is at least one RCU
	callback somewhere in the system.  In this case, the mechanism
	depends on CONFIG_RCU_FAST_NO_HZ:

	CONFIG_RCU_FAST_NO_HZ=n:  The CPU on which the callback is
		queued will return "true" in response to the call to
		rcu_needs_cpu() that is made shortly before that CPU
		enters idle.  This will cause the scheduling-clock
		interrupt to remain on, despite the CPU being idle,
		which will in turn allow RCU's state machine to continue
		running out of softirq, triggered by the scheduling-clock
		interrupts.

	CONFIG_RCU_FAST_NO_HZ=y:  The CPU on which the callback is queued
		will return "false" in response to the call to
		rcu_needs_cpu() that is made shortly before that CPU
		enters idle.  However, it will also request a next event
		about six seconds in the future if all callbacks do
		nothing but free memory (kfree_rcu()), or about four
		jiffies in the future if at least one callback does
		something more than just free memory.

		There is also a rcu_prepare_for_idle() function that
		is invoked later in the idle-entry process in this case
		which will wake up the grace-period kthread if need be.

3.	A grace period is in progress.  In this case the grace-period
	kthread is either currently running (in which case there will be
	at least one non-idle CPU) or is in a timed wait for its next
	scan for idle/offline CPUs (such CPUs need the grace-period
	kthread to report quiescent states on their behalf).  In this
	latter case, the timer subsystem will post a next event that
	will be the wakeup time for the grace-period kthread, or some
	earlier event.

	This is where we have been seeing trouble, if for no other
	reason because RCU CPU stall warnings only happen when there
	is a grace period in progress.

That is the theory, anyway...

And when I enabled CONFIG_SOFTLOCKUP_DETECTOR, I still see failures.
I did 24 half-hour rcutorture runs on the TREE01 scenario, and two of them
saw RCU CPU stall warnings with starvation of the grace-period kthread.
I just now started another test but without CONFIG_SOFTLOCKUP_DETECTOR
to see if it makes a significance difference for my testing.  I do have
CONFIG_RCU_FAST_NO_HZ=y in my runs.

							Thanx, Paul

  parent reply	other threads:[~2017-07-26 17:50 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20170725193039.00007c80@huawei.com>
2017-07-25 12:26 ` RCU lockup issues when CONFIG_SOFTLOCKUP_DETECTOR=n - any one else seeing this? Nicholas Piggin
2017-07-25 13:46   ` Paul E. McKenney
2017-07-25 14:42     ` Jonathan Cameron
2017-07-25 15:12       ` Paul E. McKenney
2017-07-25 16:52         ` Jonathan Cameron
2017-07-25 21:10           ` David Miller
2017-07-26  3:55             ` Paul E. McKenney
2017-07-26  4:02               ` David Miller
2017-07-26  4:12                 ` Paul E. McKenney
2017-07-26  8:16                   ` Jonathan Cameron
2017-07-26  9:32                     ` Jonathan Cameron
2017-07-26 12:28                       ` Jonathan Cameron
2017-07-26 12:49                         ` Jonathan Cameron
2017-07-26 14:14                         ` Paul E. McKenney
2017-07-26 14:23                           ` Jonathan Cameron
2017-07-26 15:33                             ` Jonathan Cameron
2017-07-26 15:49                               ` Paul E. McKenney
2017-07-26 16:54                                 ` David Miller
2017-07-26 17:13                                   ` Jonathan Cameron
2017-07-27  7:41                                     ` Jonathan Cameron
2017-07-26 17:50                                   ` Paul E. McKenney [this message]
2017-07-26 22:36                                     ` Paul E. McKenney
2017-07-26 22:45                                       ` David Miller
2017-07-26 23:15                                         ` Paul E. McKenney
2017-07-26 23:22                                           ` David Miller
2017-07-27  1:42                                             ` Paul E. McKenney
2017-07-27  4:34                                               ` Nicholas Piggin
2017-07-27 12:49                                                 ` Paul E. McKenney
2017-07-27 13:49                                                   ` Jonathan Cameron
2017-07-27 16:39                                                     ` Jonathan Cameron
2017-07-27 16:52                                                       ` Paul E. McKenney
2017-07-28  7:44                                                         ` Jonathan Cameron
2017-07-28 12:54                                                           ` Boqun Feng
2017-07-28 13:13                                                             ` Jonathan Cameron
2017-07-28 14:55                                                             ` Paul E. McKenney
2017-07-28 18:41                                                               ` Paul E. McKenney
2017-07-28 19:09                                                                 ` Paul E. McKenney
2017-07-30 13:37                                                                   ` Boqun Feng
2017-07-30 16:59                                                                     ` Paul E. McKenney
2017-07-29  1:20                                                                 ` Boqun Feng
2017-07-28 18:42                                                             ` David Miller
2017-07-28 13:08                                                           ` Jonathan Cameron
2017-07-28 13:24                                                           ` Jonathan Cameron
     [not found]                                                             ` <20170728165529.GF3730@linux.vnet.ibm.com>
2017-07-28 17:27                                                               ` Jonathan Cameron
2017-07-28 19:03                                                                 ` Paul E. McKenney
2017-07-31 11:08                                                                   ` Jonathan Cameron
2017-07-31 15:04                                                                     ` Paul E. McKenney
2017-07-31 15:27                                                                       ` Jonathan Cameron
2017-08-01 18:46                                                                         ` Paul E. McKenney
2017-08-02 16:25                                                                           ` Jonathan Cameron
2017-08-15 15:47                                                                             ` Paul E. McKenney
2017-08-16  1:24                                                                               ` Jonathan Cameron
2017-08-16 12:43                                                                               ` Michael Ellerman
2017-08-16 12:56                                                                                 ` Paul E. McKenney
2017-08-16 15:31                                                                                   ` Nicholas Piggin
2017-08-16 16:27                                                                                   ` Paul E. McKenney
2017-08-17 13:55                                                                                     ` Michael Ellerman
2017-08-20  4:45                                                                                     ` Nicholas Piggin
2017-08-20  5:01                                                                                       ` David Miller
2017-08-20  5:04                                                                                       ` Paul E. McKenney
2017-08-20 13:00                                                                                       ` Nicholas Piggin
2017-08-20 18:35                                                                                         ` Paul E. McKenney
2017-08-20 21:14                                                                                           ` Paul E. McKenney
2017-08-21  0:52                                                                                             ` Nicholas Piggin
2017-08-21  6:06                                                                                               ` Nicholas Piggin
2017-08-21 10:18                                                                                                 ` Jonathan Cameron
2017-08-21 14:19                                                                                                   ` Nicholas Piggin
2017-08-21 15:02                                                                                                     ` Jonathan Cameron
2017-08-21 20:55                                                                                                     ` David Miller
2017-08-22  7:49                                                                                                       ` Jonathan Cameron
2017-08-22  8:51                                                                                                         ` Abdul Haleem
2017-08-22 15:26                                                                                                           ` Paul E. McKenney
2017-09-06 12:28                                                                                                             ` Paul E. McKenney
2017-08-22  0:38                                                                                               ` Paul E. McKenney
2017-07-31 11:09                                           ` Jonathan Cameron
2017-07-31 11:55                                             ` Jonathan Cameron
2017-08-01 10:53                                               ` Jonathan Cameron
2017-07-26 16:48                           ` David Miller
2017-07-26  3:53           ` Paul E. McKenney
2017-07-26  7:51             ` Jonathan Cameron

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=20170726175013.GT3730@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=abdhalee@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=dzickus@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linuxarm@huawei.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=npiggin@gmail.com \
    --cc=sfr@canb.auug.org.au \
    --cc=sparclinux@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).