Messages in this thread | | | Date | Thu, 03 Dec 2009 17:26:24 +0800 | From | Lai Jiangshan <> | Subject | Re: [PATCH tip/core/rcu 3/4] rcu: add expedited grace-period support for preemptible RCU |
| |
Paul E. McKenney wrote: > From: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > > Implement an synchronize_rcu_expedited() for preemptible RCU that actually > is expedited. This uses synchronize_sched_expedited() to force all > threads currently running in a preemptible-RCU read-side critical section > onto the appropriate ->blocked_tasks[] list, then takes a snapshot of > all of these lists and waits for them to drain. >
> 3. Add an implementation of synchronize_rcu_expedited() that > actually expedites preemptible-RCU grace periods.
It's very nice.
But I don't understand all things.
1) Why it can be speeded up (in theory)? synchronize_sched_expedited() does speed up, it is due to migration_threads are the most highest priority threads.
But for synchronize_rcu_expedited(), some preempted tasks in ->blocked_tasks[] may be waiting at runqueue for long long time because some other higher priority threads comes.
simply comparison: synchronize_sched_expedited() ==> wake_up_process(rq->migration_thread) to force schedule on cpus. which forces read-sides notify the end earlier, or we can say "it forces read-sides run to end faster"
synchronize_rcu_expedited() ==> Nothing to force preempted read-site run to end faster.
2) Why we introduce a API which no one use it. I remember that Net guys request a expedited synchronize_rcu(). but currently there is still no one use it.
Beware my thinking may be wrong! Thanks, Lai
| |