skip to main content
research-article

Predicate RCU: an RCU for scalable concurrent updates

Published:24 January 2015Publication History
Skip Abstract Section

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.

References

  1. Intel 64 and IA-32 Architectures Software Developers Manual, Volume 3: System Programming Guide, June 2013.Google ScholarGoogle Scholar
  2. M. Arbel and H. Attiya. Concurrent Updates with RCU: Search Tree As an Example. In PODC, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. N. G. Bronson, J. Casper, H. Chafi, and K. Olukotun. A Practical Concurrent Binary Search Tree. In PPoPP, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. T. Clements, M. F. Kaashoek, and N. Zeldovich. Scalable Address Spaces Using RCU Balanced Trees. In ASPLOS, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. P. J. Courtois, F. Heymans, and D. L. Parnas. Concurrent Control with “Readers” and “Writers”. CACM, 14(10), Oct. 1971. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. D. Dice, O. Shalev, and N. Shavit. Transactional locking II. In DISC, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. K. Fraser. Practical lock-freedom. PhD thesis, University of Cambridge, Computer Laboratory, February 2004.Google ScholarGoogle Scholar
  10. A. Gotsman, N. Rinetzky, and H. Yang. Verifying concurrent memory reclamation algorithms with grace. In ESOP, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Herlihy. Wait-free synchronization. ACM TOPLAS, 13(1):124– 149, Jan. 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Herlihy and J. E. B. Moss. Transactional memory: architectural support for lock-free data structures. In ISCA, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann Publishers Inc., 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. W. Howard and J. Walpole. Relativistic red-black trees. Concurrency and Computation: Practice and Experience, 2013.Google ScholarGoogle Scholar
  17. S. V. Howley and J. Jones. A Non-blocking Internal Binary Search Tree. In SPAA, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Y. Liu, V. Luchangco, and M. Spear. Mindicators: A Scalable Approach to Quiescence. In ICDCS, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. E. McKenney. Sleepable RCU. http://lwn.net/Articles/ 202847/, October 2006. Linux World News.Google ScholarGoogle Scholar
  20. P. E. McKenney. Hierarchical RCU. http://lwn.net/Articles/ 305782/, November 2008. Linux World News.Google ScholarGoogle Scholar
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle Scholar
  23. T. Nakaike and M. M. Michael. Lock Elision for Read-only Critical Sections in Java. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. A. Natarajan and N. Mittal. Fast Concurrent Lock-free Binary Search Trees. In PPoPP, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. S. Owens, S. Sarkar, and P. Sewell. A Better x86 Memory Model: X86-TSO. In TPHOLs, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. W. Ruan, Y. Liu, and M. Spear. Boosting Timestamp-based Transactional Memory by Exploiting Hardware Cycle Counters. ACM TACO, 10(4), Dec. 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. J. Triplett, P. E. McKenney, and J. Walpole. Resizable, scalable, concurrent hash tables via relativistic programming. In USENIX ATC, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Predicate RCU: an RCU for scalable concurrent updates

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 50, Issue 8
        PPoPP '15
        August 2015
        290 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2858788
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          PPoPP 2015: Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
          January 2015
          290 pages
          ISBN:9781450332057
          DOI:10.1145/2688500

        Copyright © 2015 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 24 January 2015

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!