Issue No. 02 - February (2012 vol. 23)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/TPDS.2011.159
Mathieu Desnoyers , EfficiOS Inc., Montréal
Paul E. McKenney , IBM Linux Technology Center, Beaverton
Alan S. Stern , Rowland Institute at Harvard, Cambridge
Michel R. Dagenais , Ecole Polytechnique de Montréal, Montréal
Jonathan Walpole , Portland State University, Portland
Read-copy update (RCU) is a synchronization technique that often replaces reader-writer locking because RCU's read-side primitives are both wait-free and an order of magnitude faster than uncontended locking. Although RCU updates are relatively heavy weight, the importance of read-side performance is increasing as computing systems become more responsive to changes in their environments. RCU is heavily used in several kernel-level environments. Unfortunately, kernel-level implementations use facilities that are often unavailable to user applications. The few prior user-level RCU implementations either provided inefficient read-side primitives or restricted the application architecture. This paper fills this gap by describing efficient and flexible RCU implementations based on primitives commonly available to user-level applications. Finally, this paper compares these RCU implementations with each other and with standard locking, which enables choosing the best mechanism for a given workload. This work opens the door to widespread user-application use of RCU.
Synchronization, process management, operating systems, software/software engineering, threads, concurrency.
Mathieu Desnoyers, Paul E. McKenney, Alan S. Stern, Michel R. Dagenais, Jonathan Walpole, "User-Level Implementations of Read-Copy Update", IEEE Transactions on Parallel & Distributed Systems, vol. 23, no. , pp. 375-382, February 2012, doi:10.1109/TPDS.2011.159