All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org, laijs@cn.fujitsu.com,
	dipankar@in.ibm.com, akpm@linux-foundation.org,
	mathieu.desnoyers@polymtl.ca, josht@linux.vnet.ibm.com,
	dvhltc@us.ibm.com, niv@us.ibm.com, tglx@linutronix.de,
	peterz@infradead.org, rostedt@goodmis.org
Subject: Re: [PATCH RFC -tip 0/4] v2 RCU cleanups and simplified preemptable RCU
Date: Mon, 3 Aug 2009 06:03:42 -0700	[thread overview]
Message-ID: <20090803130342.GX6854@linux.vnet.ibm.com> (raw)
In-Reply-To: <20090803082047.GA12498@elte.hu>

On Mon, Aug 03, 2009 at 10:20:47AM +0200, Ingo Molnar wrote:
> 
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
> 
> > [Not yet for inclusion, but making good progress.]
> > 
> > This patchset contains some RCU cleanups as follows:
> > 
> > o	Move private definitions from include/linux/rcutree.h to
> > 	kernel/rcutree.h
> > 
> > o	Rename variables and functions so that RCU-sched is an
> > 	underlying definition, along with RCU-bh and (when so
> > 	configured) RCU-preempt.  RCU then maps to either RCU-sched
> > 	or RCU-preempt, depending on configuration.
> > 
> > o	Consolidate sparse and lockdep into include/linux/rcupdate.h
> > 	so that all RCU implementations are set up properly.
> > 
> > With these in place, we add configurable preemptable-RCU functionality
> > to kernel/rcutree.c.  This new implementation has much faster and
> > simpler read-side primitives (roughly that of Classic RCU built with
> > CONFIG_PREEMPT), and has update-side performance equal to Classic RCU (at
> > least in absence of blocking/preemption of read-side critical sections).
> > This new implementation should eventually replace the old preemptable RCU,
> > which would remove 2099 lines of code from the kernel, for a net removal
> > of more than 1000 lines of code.
> > 
> > This patchset is undoubtably buggy, and does not have RCU priority
> > boosting, though it does have the necessary tracking of tasks blocked
> > in RCU read-side critical sections.
> > 
> > Changes from v1 (http://lkml.org/lkml/2009/7/23/294):
> > 
> > o	Fixes some locking problems detected by lockdep.
> > 
> > o	Disable irqs in quiescent-state-detection code, and fix handling
> > 	of scheduling-clock interrupt always occurring in RCU read-side
> > 	critical section.
> > 
> > o	Fix sparse annotations.
> > 
> > o	Apply feedback from Mathieu Desnoyers.
> > 
> > o	Fix x86 kernel-build errors.
> > 
> > o	Now passes moderate (multi-hour) rcutorture tests.
> > 
> > Shortcomings:
> > 
> > o	Only moderately tested, probably still quite buggy.  CPU hotplug
> > 	not yet tested heavily, for example.
> > 
> > o	Probably does not even compile for all of the relevant
> > 	combinations of kernel configuration variables.
> > 
> > o	Lacks RCU priority boosting.
> > 
> >  b/Documentation/RCU/trace.txt |    7 
> >  b/include/linux/init_task.h   |   15 +
> >  b/include/linux/rcupdate.h    |   21 +-
> >  b/include/linux/rcupreempt.h  |    4 
> >  b/include/linux/rcutree.h     |  211 --------------------
> >  b/include/linux/sched.h       |   37 +++
> >  b/init/Kconfig                |   22 +-
> >  b/kernel/Makefile             |    1 
> >  b/kernel/exit.c               |    1 
> >  b/kernel/fork.c               |    5 
> >  b/kernel/rcupreempt.c         |    8 
> >  b/kernel/rcutree.c            |    2 
> >  b/kernel/rcutree.h            |  238 +++++++++++++++++++++++
> >  b/kernel/rcutree_plugin.h     |  428 ++++++++++++++++++++++++++++++++++++++++++
> >  b/kernel/rcutree_trace.c      |    2 
> >  b/kernel/sched.c              |    2 
> >  b/kernel/softirq.c            |    5 
> >  include/linux/rcupdate.h      |   48 ++++
> >  include/linux/rcupreempt.h    |    8 
> >  include/linux/rcutree.h       |   43 ++--
> >  kernel/rcutree.c              |  207 +++++++++++++-------
> >  kernel/rcutree.h              |   13 +
> >  kernel/rcutree_trace.c        |   40 ++-
> >  23 files changed, 1018 insertions(+), 350 deletions(-)
> 
> The structure looks really nice. If feasible i'd suggest to remove 
> preemptible-rcu in this same patch-set as well, to simplify the 
> testing matrix and to get the net code removal effect as well.

Glad you like it, and I do like the idea of removing the old rcupreempt
in the same patch set.  I will include that in the next submission.
Currently having strange problems with CPU hotplug -- RCU does just
fine, but CPU hotplug operations hang.  Might be related to the problem
that you have been seeing.

> An added benefit is that that way the -rt folks will test out the 
> new preemptible-rcu code with enthusiasm as well ;-)

;-)

							Thanx, Paul

  reply	other threads:[~2009-08-03 13:03 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-27 18:14 [PATCH RFC -tip 0/4] v2 RCU cleanups and simplified preemptable RCU Paul E. McKenney
2009-07-27 18:16 ` [PATCH RFC -tip 1/4] v2 Move private definitions from include/linux/rcutree.h to kernel/rcutree.h Paul E. McKenney
2009-07-27 18:16 ` [PATCH RFC -tip 2/4] v2 Renamings to increase RCU clarity Paul E. McKenney
2009-07-27 18:16 ` [PATCH RFC -tip 3/4] v2 Consolidate sparse and lockdep declarations in include/linux/rcupdate.h Paul E. McKenney
2009-07-27 18:16 ` [PATCH RFC -tip 4/4] v2 Merge preemptable-RCU functionality into hierarchical RCU Paul E. McKenney
2009-08-03  8:20 ` [PATCH RFC -tip 0/4] v2 RCU cleanups and simplified preemptable RCU Ingo Molnar
2009-08-03 13:03   ` Paul E. McKenney [this message]
2009-08-22 20:56 ` [PATCH -tip] v3 Move private definitions from include/linux/rcutree.h to kernel/rcutree.h Paul E. McKenney
2009-08-23  9:01   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Renamings to increase RCU clarity Paul E. McKenney
2009-08-23  9:01   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-24  7:17   ` [PATCH -tip] v3 " Lai Jiangshan
2009-08-24 15:36     ` Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Consolidate sparse and lockdep declarations in include/linux/rcupdate.h Paul E. McKenney
2009-08-23  9:02   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-23 18:42     ` Ingo Molnar
2009-08-23 19:33       ` Paul E. McKenney
2009-08-23 22:53         ` Paul E. McKenney
2009-08-24  9:28           ` Ingo Molnar
2009-08-24 16:07             ` Paul E. McKenney
2009-08-24  7:34   ` [PATCH -tip] v3 " Lai Jiangshan
2009-08-24  9:00     ` Ingo Molnar
2009-08-24 16:03     ` Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Fix online/offline indication for rcudata.csv trace file Paul E. McKenney
2009-08-23  9:02   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Merge per-RCU-flavor initialization into pre-existing macro Paul E. McKenney
2009-08-23  9:02   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Use debugfs_remove_recursive() simplify code Paul E. McKenney
2009-08-23  9:02   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Simplify rcu_pending()/rcu_check_callbacks() API Paul E. McKenney
2009-08-23  9:02   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-24  7:10   ` [PATCH -tip] v3 " Peter Zijlstra
2009-08-24 15:42     ` Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Merge preemptable-RCU functionality into hierarchical RCU Paul E. McKenney
2009-08-23  9:03   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-22 20:56 ` [PATCH -tip] v3 Remove CONFIG_PREEMPT_RCU Paul E. McKenney
2009-08-23  9:03   ` [tip:core/rcu] rcu: " tip-bot for Paul E. McKenney
2009-08-24  7:21 ` [PATCH RFC -tip 0/4] v3 RCU cleanups and simplified preemptable RCU Peter Zijlstra
2009-08-24 15:59   ` Paul E. McKenney

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=20090803130342.GX6854@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dipankar@in.ibm.com \
    --cc=dvhltc@us.ibm.com \
    --cc=josht@linux.vnet.ibm.com \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mingo@elte.hu \
    --cc=niv@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.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.