public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	linaro-sched-sig@lists.linaro.org,
	Alessio Igor Bogani <abogani@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Avi Kivity <avi@redhat.com>, Chris Metcalf <cmetcalf@tilera.com>,
	Christoph Lameter <cl@linux.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Geoff Levand <geoff@infradead.org>,
	Gilad Ben Yossef <gilad@benyossef.com>,
	Hakan Akkan <hakanakkan@gmail.com>,
	Ingo Molnar <mingo@kernel.org>, Kevin Hilman <khilman@ti.com>,
	Max Krasnyansky <maxk@qualcomm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Stephen Hemminger <shemminger@vyatta.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Sven-Thorsten Dietrich <thebigcorporation@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 11/41] nohz/cpuset: Don't turn off the tick if rcu needs it
Date: Wed, 23 May 2012 09:27:39 -0700	[thread overview]
Message-ID: <20120523162739.GE2402@linux.vnet.ibm.com> (raw)
In-Reply-To: <20120523160629.GJ1663@somewhere>

On Wed, May 23, 2012 at 06:06:33PM +0200, Frederic Weisbecker wrote:
> On Wed, May 23, 2012 at 08:15:42AM -0700, Paul E. McKenney wrote:
> > On Wed, May 23, 2012 at 03:52:09PM +0200, Frederic Weisbecker wrote:
> > > > > +#ifdef CONFIG_CPUSETS_NO_HZ
> > > > > +static bool can_stop_adaptive_tick(void)
> > > > > +{
> > > > > +	if (!sched_can_stop_tick())
> > > > > +		return false;
> > > > > +
> > > > > +	/* Is there a grace period to complete ? */
> > > > > +	if (rcu_pending(smp_processor_id()))
> > > > 
> > > > You lost me on this one.  Why can't this be rcu_needs_cpu()?
> > > 
> > > We already have an rcu_needs_cpu() check in tick_nohz_stop_sched_tick()
> > > that prevents the tick to shut down if the CPU has local callbacks to handle.
> > > 
> > > The rcu_pending() check is there in case some other CPU is waiting for the
> > > current one to help completing a grace period, by reporting a quiescent state
> > > for example. This happens because we may stop the tick in the kernel, not only
> > > userspace. And if we are in the kernel, we still need to be part of the global
> > > state machine.
> > 
> > Ah!  But RCU will notice that the CPU is in dyntick-idle mode, and will
> > therefore take any needed quiescent-state action on that CPU's behalf.
> > So there should be no need to call rcu_pending() anywhere outside of the
> > RCU core code.
> 
> No. If the tick is stopped and we are in the kernel, we may be using RCU
> anytime, so we need to be part of the RCU core.

OK, so the only problem is if we spend a long time CPU-bound in the kernel,
where "long" is milliseconds or tens of milliseconds.  In that case, the
RCU core will notice that the CPU has not responded but is not idle, for
example, in rcu_implicit_dynticks_qs().  It can take action at this point
to get the offending CPU to pay attention to RCU.

Does this make sense, or am I still missing something?


  reply	other threads:[~2012-05-23 16:28 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-30 23:54 [RFC][PATCH 00/41] Nohz cpusets v3 (adaptive tickless kernel) Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 01/41] nohz: Separate idle sleeping time accounting from nohz logic Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 02/41] nohz: Make nohz API agnostic against idle ticks cputime accounting Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 03/41] nohz: Rename ts->idle_tick to ts->last_tick Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 04/41] nohz: Move nohz load balancer selection into idle logic Frederic Weisbecker
2012-05-07 15:51   ` Christoph Lameter
2012-04-30 23:54 ` [PATCH 05/41] nohz: Move ts->idle_calls incrementation into strict " Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 06/41] nohz: Move next idle expiry time record into idle logic area Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 07/41] cpuset: Set up interface for nohz flag Frederic Weisbecker
2012-05-07 15:55   ` Christoph Lameter
2012-05-08 14:20     ` Frederic Weisbecker
2012-05-08 14:50       ` Peter Zijlstra
2012-05-08 15:18         ` Christoph Lameter
2012-05-08 15:27           ` Peter Zijlstra
2012-05-08 15:38             ` Christoph Lameter
2012-05-08 15:48               ` Peter Zijlstra
2012-05-08 15:57                 ` Christoph Lameter
2012-05-08 16:16                   ` Peter Zijlstra
2012-05-08 16:25                     ` Peter Zijlstra
2012-05-08 19:50                     ` Mike Galbraith
2012-05-08 20:45                       ` Christoph Lameter
2012-05-09  4:21                         ` Mike Galbraith
2012-05-09 11:02                           ` Frederic Weisbecker
2012-05-09 11:07                           ` Frederic Weisbecker
2012-05-09 14:23                             ` Christoph Lameter
2012-05-09 14:22                           ` Christoph Lameter
2012-05-09 14:47                             ` Mike Galbraith
2012-05-09 15:05                               ` Christoph Lameter
2012-05-09 15:33                                 ` Mike Galbraith
2012-05-09 15:40                                   ` Christoph Lameter
2012-05-08 15:16       ` Christoph Lameter
2012-04-30 23:54 ` [PATCH 08/41] nohz: Try not to give the timekeeping duty to an adaptive tickless cpu Frederic Weisbecker
2012-05-07 16:02   ` Christoph Lameter
2012-05-08 17:35     ` Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 09/41] x86: New cpuset nohz irq vector Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 10/41] nohz: Adaptive tick stop and restart on nohz cpuset Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 11/41] nohz/cpuset: Don't turn off the tick if rcu needs it Frederic Weisbecker
2012-05-22 17:16   ` Paul E. McKenney
2012-05-23 13:52     ` Frederic Weisbecker
2012-05-23 15:15       ` Paul E. McKenney
2012-05-23 16:06         ` Frederic Weisbecker
2012-05-23 16:27           ` Paul E. McKenney [this message]
2012-05-31 16:01             ` Frederic Weisbecker
2012-05-31 22:02               ` Paul E. McKenney
2012-04-30 23:54 ` [PATCH 12/41] nohz/cpuset: Wake up adaptive nohz CPU when a timer gets enqueued Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 13/41] nohz/cpuset: Don't stop the tick if posix cpu timers are running Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 14/41] nohz/cpuset: Restart tick when nohz flag is cleared on cpuset Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 15/41] nohz/cpuset: Restart the tick if printk needs it Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 16/41] rcu: Restart the tick on non-responding adaptive nohz CPUs Frederic Weisbecker
2012-05-22 17:20   ` Paul E. McKenney
2012-05-23 13:57     ` Frederic Weisbecker
2012-05-23 15:20       ` Paul E. McKenney
2012-05-23 15:57         ` Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 17/41] rcu: Restart tick if we enqueue a callback in a nohz/cpuset CPU Frederic Weisbecker
2012-05-22 17:27   ` Paul E. McKenney
2012-05-22 17:30     ` Paul E. McKenney
2012-05-23 14:03       ` Frederic Weisbecker
2012-05-23 16:15         ` Paul E. McKenney
2012-05-31 15:56           ` Frederic Weisbecker
2012-05-23 14:00     ` Frederic Weisbecker
2012-05-23 16:01       ` Paul E. McKenney
2012-04-30 23:54 ` [PATCH 18/41] nohz: Generalize tickless cpu time accounting Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 19/41] nohz/cpuset: Account user and system times in adaptive nohz mode Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 20/41] nohz/cpuset: New API to flush cputimes on nohz cpusets Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 21/41] nohz/cpuset: Flush cputime on threads in nohz cpusets when waiting leader Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 22/41] nohz/cpuset: Flush cputimes on procfs stat file read Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 23/41] nohz/cpuset: Flush cputimes for getrusage() and times() syscalls Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 24/41] x86: Syscall hooks for nohz cpusets Frederic Weisbecker
2012-04-30 23:54 ` [PATCH 25/41] x86: Exception " Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 26/41] x86: Add adaptive tickless hooks on do_notify_resume() Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 27/41] nohz/cpuset: enable addition&removal of cpus while in adaptive nohz mode Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 28/41] nohz: Don't restart the tick before scheduling to idle Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 29/41] sched: Comment on rq->clock correctness in ttwu_do_wakeup() in nohz Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 30/41] sched: Update rq clock on nohz CPU before migrating tasks Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 31/41] sched: Update rq clock on nohz CPU before setting fair group shares Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 32/41] sched: Update rq clock on tickless CPUs before calling check_preempt_curr() Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 33/41] sched: Update rq clock earlier in unthrottle_cfs_rq Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 34/41] sched: Update clock of nohz busiest rq before balancing Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 35/41] sched: Update rq clock before idle balancing Frederic Weisbecker
2012-05-02  3:36   ` Michael Wang
2012-05-02 10:55     ` Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 36/41] sched: Update nohz rq clock before searching busiest group on load balancing Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 37/41] rcu: New rcu_user_enter() and rcu_user_exit() APIs Frederic Weisbecker
2012-05-22 18:23   ` Paul E. McKenney
2012-05-23 14:22     ` Frederic Weisbecker
2012-05-23 16:28       ` Paul E. McKenney
2012-04-30 23:55 ` [PATCH 38/41] rcu: New rcu_user_enter_irq() and rcu_user_exit_irq() APIs Frederic Weisbecker
2012-05-22 18:33   ` Paul E. McKenney
2012-05-23 14:31     ` Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 39/41] rcu: Switch to extended quiescent state in userspace from nohz cpuset Frederic Weisbecker
2012-05-22 18:36   ` Paul E. McKenney
2012-05-22 23:04     ` Paul E. McKenney
2012-05-23 14:33     ` Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 40/41] nohz: Exit RCU idle mode when we schedule before resuming userspace Frederic Weisbecker
2012-04-30 23:55 ` [PATCH 41/41] nohz/cpuset: Disable under some configs Frederic Weisbecker
2012-05-07 22:10 ` [RFC][PATCH 00/41] Nohz cpusets v3 (adaptive tickless kernel) Geoff Levand

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=20120523162739.GE2402@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=abogani@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=avi@redhat.com \
    --cc=cl@linux.com \
    --cc=cmetcalf@tilera.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=fweisbec@gmail.com \
    --cc=geoff@infradead.org \
    --cc=gilad@benyossef.com \
    --cc=hakanakkan@gmail.com \
    --cc=khilman@ti.com \
    --cc=linaro-sched-sig@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxk@qualcomm.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=shemminger@vyatta.com \
    --cc=tglx@linutronix.de \
    --cc=thebigcorporation@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox