All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Calvin Owens <calvinowens@fb.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Joe Perches <joe@perches.com>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH] ksoftirqd: Enable IRQs and call cond_resched() before poking RCU
Date: Wed, 21 Jan 2015 02:27:26 -0800	[thread overview]
Message-ID: <20150121102726.GF9719@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.DEB.2.11.1501211027540.5526@nanos>

On Wed, Jan 21, 2015 at 10:30:07AM +0100, Thomas Gleixner wrote:
> On Tue, 20 Jan 2015, Paul E. McKenney wrote:
> > On Tue, Jan 20, 2015 at 02:21:51PM +0100, Thomas Gleixner wrote:
> > > The whole rcu_note_context_switch() in run_ksoftirqd() is silly.
> > > 
> > >     cond_resched()
> > > 	__preempt_count_add(PREEMPT_ACTIVE);
> > > 
> > > 	__schedule();
> > > 	     preempt_disable();
> > > 	     rcu_note_context_switch();
> > > 	     ....
> > > 
> > > 	__preempt_count_sub(PREEMPT_ACTIVE);
> > 
> > I agree that if should_resched() returns true as assumed above, then there
> > is no point to invoking rcu_note_context_switch().  However, the case that
> > this code applies to is when should_resched() returns false, but RCU is
> > waiting for a quiescent state from the current CPU.  In that case,
> > cond_resched() won't do anything for RCU, and we do need the
> > rcu_note_context_switch().
> 
> So this should be:
> 
>    if (!cond_resched()) {
	preempt_disable();
>       rcu_note_context_switch();
	preempt_enable();
     }
> 
> Hmm?

Going forward, yes, and cond_resched_rcu_qs() in fact does something
very similar.  For backporting, which is what this patch is for, we are
preserving the same double-quiescent-state behavior that existed earlier,
meaning minimal perturbation of old releases.

Seem reasonable, or do you really feel strongly about pushing this
optimization into -stable?

> > Of course, it would be better to avoid the extra RCU work in the common
> > case where cond_resched() does inovke the scheduler.  And that is the
> > point of the following patch, which uses cond_resched_rcu_qs().
> > However, this use of cond_resched_rcu_qs() doesn't work in older
> > kernels.  So Calvin's patch is for backporting, and the follow-up
> > patch for future kernels.
> 
> I see.

							Thanx, Paul


  reply	other threads:[~2015-01-21 10:27 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-07  1:37 [PATCH] ksoftirqd: Enable IRQs and call cond_resched() before poking RCU Calvin Owens
2015-01-07  1:49 ` [PATCH v2] " Calvin Owens
2015-01-07  2:19   ` Paul E. McKenney
2015-01-07 16:52     ` Paul E. McKenney
2015-01-08  4:33       ` Calvin Owens
2015-01-08  4:53         ` Paul E. McKenney
2015-01-08 21:46           ` Calvin Owens
2015-01-13 11:17             ` Thomas Gleixner
2015-01-13 18:43               ` Paul E. McKenney
2015-01-13 21:16                 ` [PATCH] " Calvin Owens
2015-01-14 22:12                   ` Paul E. McKenney
2015-01-20 13:21                   ` Thomas Gleixner
2015-01-20 20:30                     ` Paul E. McKenney
2015-01-21  3:40                       ` Mike Galbraith
2015-01-21  5:10                         ` Paul E. McKenney
2015-01-21  6:29                           ` Mike Galbraith
2015-01-21  9:30                       ` Thomas Gleixner
2015-01-21 10:27                         ` Paul E. McKenney [this message]
2015-01-22 10:39                           ` Thomas Gleixner

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=20150121102726.GF9719@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=calvinowens@fb.com \
    --cc=joe@perches.com \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --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.