skip to main content
10.1145/3453483.3454105acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections

Mirror: making lock-free data structures persistent

Published:18 June 2021Publication History

ABSTRACT

With the recent launch of the Intel Optane memory platform, non-volatile main memory in the form of fast, dense, byte-addressable non-volatile memory has now become available. Nevertheless, designing crash-resilient algorithms and data structures is complex and error-prone as caches and machine registers are still volatile and the data residing in memory after a crash might not reflect a consistent view of the program state. This complex setting has often led to durable data structures being inefficient or incorrect, especially in the concurrent setting.

In this paper, we present Mirror -- a simple, general automatic transformation that adds durability to lock-free data structures, with a low performance overhead. Moreover, in the current non-volatile main memory configuration, where non-volatile memory operates side-by-side with a standard fast DRAM, our mechanism exploits the hybrid system to substantially improve performance. Evaluation shows a significant performance advantage over NVTraverse, which is the state-of-the-art general transformation technique, and over Intel's concurrent lock-based key-value datastore. Unlike some previous transformations, Mirror does not require any restriction on the lock-free data structure format.

References

  1. AMD. [n.d.]. AMD64 Architecture Programmer’s Manual.. https://www.amd.com/system/files/TechDocs/24594.pdfGoogle ScholarGoogle Scholar
  2. ARM. 2018. ARM Architecture Reference Manual ARMv8. https://static.docs.arm.com/ddi0487/da/DDI0487D_a_armv8_arm.pdfGoogle ScholarGoogle Scholar
  3. Hillel Avni and Trevor Brown. 2016. Persistent Hybrid Transactional Memory for Databases. Proc. VLDB Endow., 10, 4 (2016), Nov., 409–420. issn:2150-8097 https://doi.org/10.14778/3025111.3025122 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. H. Alan Beadle, Wentao Cai, Haosen Wen, and Michael L. Scott. 2020. Nonblocking Persistent Software Transactional Memory. In Proceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’20). Association for Computing Machinery, New York, NY, USA. 429–430. isbn:9781450368186 https://doi.org/10.1145/3332466.3374506 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Kumud Bhandari, Dhruva R. Chakrabarti, and Hans-J. Boehm. 2016. Makalu: Fast Recoverable Allocation of Non-volatile Memory. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA. 677–694. isbn:978-1-4503-4444-9 https://doi.org/10.1145/2983990.2984019 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C++. [n.d.]. Std::atomic Library. https://en.cppreference.com/w/cpp/atomicGoogle ScholarGoogle Scholar
  7. Wentao Cai, Haosen Wen, H. Alan Beadle, Chris Kjellqvist, Mohammad Hedayati, and Michael L. Scott. 2020. Understanding and Optimizing Persistent Memory Allocation. In Proceedings of the 2020 ACM SIGPLAN International Symposium on Memory Management (ISMM 2020). 60–73.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-volatile Memory Consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’14). ACM, New York, NY, USA. 433–452. isbn:978-1-4503-2585-1 https://doi.org/10.1145/2660193.2660224 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 2011. NV-Heaps: Making Persistent Objects Fast and Safe with next-Generation, Non-Volatile Memories. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). Association for Computing Machinery, New York, NY, USA. 105–118. isbn:9781450302661 https://doi.org/10.1145/1950365.1950380 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Nachshon Cohen, Rachid Guerraoui, and Igor Zablotchi. 2018. The Inherent Cost of Remembering Consistently. In Proceedings of the 30th Symposium on Parallelism in Algorithms and Architectures. 259–269.Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, and Russell Sears. 2010. Benchmarking Cloud Serving Systems with YCSB.Google ScholarGoogle Scholar
  12. Andreia Correia, Pascal Felber, and Pedro Ramalhete. 2020. Persistent Memory and the Rise of Universal Constructions. In Proceedings of the Fifteenth European Conference on Computer Systems (EuroSys ’20). Association for Computing Machinery, New York, NY, USA. Article 5, 15 pages. isbn:9781450368827 https://doi.org/10.1145/3342195.3387515 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Tudor David, Aleksandar Dragojević, Rachid Guerraoui, and Igor Zablotchi. 2018. Log-Free Concurrent Data Structures. In Proceedings of the 2018 USENIX Conference on Usenix Annual Technical Conference (USENIX ATC ’18). USENIX Association, USA. isbn:9781931971447Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Tudor David, Rachid Guerraoui, and Vasileios Trigonakis. 2015. Asynchronized Concurrency: The Secret to Scaling Concurrent Search Data Structures.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Facebook. [n.d.]. RocksDB. https://github.com/facebook/rocksdbGoogle ScholarGoogle Scholar
  16. Keir Fraser. 2003. Practical lock-freedom.Google ScholarGoogle Scholar
  17. Michal Friedman, Naama Ben-David, Yuanhao Wei, Guy E. Blelloch, and Erez Petrank. 2020. NVTraverse: In NVRAM Data Structures, the Destination is More Important than the Journey. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA. 377–392. isbn:9781450376136 https://doi.org/10.1145/3385412.3386031 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Michal Friedman, Maurice Herlihy, Virendra J. Marathe, and Erez Petrank. 2018. A persistent lock-free queue for non-volatile memory. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2018, Vienna, Austria, February 24-28, 2018, Andreas Krall and Thomas R. Gross (Eds.). ACM, 28–40. https://doi.org/10.1145/3178487.3178490 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Google. [n.d.]. LevelDB. https://github.com/google/leveldbGoogle ScholarGoogle Scholar
  20. Jinyu Gu, Qianqian Yu, Xiayang Wang, Zhaoguo Wang, Binyu Zang, Haibing Guan, and Haibo Chen. 2019. Pisces: A Scalable and Efficient Persistent Transactional Memory. In Proceedings of the 2019 USENIX Conference on Usenix Annual Technical Conference (USENIX ATC ’19). USENIX Association, USA. 913–928. isbn:9781939133038Google ScholarGoogle Scholar
  21. Timothy L Harris. 2001. A pragmatic implementation of non-blocking linked-lists. 300–314.Google ScholarGoogle Scholar
  22. Maurice P Herlihy and Jeannette M Wing. 1990. Linearizability: A correctness condition for concurrent objects. 12, 3 (1990), 463–492.Google ScholarGoogle Scholar
  23. Intel. [n.d.]. Developers Intel64 and IA-32 Architectures Software Manuals Combined. https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.htmlGoogle ScholarGoogle Scholar
  24. Intel. [n.d.]. Intel Architecture Instruction Set Extensions Programming Reference. https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.htmlGoogle ScholarGoogle Scholar
  25. Intel. [n.d.]. Persistent Memory Library. https://pmem.io.Google ScholarGoogle Scholar
  26. Intel. [n.d.]. pmemkv-bench.. https://github.com/pmem/pmemkv-benchGoogle ScholarGoogle Scholar
  27. Joseph Izraelevitz, Hammurabi Mendes, and Michael L Scott. 2016. Linearizability of persistent memory objects under a full-system-crash failure model. In International Symposium on Distributed Computing. 313–327.Google ScholarGoogle ScholarCross RefCross Ref
  28. A. Joshi, V. Nagarajan, M. Cintra, and S. Viglas. 2018. DHTM: Durable Hardware Transactional Memory. In 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). 452–465. issn:2575-713X https://doi.org/10.1109/ISCA.2018.00045 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M. Chen, and Thomas F. Wenisch. 2016. High-Performance Transactions for Persistent Memories. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16). Association for Computing Machinery, New York, NY, USA. 399–411. isbn:9781450340915 https://doi.org/10.1145/2872362.2872381 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Mengxing Liu, Mingxing Zhang, Kang Chen, Xuehai Qian, Yongwei Wu, Weimin Zheng, and Jinglei Ren. 2017. DudeTM: Building durable transactions with decoupling for persistent memory. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems. 329–343.Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Virendra J. Marathe, Achin Mishra, Amee Trivedi, Yihe Huang, Faisal Zaghloul, Sanidhya Kashyap, Margo Seltzer, Tim Harris, Steve Byan, Bill Bridge, and Dave Dice. 2018. Persistent Memory Transactions. CoRR, abs/1804.00701 (2018), arxiv:1804.00701. arxiv:1804.00701Google ScholarGoogle Scholar
  32. Amirsaman Memaripour, Anirudh Badam, Amar Phanishayee, Yanqi Zhou, Ramnatthan Alagappan, Karin Strauss, and Steven Swanson. 2017. Atomic In-Place Updates for Non-Volatile Main Memories with Kamino-Tx. In Proceedings of the Twelfth European Conference on Computer Systems (EuroSys ’17). Association for Computing Machinery, New York, NY, USA. 499–512. isbn:9781450349383 https://doi.org/10.1145/3064176.3064215 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Amirsaman Memaripour, Joseph Izraelevitz, and Steven Swanson. 2020. Pronto: Easy and Fast Persistence for Volatile Data Structures. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’20). Association for Computing Machinery, New York, NY, USA. 789–806. isbn:9781450371025 https://doi.org/10.1145/3373376.3378456 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Aravind Natarajan and Neeraj Mittal. 2014. Fast Concurrent Lock-free Binary Search Trees.Google ScholarGoogle Scholar
  35. Azalea Raad, John Wickerson, Gil Neiger, and Viktor Vafeiadis. 2019. Persistency Semantics of the Intel-X86 Architecture. Proc. ACM Program. Lang., 4, POPL (2019), Article 11, 31 pages.Google ScholarGoogle Scholar
  36. Azalea Raad, John Wickerson, and Viktor Vafeiadis. 2019. Weak Persistency Semantics from the Ground up: Formalising the Persistency Semantics of ARMv8 and Transactional Models. Proc. ACM Program. Lang., 3, OOPSLA (2019), Article 135.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Pedro Ramalhete, Andreia Correia, Pascal Felber, and Nachshon Cohen. 2019. OneFile: A Wait-Free Persistent Transactional Memory. In 2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN). 151–163.Google ScholarGoogle Scholar
  38. Steve Scargall. 2020. pmemkv: A Persistent In-Memory Key-Value Store. Apress, Berkeley, CA. 141–153. isbn:978-1-4842-4932-1 https://doi.org/10.1007/978-1-4842-4932-1_9 Google ScholarGoogle ScholarCross RefCross Ref
  39. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). Association for Computing Machinery, New York, NY, USA. 91–104. isbn:9781450302661 https://doi.org/10.1145/1950365.1950379 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. SIGPLAN Not., 46, 3 (2011), March, 91–104. issn:0362-1340 https://doi.org/10.1145/1961296.1950379 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Yoav Zuriel, Michal Friedman, Gali Sheffi, Nachshon Cohen, and Erez Petrank. 2019. Efficient Lock-Free Durable Sets.Google ScholarGoogle Scholar

Index Terms

  1. Mirror: making lock-free data structures persistent

      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
      • Published in

        cover image ACM Conferences
        PLDI 2021: Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation
        June 2021
        1341 pages
        ISBN:9781450383912
        DOI:10.1145/3453483

        Copyright © 2021 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 18 June 2021

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate406of2,067submissions,20%

        Upcoming Conference

        PLDI '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader