[ltt-dev] [RFC PATCH 0/7] priority-boost urcu

Paolo Bonzini pbonzini at redhat.com
Wed Aug 17 10:24:58 EDT 2011


On 08/17/2011 03:41 AM, Mathieu Desnoyers wrote:
> >      MB rcu_read_unlock = QSBR rcu_thread_offline + nesting count
> >      MB rcu_read_lock   = QSBR rcu_thread_online + nesting count
>
> The statement above applies to all flavors of URCU. There is a clear
> link between offline/online and nested read lock/unlock. We can see them
> as the two sides of the same counter: one counts the reasons why a
> thread is within a rcu critical section, while the other keeps track of
> the reasons why a thread is not in a rcu critical section.

Nicely put!

> But MB/MEMBARRIER and SIGNAL schemes have all been derived from the same
> 2-phase grace-period scheme, based on a lock/unlock nesting count, while
> the QSBR implementation is a different beast that requires periodic
> invocation of rcu_quiescent_state() by each application thread, which
> makes it unsuitable for use of RCU within libraries.

As an occasional contributor, I am glad what I wasn't saying total BS. 
:)  Just one thing: rcu_quiescent_state is just an optimization of

     rcu_thread_offline();
     rcu_thread_online();

where the store of 0 to the gp_ctr is optimized away.  That was the 
basis of my observation; but as far as the write-side is concerned, MB 
and QSBR are basically the same thing.

Paolo




More information about the lttng-dev mailing list