User-Level Implementations of Read-Copy Update

  • Authors:
  • Mathieu Desnoyers;Paul E. McKenney;Alan S. Stern;Michel R. Dagenais;Jonathan Walpole

  • Affiliations:
  • EfficiOS Inc., Montréal;IBM Linux Technology Center, Beaverton;Rowland Institute at Harvard, Cambridge;Ecole Polytechnique de Montréal, Montréal;Portland State University, Portland

  • Venue:
  • IEEE Transactions on Parallel and Distributed Systems
  • Year:
  • 2012

Quantified Score

Hi-index 0.05

Visualization

Abstract

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.