Re: [PATCH] v3 RCU: the bloatwatch edition

From: Paul Mundt
Date: Wed Apr 08 2009 - 13:04:47 EST


On Wed, Apr 08, 2009 at 06:38:38PM +0200, Ingo Molnar wrote:
>
> * Paul Mundt <lethal@xxxxxxxxxxxx> wrote:
>
> > On Fri, Apr 03, 2009 at 12:36:05AM +0200, Ingo Molnar wrote:
> > > * Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> > > > This patch is a version of RCU designed for (!SMP && EMBEDDED)
> > > > provided as a proof of concept of a small-footprint RCU
> > > > implementation. In particular, the implementation of
> > > > synchronize_rcu() is extremely lightweight and high performance.
> > > > It passes rcutorture testing in each of the four relevant
> > > > configurations (combinations of NO_HZ and PREEMPT) on x86. This
> > > > saves about 900 bytes compared to Classic RCU, and a couple
> > > > kilobytes compared to Hierarchical RCU:
> > >
> > > Andrew, what do you think?
> > >
> > > A worry is yet another RCU variant - we already have 3.
> > >
> > > A trick we could use would be to put it into Documentation/rcu/,
> > > linked in via some clever Makefile magic and only usable if a
> > > ultra-embedded developer does a build with something like
> > > CONFIG_RCU_TINY=y. That way there's no real maintenance and testing
> > > overhead.
> > >
> > > It _does_ have documentation value beyond the ~900 bytes: it's the
> > > simplest and smallest possible still-working UP RCU implementation
> > > so it would be easy to teach RCU concepts via that, gradually.
> >
> > A similar argument could have been used for tiny-shmem when it was
> > first integrated. As this is hiding behind CONFIG_EMBEDDED, most
> > users are not going to run in to it, so the confusion of 1 more
> > RCU variant is not likely to be a problem for those that aren't
> > actively seeking it out.
> >
> > So, personally I think it is a good idea, and I have no
> > reservations about default enabling it for a number of more
> > constrained SH platforms.
>
> but at least tiny-shmem is now nicely hidden in mm/shmem.c, in an
> unintrusive !CONFIG_SHMEM branch. There's no CONFIG_TINY_SHMEM
> option anymore - it's all done in the !CONFIG_SHMEM case.
>
Now it is, yes, but it was not originally, and it was still useful when
it was split out. If we are going to tolerate multiple RCU
implementations in the kernel, then I see no reason to not include
tiny-RCU in the same category. Even in the case where some of the other
RCU variants go away, tiny-RCU remains a viable option for simple
platforms that are more concerned about memory than anything else, so
it's always a valid alternative.

If in the future things are more consolidated and the config option goes
away then great, but that hardly seems like a sane prerequisite for
merging it. CONFIG_EMBEDDED handles this just fine. You don't need to
enable it if you don't wish to, but it's certainly measurable enough to
be useful for those of us that have no problems enabling it ;-)
--
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/