DULL: A Fast Scalable Detectable Unrolled Lock-Based Linked List

Authors Ahmed Fahmy , Wojciech Golab



PDF
Thumbnail PDF

File

LIPIcs.OPODIS.2024.6.pdf
  • Filesize: 1.29 MB
  • 25 pages

Document Identifiers

Author Details

Ahmed Fahmy
  • Department of Electrical and Computer Engineering, University of Waterloo, Canada
Wojciech Golab
  • Department of Electrical and Computer Engineering, University of Waterloo, Canada

Acknowledgements

We would like to thank the OPODIS review committee for their valuable comments and helpful suggestions.

Cite As Get BibTex

Ahmed Fahmy and Wojciech Golab. DULL: A Fast Scalable Detectable Unrolled Lock-Based Linked List. In 28th International Conference on Principles of Distributed Systems (OPODIS 2024). Leibniz International Proceedings in Informatics (LIPIcs), Volume 324, pp. 6:1-6:25, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2024) https://doi.org/10.4230/LIPIcs.OPODIS.2024.6

Abstract

Persistent memory (PM) has emerged as a promising technology that enables data structures to preserve their consistent state after recovering from system failures. Detectable data structures have been proposed to detect the response of the last operation of a crashed process. Various lock-free detectable and recoverable concurrent data structures have been developed in the literature. However, designing detectable lock-based structures is challenging due to the need to preserve the correctness properties of the underlying locks, such as mutual exclusion and deadlock-freedom, across failures. Therefore, lock-based detectable and persistent data structures are not as common as lock-free structures. In this work, we introduce DULL: a fast, scalable and Detectable Unrolled Lock-based Linked list. This paper presents the design and implementation of DULL, along with an evaluation of its recoverability and scalability. Experimental Results show that DULL is several-fold faster than the competition in all workloads that involve updates. Moreover, as opposed to some of the previous works, our algorithm is scalable when the multiprocessor is oversubscribed. DULL is a demonstration of the feasibility of using lock-based data structures with detectability in PM environments. We believe that DULL opens up new research directions for designing and analyzing detectable lock-based data structures.

Subject Classification

ACM Subject Classification
  • Theory of computation → Shared memory algorithms
  • Software and its engineering → Mutual exclusion
  • Computer systems organization → Reliability
Keywords
  • detectability
  • lock-based
  • mutual exclusion
  • linked list
  • fault-tolerance
  • persistent memory
  • concurrency

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Marcos K. Aguilera and Svend Frølund. Strict linearizability and the power of aborting. Technical Report HPL-2003-241, HP Labs, 2003. Google Scholar
  2. Eric Anderson, Xiaozhou Li, Mehul A. Shah, Joseph Tucek, and Jay J. Wylie. What consistency does your key-value store actually provide? In Proceedings of the Sixth International Conference on Hot Topics in System Dependability, HotDep'10, pages 1-16, 2010. Google Scholar
  3. Hagit Attiya, Ohad Ben-Baruch, Panagiota Fatourou, Danny Hendler, and Eleftherios Kosmas. Tracking in order to recover: Recoverable lock-free data structures. ArXiv, 2019. URL: https://doi.org/10.48550/arXiv.1905.13600.
  4. Hagit Attiya, Ohad Ben-Baruch, Panagiota Fatourou, Danny Hendler, and Eleftherios Kosmas. Detectable recovery of lock-free data structures. In Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP '22, pages 262-277, 2022. URL: https://doi.org/10.1145/3503221.3508444.
  5. Hagit Attiya, Ohad Ben-Baruch, and Danny Hendler. Nesting-safe recoverable linearizability: Modular constructions for non-volatile memory. In Proceedings of the 2018 ACM Symposium on Principles of Distributed Computing, PODC '18, pages 7-16, 2018. URL: https://doi.org/10.1145/3212734.3212753.
  6. Hillel Avni and Trevor Brown. Persistent hybrid transactional memory for databases. Proceedings VLDB Endow., 10(4):409-420, 2016. Google Scholar
  7. Ohad Ben-Baruch, Danny Hendler, and Matan Rusanovsky. Upper and lower bounds on the space complexity of detectable objects. In Proceedings of the 39th Symposium on Principles of Distributed Computing, PODC '20, pages 11-20, 2020. URL: https://doi.org/10.1145/3382734.3405725.
  8. Naama Ben-David, Guy E. Blelloch, Michal Friedman, and Yuanhao Wei. Delay-free concurrency on faulty persistent memory. In The 31st ACM Symposium on Parallelism in Algorithms and Architectures, SPAA '19, pages 253-264, 2019. URL: https://doi.org/10.1145/3323165.3323187.
  9. Naama Ben-David, Michal Friedman, and Yuanhao Wei. Survey of persistent memory correctness conditions, 2022. URL: https://doi.org/10.48550/arXiv.2208.11114.
  10. Ryan Berryhill, Wojciech Golab, and Mahesh Tripunitara. Robust Shared Objects for Non-Volatile Main Memory. In 19th International Conference on Principles of Distributed Systems (OPODIS 2015), volume 46 of Leibniz International Proceedings in Informatics (LIPIcs), pages 1-17, 2016. URL: https://doi.org/10.4230/LIPICS.OPODIS.2015.20.
  11. Vibhor Bhatt and Prasad Jayanti. Specification and constant rmr algorithm for phase-fair reader-writer lock. In Proceedings of the 12th International Conference on Distributed Computing and Networking, ICDCN '11, pages 119-130, 2011. URL: https://doi.org/10.1007/978-3-642-17679-1_11.
  12. Trevor Alexander Brown. Reclaiming memory for lock-free data structures: There has to be a better way. In Proceedings of the 2015 ACM Symposium on Principles of Distributed Computing, PODC '15, pages 261-270, 2015. URL: https://doi.org/10.1145/2767386.2767436.
  13. Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. Atlas: Leveraging locks for non-volatile memory consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '14, pages 433-452, 2014. Google Scholar
  14. David Yu Cheng Chan and Philipp Woelfel. Recoverable mutual exclusion with constant amortized rmr complexity from standard primitives. In Proceedings of the 39th ACM Symposium on Principles of Distributed Computing, PODC '20, pages 181-190, 2020. URL: https://doi.org/10.1145/3382734.3405736.
  15. David Yu Cheng Chan and Philipp Woelfel. Tight lower bound for the rmr complexity of recoverable mutual exclusion. In Proceedings of the 2021 ACM Symposium on Principles of Distributed Computing, PODC '21, pages 533-543, 2021. URL: https://doi.org/10.1145/3465084.3467938.
  16. CMU Parlay Group. Source Code for FliT: A Library for Simple and Efficient Persistent Algorithms. https://github.com/cmuparlay/flit, 2024.
  17. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 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, pages 105-118, 2011. URL: https://doi.org/10.1145/1950365.1950380.
  18. Andreia Correia, Pascal Felber, and Pedro Ramalhete. Romulus: Efficient algorithms for persistent transactional memory. In Proceedings of the 30th on Symposium on Parallelism in Algorithms and Architectures, SPAA '18, pages 271-282, 2018. URL: https://doi.org/10.1145/3210377.3210392.
  19. Tudor David, Aleksandar Dragojević, Rachid Guerraoui, and Igor Zablotchi. Log-free concurrent data structures. In Proceedings of the 2018 USENIX Conference on Usenix Annual Technical Conference, USENIX ATC '18, pages 373-385, 2018. URL: https://www.usenix.org/conference/atc18/presentation/david.
  20. Sahil Dhoked and Neeraj Mittal. An adaptive approach to recoverable mutual exclusion. In Proceedings of the 39th ACM Symposium on Principles of Distributed Computing, PODC '20, pages 1-10, 2020. URL: https://doi.org/10.1145/3382734.3405739.
  21. Michal Friedman, Naama Ben-David, Yuanhao Wei, Guy E. Blelloch, and Erez Petrank. 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, pages 377-392, 2020. URL: https://doi.org/10.1145/3385412.3386031.
  22. Michal Friedman, Maurice Herlihy, Virendra Marathe, and Erez Petrank. 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 '18, pages 28-40, 2018. URL: https://doi.org/10.1145/3178487.3178490.
  23. Michal Friedman, Erez Petrank, and Pedro Ramalhete. Mirror: Making lock-free data structures persistent. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI 2021, pages 1218-1232, 2021. URL: https://doi.org/10.1145/3453483.3454105.
  24. Wojciech Golab and Danny Hendler. Recoverable mutual exclusion in sub-logarithmic time. In Proceedings of the ACM Symposium on Principles of Distributed Computing, PODC '17, pages 211-220, 2017. URL: https://doi.org/10.1145/3087801.3087819.
  25. Wojciech Golab and Danny Hendler. Recoverable mutual exclusion under system-wide failures. In Proceedings of the 2018 ACM Symposium on Principles of Distributed Computing, PODC '18, pages 17-26, 2018. URL: https://doi.org/10.1145/3212734.3212755.
  26. Wojciech Golab and Aditya Ramaraju. Recoverable mutual exclusion. Distributed Computing, 32(6):535-564, 2019. URL: https://doi.org/10.1007/S00446-019-00364-0.
  27. R. Guerraoui and R.R. Levy. Robust emulations of shared memory in a crash-recovery model. In 24th International Conference on Distributed Computing Systems, 2004. Proceedings., pages 400-407, 2004. Google Scholar
  28. Timothy L. Harris. A pragmatic implementation of non-blocking linked-lists. In Proceedings of the 15th International Conference on Distributed Computing, DISC '01, pages 300-314, 2001. URL: https://doi.org/10.1007/3-540-45414-4_21.
  29. Steve Heller, Maurice Herlihy, Victor Luchangco, Mark Moir, William N. Scherer, and Nir Shavit. A lazy concurrent list-based set algorithm. In James H. Anderson, Giuseppe Prencipe, and Roger Wattenhofer, editors, Principles of Distributed Systems, pages 3-16, Berlin, Heidelberg, 2006. Springer Berlin Heidelberg. Google Scholar
  30. Maurice P. Herlihy and Jeannette M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463-492, 1990. URL: https://doi.org/10.1145/78969.78972.
  31. Terry Ching-Hsiang Hsu, Helge Brügner, Indrajit Roy, K. Keeton, and Patrick Th. Eugster. Nvthreads: Practical persistence for multi-threaded applications. Proceedings of the Twelfth European Conference on Computer Systems, 2017. Google Scholar
  32. IBM. Overview: Address space layout randomization. https://www.ibm.com/docs/en/zos/2.4.0?topic=overview-address-space-layout-randomization, 2023. Accessed: 2024-03-22.
  33. Intel. eadr: New opportunities for persistent memory applications, 2021. URL: https://www.intel.com/content/www/us/en/developer/articles/technical/eadr-new-opportunities-for-persistent-memory-applications.html.
  34. Ramin Izadpanah, Christina Peterson, Yan Solihin, and Damian Dechev. Petra: Persistent transactional non-blocking linked data structures. ACM Trans. Archit. Code Optim., 18(2), 2021. URL: https://doi.org/10.1145/3446391.
  35. Joseph Izraelevitz, Terence Kelly, and Aasheesh Kolli. Failure-atomic persistent memory updates via justdo logging. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '16, pages 427-442, 2016. URL: https://doi.org/10.1145/2872362.2872410.
  36. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. Linearizability of persistent memory objects under a full-system-crash failure model. In Distributed Computing, pages 313-327, 2016. URL: https://doi.org/10.1007/978-3-662-53426-7_23.
  37. Prasad Jayanti, Siddhartha Jayanti, and Anup Joshi. Optimal recoverable mutual exclusion using only fasas. In Proceedings of the 6th International Conference on Networked Systems, NETYS 2018, pages 191-206. Springer, 2019. URL: https://doi.org/10.1007/978-3-030-05529-5_13.
  38. Prasad Jayanti, Siddhartha Jayanti, and Anup Joshi. A recoverable mutex algorithm with sub-logarithmic rmr on both cc and dsm. In Proceedings of the 2019 ACM Symposium on Principles of Distributed Computing, PODC '19, pages 177-186, 2019. URL: https://doi.org/10.1145/3293611.3331634.
  39. Prasad Jayanti and Anup Joshi. Recoverable FCFS Mutual Exclusion with Wait-Free Recovery. In Proceedings of 31st International Symposium on Distributed Computing, volume 91 of DISC, pages 30:1-30:15, 2017. URL: https://doi.org/10.4230/LIPICS.DISC.2017.30.
  40. Prasad Jayanti and Anup Joshi. Recoverable mutual exclusion with abortability. In Proceedings of the 7th International Conference on Networked Systems, NETYS 2019, pages 217-232. Springer, 2019. URL: https://doi.org/10.1007/978-3-030-31277-0_14.
  41. Daniel Katzan and Adam Morrison. Recoverable, abortable, and adaptive mutual exclusion with sublogarithmic rmr complexity. In Proceedings of the 24th International Conference on Principles of Distributed Systems, volume 184 of OPODIS 2020, pages 15:1-15:16, 2021. URL: https://doi.org/10.4230/LIPICS.OPODIS.2020.15.
  42. Nan Li and Wojciech Golab. Brief announcement: Detectable sequential specifications for recoverable shared objects. In Proceedings of the 2021 ACM Symposium on Principles of Distributed Computing, PODC'21, pages 557-560, 2021. URL: https://doi.org/10.1145/3465084.3467943.
  43. Maged M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst., 15(6):491-504, 2004. URL: https://doi.org/10.1109/TPDS.2004.8.
  44. Mohammad Moridi, Erica Wang, Amelia Cui, and Wojciech Golab. A closer look at detectable objects for persistent memory. In Proceedings of the 2022 Workshop on Advanced Tools, Programming Languages, and PLatforms for Implementing and Evaluating Algorithms for Distributed Systems, ApPLIED '22, pages 56-64, 2022. URL: https://doi.org/10.1145/3524053.3542749.
  45. Faisal Nawab, Joseph Izraelevitz, Terence Kelly, Charles B. Morrey III, Dhruva R. Chakrabarti, and Michael L. Scott. Dalí: A Periodically Persistent Hash Map. In 31st International Symposium on Distributed Computing (DISC 2017), volume 91 of LIPIcs, pages 37:1-37:16, 2017. URL: https://doi.org/10.4230/LIPICS.DISC.2017.37.
  46. Kenneth Platz, Neeraj Mittal, and S. Venkatesan. Practical concurrent unrolled linked lists using lazy synchronization. Journal of Parallel and Distributed Computing, 139:110-134, 2020. URL: https://doi.org/10.1016/J.JPDC.2019.11.005.
  47. Tiago Pramalhe. Onefile: Concurrent programming simplified. https://github.com/pramalhe/OneFile, 2023. Accessed: 2024-03-22.
  48. Pedro Ramalhete, Andreia Correia, Pascal Felber, and Nachshon Cohen. Onefile: A wait-free persistent transactional memory. In 2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), pages 151-163, 2019. URL: https://doi.org/10.1109/DSN.2019.00028.
  49. Matan Rusanovsky, Hagit Attiya, Ohad Ben-Baruch, Tom Gerby, Danny Hendler, and Pedro Ramalhete. Flat-combining-based persistent data structures for non-volatile memory. In Colette Johnen, Elad Michael Schiller, and Stefan Schmid, editors, Stabilization, Safety, and Security of Distributed Systems, pages 505-509, Cham, 2021. Springer International Publishing. URL: https://doi.org/10.1007/978-3-030-91081-5_38.
  50. Zhong Shao, John H. Reppy, and Andrew W. Appel. Unrolling lists. In Proceedings of the 1994 ACM Conference on LISP and Functional Programming, LFP '94, pages 185-195, 1994. URL: https://doi.org/10.1145/182409.182453.
  51. Shivaram Venkataraman, Niraj Tolia, Parthasarathy Ranganathan, and Roy H. Campbell. Consistent and durable data structures for non-volatile byte-addressable memory. In Proceedings of the 9th USENIX Conference on File and Stroage Technologies, FAST'11, page 5, 2011. Google Scholar
  52. Haris Volos, Andres Jaan Tack, and Michael M. Swift. Mnemosyne: Lightweight persistent memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS XVI, pages 91-104, 2011. URL: https://doi.org/10.1145/1950365.1950379.
  53. Tianzheng Wang, Justin Levandoski, and Per-Ake Larson. Easy lock-free indexing in non-volatile memory. In 2018 IEEE 34th International Conference on Data Engineering (ICDE), pages 461-472, 2018. Google Scholar
  54. Zhaoguo Wang, Han Yi, Ran Liu, Mingkai Dong, and Haibo Chen. Persistent transactional memory. IEEE Computer Architecture Letters, 14(1):58-61, 2015. URL: https://doi.org/10.1109/LCA.2014.2329832.
  55. Yuanhao Wei, Naama Ben-David, Michal Friedman, Guy E. Blelloch, and Erez Petrank. Flit: a library for simple and efficient persistent algorithms. In Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP '22, pages 309-321, 2022. URL: https://doi.org/10.1145/3503221.3508436.
  56. Yoav Zuriel, Michal Friedman, Gali Sheffi, Nachshon Cohen, and Erez Petrank. Efficient lock-free durable sets. Proceedings ACM Programming Languages (OOPSLA), 3(128), 2019. URL: https://doi.org/10.1145/3360554.
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail