Messages in this thread | | | Date | Thu, 31 Jul 2014 18:20:30 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v2 tip/core/rcu 01/10] rcu: Add call_rcu_tasks() |
| |
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... [unhandled content-type:application/pgp-signature] | |