Re: [PATCH v3 tip/core/rcu 3/9] rcu: Add synchronous grace-period waiting for RCU-tasks

Paul E. McKenney
2014-08-07T15:00:48Z

On Thu, Aug 07, 2014 at 10:45:44AM +0200, Peter Zijlstra wrote:
> On Wed, Aug 06, 2014 at 03:45:18PM -0700, Paul E. McKenney wrote:
> > > > > But I still very much hate the polling stuff...
> >
> > The nice thing about the polling approach is minimal overhead in the
> > common case where RCU-tasks is not in use.
>
> No, quite the reverse, there is overhead when its not in use, as opposed
> to no overhead at all.

Say what???

> I'm still not convinced we need this 'generic' rcu-task stuff and create
> yet another kthread with polling semantics, we want to let the system
> idle out when there's nothing to do, not keep waking it up.

Which is exactly what happens. The kthread is created only at first
use, so if no one uses RCU-tasks, then no kthread is created, see
https://lkml.org/lkml/2014/8/4/630. Even if a kthread is created, if
there is no more work for it to do, it sleeps indefinitely. See for
example https://lkml.org/lkml/2014/8/4/629.

> So do we really need the call_rcu_task() thing and why isn't something
> like synchronize_tasks() good enough?

Sounds like a question for Steven.

> So the thing is, the one proposed user is very rare (*) and for that
> you're adding overhead outside of that user (a separate kthread) and
> your adding overhead when its not used.

If that really was the case, that would be bad. However, in the latest
versions, that is no longer the case.

> * I'm assuming that, since tracing is 'rare' and this is some tracing
> thing.

Another good point for Steven.

Thanx, Paul