[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3323165.3323187acmconferencesArticle/Chapter ViewAbstractPublication PagesspaaConference Proceedingsconference-collections
research-article
Open access

Delay-Free Concurrency on Faulty Persistent Memory

Published: 17 June 2019 Publication History

Abstract

Non-volatile memory (NVM) promises persistent main memory that remains correct despite loss of power. This has sparked a line of research into algorithms that can recover from a system crash. Since caches are expected to remain volatile, concurrent data structures and algorithms must be redesigned to guarantee that they are left in a consistent state after a system crash, and that the execution can be continued upon recovery. However, the prospect of redesigning every concurrent data structure or algorithm before it can be used in NVM architectures is daunting. In this paper, we present a construction that takes any concurrent program with reads, writes and CASs to shared memory and makes it persistent, i.e., can be continued after one or more processes fault and have to restart. The converted algorithm has constant computational delay (preserves instruction counts on each process within a constant factor), as well as constant recovery delay (a process can recover from a fault in a constant number of instructions). We show this first for a simple transformation, and then present optimizations to make it more practical, allowing for a trade-off between computation and recovery delay. We also provide an optimized transformation for normalized lock-free data structures, thus speeding up a large class of concurrent algorithms. Finally, we experimentally evaluate these transformations by applying them to a queue. We compare the performance of our transformations to that of a persistent transactional memory framework, Romulus, and to a hand-tuned persistent queue. We show that our optimized transformation performs favorably when compared to Romulus. Furthermore, our optimized transformation is even comparable to the hand-tuned version, showing that the generality we provide comes at very little performance cost.

References

[1]
Zahra Aghazadeh, Wojciech Golab, and Philipp Woelfel. 2014. Making objects writable. In Proceedings of the 2014 ACM symposium on Principles of distributed computing. ACM, 385--395.
[2]
Marcos K Aguilera and Svend Frølund. 2003. Strict linearizability and the power of aborting. Technical Report HPL-2003--241 (2003).
[3]
Hagit Attiya, Ohad Ben Baruch, and Danny Hendler. 2018. Nesting-Safe Recoverable Linearizability: Modular Constructions for Non-Volatile Memory. In ACM Symposium on Principles of Distributed Computing (PODC) .
[4]
Naama Ben-David, Guy Blelloch, Yihan Sun, and Yuanhao Wei. 2019. Multiversion Concurrency with Bounded Delay Precise Garbage Collection. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA) .
[5]
Naama Ben-David, Guy E. Blelloch, Michal Friedman, and Yuanhao Wei. 2018. Delay-Free Concurrency on Faulty Persistent Memory. https://arxiv.org/pdf/1806.04780.pdf
[6]
Guy Blelloch, Phillip Gibbons, Yan Gu, Charles McGuffey, and Julian Shun. 2018. The Parallel Persistent Memory Model. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA) .
[7]
Dhruva R Chakrabarti, Hans-J Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging locks for non-volatile memory consistency. In ACM SIGPLAN Notices, Vol. 49. ACM, 433--452.
[8]
Shimin Chen and Qin Jin. 2015. Persistent b+-trees in non-volatile main memory. Proceedings of the VLDB Endowment, Vol. 8, 7 (2015), 786--797.
[9]
Nachshon Cohen, Michal Friedman, and James R Larus. 2017. Efficient logging in non-volatile memory by exploiting coherency protocols. Proceedings of the ACM on Programming Languages, Vol. 1, OOPSLA (2017), 67.
[10]
Nachshon Cohen, Rachid Guerraoui, and Mihail Igor Zablotchi. 2018. The Inherent Cost of Remembering Consistently. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA) .
[11]
Nachshon Cohen and Erez Petrank. 2015. Efficient memory management for lock-free data structures with optimistic access. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA). ACM, 254--263.
[12]
Alexei Colin and Brandon Lucia. 2018. Termination checking and task decomposition for task-based intermittent programs. In International Conference on Compiler Construction .
[13]
Andreia Correia, Pascal Felber, and Pedro Ramalhete. 2018. Romulus: Efficient Algorithms for Persistent Transactional Memory. In ACM Symposium on Parallelism in Algorithms and Architectures (SPAA). ACM, 271--282.
[14]
Tudor David, Aleksandar Dragojevic, Rachid Guerraoui, and Igor Zablotchi. 2018. Log-Free Concurrent Data Structures. In USENIX Annual Technical Conference (ATC) .
[15]
Marc de Kruijf and Karthikeyan Sankaralingam. 2011. Idempotent processor architecture. In Proceedings of the 44th Annual IEEE/ACM International Symposium on Microarchitecture. ACM.
[16]
Cynthia Dwork, Maurice Herlihy, and Orli Waarts. 1997. Contention in shared memory algorithms. Journal of the ACM (JACM), Vol. 44, 6 (1997), 779--805.
[17]
Michal Friedman, Maurice Herlihy, Virendra Marathe, and Erez Petrank. 2018. A persistent lock-free queue for non-volatile memory. In ACM Symposium on Principles and Practice of Parallel Programming (PPoPP). ACM, 28--40.
[18]
Danny Hendler, Itai Incze, Nir Shavit, and Moran Tzafrir. 2010. Flat combining and the synchronization-parallelism tradeoff. In Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures. ACM, 355--364.
[19]
Intel. 2016. Intel64 and IA-32 Architectures Optimization Reference Manual. https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf
[20]
Joseph Izraelevitz, Hammurabi Mendes, and Michael L Scott. 2016. Linearizability of persistent memory objects under a full-system-crash failure model. Springer, 313--327.
[21]
Aasheesh Kolli, Steven Pelley, Ali Saidi, Peter M Chen, and Thomas F Wenisch. 2016. High-performance transactions for persistent memories. ACM SIGOPS Operating Systems Review, Vol. 50, 2 (2016), 399--411.
[22]
Se Kwon Lee, K Hyun Lim, Hyunsub Song, Beomseok Nam, and Sam H Noh. 2017. WORT: Write Optimal Radix Tree for Persistent Memory Storage Systems. In FAST. 257--270.
[23]
Herwig Lejsek, Friðrik Heiðar Ásmundsson, Björn Þór Jónsson, and Laurent Amsaleg. 2009. NV-Tree: An efficient disk-based index for approximate search in very large high-dimensional collections. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 31, 5 (2009), 869--883.
[24]
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. ACM, 329--343.
[25]
Qingrui Liu, Joseph Izraelevitz, Se Kwon Lee, Michael Scott, Sam H. Noh, and Changhee Jung. 2018. iDO: Compiler-Directed Failure Atomicity for Nonvolatile Memory. In MICRO. 258--270.
[26]
Brandon Lucia and Benjamin Ransford. 2015. A simpler, safer programming and execution model for intermittent systems. PLDI (2015).
[27]
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. ACM, 499--512.
[28]
Maged M Michael and Michael L Scott. 1996. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In ACM Symposium on Principles of Distributed Computing (PODC). ACM, 267--275.
[29]
Faisal Nawab, Joseph Izraelevitz, Terence Kelly, Charles B Morrey III, Dhruva R Chakrabarti, and Michael L Scott. 2017. Dal'i: A Periodically Persistent Hash Map. In LIPIcs-Leibniz International Proceedings in Informatics, Vol. 91. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.
[30]
Ismail Oukid, Johan Lasperas, Anisoara Nica, Thomas Willhalm, and Wolfgang Lehner. 2016. Fptree: A hybrid SCM-DRAM persistent and concurrent b-tree for storage class memory. In Proceedings of the 2016 International Conference on Management of Data. ACM, 371--386.
[31]
Shahar Timnat and Erez Petrank. 2014. A practical wait-free simulation for lock-free data structures. In ACM Symposium on Principles and Practice of Parallel Programming (PPoPP), Vol. 49. ACM, 357--368.
[32]
Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, Roy H Campbell, et almbox. 2011. Consistent and Durable Data Structures for Non-Volatile Byte-Addressable Memory. In FAST, Vol. 11. 61--75.

Cited By

View all
  • (2024)Lupin: Tolerating Partial Failures in a CXL PodProceedings of the 2nd Workshop on Disruptive Memory Systems10.1145/3698783.3699377(41-50)Online publication date: 3-Nov-2024
  • (2024)The Illusive Failure-Atomic Double-Width Compare-And-SwapProceedings of the 2024 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating algorithms for Distributed systems10.1145/3663338.3665830(1-5)Online publication date: 17-Jun-2024
  • (2024)VERLIB: Concurrent Versioned PointersProceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3627535.3638501(200-214)Online publication date: 2-Mar-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SPAA '19: The 31st ACM Symposium on Parallelism in Algorithms and Architectures
June 2019
410 pages
ISBN:9781450361842
DOI:10.1145/3323165
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]

Sponsors

In-Cooperation

  • EATCS: European Association for Theoretical Computer Science

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 June 2019

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Funding Sources

Conference

SPAA '19

Acceptance Rates

SPAA '19 Paper Acceptance Rate 34 of 109 submissions, 31%;
Overall Acceptance Rate 447 of 1,461 submissions, 31%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)226
  • Downloads (Last 6 weeks)25
Reflects downloads up to 11 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Lupin: Tolerating Partial Failures in a CXL PodProceedings of the 2nd Workshop on Disruptive Memory Systems10.1145/3698783.3699377(41-50)Online publication date: 3-Nov-2024
  • (2024)The Illusive Failure-Atomic Double-Width Compare-And-SwapProceedings of the 2024 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating algorithms for Distributed systems10.1145/3663338.3665830(1-5)Online publication date: 17-Jun-2024
  • (2024)VERLIB: Concurrent Versioned PointersProceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3627535.3638501(200-214)Online publication date: 2-Mar-2024
  • (2024)Highly-Efficient Persistent FIFO QueuesStructural Information and Communication Complexity10.1007/978-3-031-60603-8_14(238-261)Online publication date: 27-May-2024
  • (2023)Memento: A Framework for Detectable Recoverability in Persistent MemoryProceedings of the ACM on Programming Languages10.1145/35912327:PLDI(292-317)Online publication date: 6-Jun-2023
  • (2023)Brief Announcement: Efficient Recoverable Writable-CASProceedings of the 2023 ACM Symposium on Principles of Distributed Computing10.1145/3583668.3594592(366-369)Online publication date: 19-Jun-2023
  • (2023)Constant RMR System-wide Failure Resilient Durable Locks with Dynamic JoiningProceedings of the 35th ACM Symposium on Parallelism in Algorithms and Architectures10.1145/3558481.3591100(227-237)Online publication date: 17-Jun-2023
  • (2023)Reconciling Selective Logging and Hardware Persistent Memory Transaction2023 IEEE International Symposium on High-Performance Computer Architecture (HPCA)10.1109/HPCA56546.2023.10071088(664-676)Online publication date: Feb-2023
  • (2022)A Closer Look at Detectable Objects for Persistent MemoryProceedings of the 2022 Workshop on Advanced tools, programming languages, and PLatforms for Implementing and Evaluating algorithms for Distributed systems10.1145/3524053.3542749(56-64)Online publication date: 25-Jul-2022
  • (2022)Fast and Fair Randomized Wait-Free LocksProceedings of the 2022 ACM Symposium on Principles of Distributed Computing10.1145/3519270.3538448(187-197)Online publication date: 20-Jul-2022
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media