Re: [PATCH v2 tip/core/rcu 01/10] rcu: Add call_rcu_tasks()

From: Peter Zijlstra
Date: Thu Jul 31 2014 - 12:21:26 EST


On Thu, Jul 31, 2014 at 09:09:24AM -0700, Paul E. McKenney wrote:
> Well, that is one of the questions in the 0/10 cover letter. If it turns
> out to be necessary to worry about idle-task trampolines, it should be
> possible to avoid hammering all idle CPUs in the common case. Though maybe
> battery-powered devices won't need RCU-tasks.

So do we really need this to be a full blown RCU implementation? Could
we not live with something like a task_barrier() function that
guarantees the same as this rcu_task_synchronize() or somesuch?

So for rostedt's case he could patch out all trampolines, call
task_barrier() and then free them.

We can make task_barrier() force each cpu to resched once -- which, if
we do that after the task's have all scheduled once, could be the empty
set.

It also pushes the cost of this machinery into the caller of
task_barrier() and not in some random kthread (yet another one).

Now, if only task_work would work for kernel threads, then we could do
something far nicer...

Attachment: pgpGpzJTrX7O6.pgp
Description: PGP signature