Abstract
Read-copy update (RCU) is a shared memory synchronization mechanism with scalable synchronization-free reads that nevertheless execute correctly with concurrent updates. To guarantee the consistency of such reads, an RCU update transitioning the data structure between certain states must wait for the completion of all existing reads. Unfortunately, these waiting periods quickly become a bottleneck, and thus RCU remains unused in data structures that require scalable, fine-grained, update operations. To solve this problem, we present Predicate RCU (PRCU), an RCU variant in which an update waits only for the reads whose consistency it affects, which are specified by a user-supplied predicate. We explore the trade-offs in implementing PRCU, describing implementations that reduce wait times by 10--100x with varying overhead on reads on modern x86 multiprocessor machines. We demonstrate the applicability of PRCU by applying it to two RCU-based concurrent algorithms---the Citrus binary search tree and a resizable hash table---and show experimentally that PRCU significantly improves the performance of both algorithms.
- Intel 64 and IA-32 Architectures Software Developers Manual, Volume 3: System Programming Guide, June 2013.Google Scholar
- M. Arbel and H. Attiya. Concurrent Updates with RCU: Search Tree As an Example. In PODC, 2014. Google Scholar
Digital Library
- N. G. Bronson, J. Casper, H. Chafi, and K. Olukotun. A Practical Concurrent Binary Search Tree. In PPoPP, 2010. Google Scholar
Digital Library
- A. T. Clements, M. F. Kaashoek, and N. Zeldovich. Scalable Address Spaces Using RCU Balanced Trees. In ASPLOS, 2012. Google Scholar
Digital Library
- P. J. Courtois, F. Heymans, and D. L. Parnas. Concurrent Control with “Readers” and “Writers”. CACM, 14(10), Oct. 1971. Google Scholar
Digital Library
- M. Desnoyers, P. E. McKenney, A. S. Stern, M. R. Dagenais, and J. Walpole. User-Level Implementations of Read-Copy Update. IEEE TPDS, 23(2), 2012. Google Scholar
Digital Library
- D. Dice, O. Shalev, and N. Shavit. Transactional locking II. In DISC, 2006. Google Scholar
Digital Library
- K. P. Eswaran, J. N. Gray, R. A. Lorie, and I. L. Traiger. The Notions of Consistency and Predicate Locks in a Database System. CACM, 19 (11), Nov. 1976. Google Scholar
Digital Library
- K. Fraser. Practical lock-freedom. PhD thesis, University of Cambridge, Computer Laboratory, February 2004.Google Scholar
- A. Gotsman, N. Rinetzky, and H. Yang. Verifying concurrent memory reclamation algorithms with grace. In ESOP, 2013. Google Scholar
Digital Library
- D. Guniguntala, P. E. McKenney, J. Triplett, and J. Walpole. The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with Linux. IBM Systems Journal, 47(2):221–236, May 2008. Google Scholar
Digital Library
- S. Heller, M. Herlihy, V. Luchangco, M. Moir, W. N. Scherer, and N. Shavit. A lazy concurrent list-based set algorithm. In OPODIS, 2006. Google Scholar
Digital Library
- M. Herlihy. Wait-free synchronization. ACM TOPLAS, 13(1):124– 149, Jan. 1991. Google Scholar
Digital Library
- M. Herlihy and J. E. B. Moss. Transactional memory: architectural support for lock-free data structures. In ISCA, 1993. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann Publishers Inc., 2008. Google Scholar
Digital Library
- P. W. Howard and J. Walpole. Relativistic red-black trees. Concurrency and Computation: Practice and Experience, 2013.Google Scholar
- S. V. Howley and J. Jones. A Non-blocking Internal Binary Search Tree. In SPAA, 2012. Google Scholar
Digital Library
- Y. Liu, V. Luchangco, and M. Spear. Mindicators: A Scalable Approach to Quiescence. In ICDCS, 2013. Google Scholar
Digital Library
- P. E. McKenney. Sleepable RCU. http://lwn.net/Articles/ 202847/, October 2006. Linux World News.Google Scholar
- P. E. McKenney. Hierarchical RCU. http://lwn.net/Articles/ 305782/, November 2008. Linux World News.Google Scholar
- P. E. McKenney and J. D. Slingwine. Read-copy update: Using execution history to solve concurrency problems. In Parallel and Distributed Computing and Systems, 1998.Google Scholar
- P. E. McKenney, H. J. Boehm, and L. Crowl. C++ Data-Dependency Ordering: Atomics and Memory Model. Technical Report N2664, ISO/IEC JTC1 SC22 WG21, 2008.Google Scholar
- T. Nakaike and M. M. Michael. Lock Elision for Read-only Critical Sections in Java. In PLDI, 2010. Google Scholar
Digital Library
- A. Natarajan and N. Mittal. Fast Concurrent Lock-free Binary Search Trees. In PPoPP, 2014. Google Scholar
Digital Library
- S. Owens, S. Sarkar, and P. Sewell. A Better x86 Memory Model: X86-TSO. In TPHOLs, 2009. Google Scholar
Digital Library
- W. Ruan, Y. Liu, and M. Spear. Boosting Timestamp-based Transactional Memory by Exploiting Hardware Cycle Counters. ACM TACO, 10(4), Dec. 2013. Google Scholar
Digital Library
- J. Triplett, P. E. McKenney, and J. Walpole. Resizable, scalable, concurrent hash tables via relativistic programming. In USENIX ATC, 2011. Google Scholar
Digital Library
Index Terms
Predicate RCU: an RCU for scalable concurrent updates
Recommendations
Concurrent updates with RCU: search tree as an example
PODC '14: Proceedings of the 2014 ACM symposium on Principles of distributed computingRead copy update (RCU) is a novel synchronization mechanism, in which the burden of synchronization falls completely on the updaters, by having them wait for all pre-existing readers to finish their read-side critical section. This paper presents citrus,...
Scalable address spaces using RCU balanced trees
ASPLOS '12Software developers commonly exploit multicore processors by building multithreaded software in which all threads of an application share a single address space. This shared address space has a cost: kernel virtual memory operations such as handling ...
Predicate RCU: an RCU for scalable concurrent updates
PPoPP 2015: Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingRead-copy update (RCU) is a shared memory synchronization mechanism with scalable synchronization-free reads that nevertheless execute correctly with concurrent updates. To guarantee the consistency of such reads, an RCU update transitioning the data ...






Comments