On Thu, Aug 07, 2014 at 08:00:31AM -0700, Paul E. McKenney wrote: > 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.
Ah, the 'full' patch I was staring at for reference did an unconditional poll. > > 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. Yes.. and he's back now, so please :-)
pgp8BSe3RqyfA.pgp
Description: PGP signature