ABSTRACT
Nonblocking data structures face a safe memory reclamation (SMR) problem. In these algorithms, a node removed from the data structure cannot be reclaimed (freed) immediately, as other threads may be about to access it. The goal of an SMR scheme is to minimize the number of removed nodes that cannot be reclaimed---called wasted memory---while imposing low run-time overhead. It is also desirable for an SMR scheme to be self-contained and not require specific OS features.
No existing self-contained SMR scheme can guarantee a predetermined bound on wasted memory without imposing significant run-time overhead. In this paper, we introduce margin pointers (MP), the first nonblocking, self-contained SMR scheme featuring both predetermined bounded wasted memory and low run-time overhead. MP targets search data structures, such as binary trees and skip lists, which are important SMR clients and also victims of its high overhead. MP's novelty lies in its protecting logical subsets of the data structure from being reclaimed, as opposed to previous work, which protects physical locations (explicit nodes).
- Dan Alistarh, William Leiserson, Alex Matveev, and Nir Shavit. 2015. ThreadScan: Automatic and Scalable Memory Reclamation. In SPAA '15.Google ScholarDigital Library
- Dan Alistarh, William Leiserson, Alex Matveev, and Nir Shavit. 2017. Forkscan: Conservative Memory Reclamation for Modern Operating Systems. In EuroSys '17.Google ScholarDigital Library
- Oana Balmau, Rachid Guerraoui, Maurice Herlihy, and Igor Zablotchi. 2016. Fast and Robust Memory Reclamation for Concurrent Data Structures. In SPAA '16.Google Scholar
- Anastasia Braginsky, Alex Kogan, and Erez Petrank. 2013. Drop the Anchor: Lightweight Memory Management for Non-blocking Data Structures. In SPAA '13.Google ScholarDigital Library
- Trevor Brown, Faith Ellen, and Eric Ruppert. 2014. A General Technique for Non-Blocking Trees. In PPoPP '14.Google ScholarDigital Library
- Trevor Alexander Brown. 2015. Reclaiming Memory for Lock-Free Data Structures: There Has to Be a Better Way. In PODC '15.Google ScholarDigital Library
- Nachshon Cohen. 2018. Every Data Structure Deserves Lock-free Memory Reclamation. Proceedings of the ACM on Programming Languages 2, OOPSLA, Article 143 (2018).Google ScholarDigital Library
- Nachshon Cohen and Erez Petrank. 2015. Automatic Memory Reclamation for Lock-free Data Structures (OOPSLA 2015).Google Scholar
- Nachshon Cohen and Erez Petrank. 2015. Efficient Memory Management for Lock-Free Data Structures with Optimistic Access. In SPAA '15.Google Scholar
- Tudor David, Rachid Guerraoui, and Vasileios Trigonakis. 2015. Asynchronized Concurrency: The Secret to Scaling Concurrent Search Data Structures. In ASPLOS '15.Google ScholarDigital Library
- David L. Detlefs, Paul A. Martin, Mark Moir, and Guy L. Steele, Jr. 2002. Lock-free Reference Counting. Distributed Computing 15, 4 (2002).Google Scholar
- Dave Dice, Maurice Herlihy, and Alex Kogan. 2016. Fast Non-Intrusive Memory Reclamation for Highly-Concurrent Data Structures. In ISMM '16.Google Scholar
- Faith Ellen, Panagiota Fatourou, Eric Ruppert, and Franck van Breugel. 2010. Non-Blocking Binary Search Trees. In PODC '10.Google Scholar
- Jason Evans. 2006. A Scalable Concurrent malloc(3) Implementation for FreeBSD.Google Scholar
- Keir Fraser. 2004. Practical lock-freedom. Ph.D. Dissertation. University of Cambridge.Google Scholar
- Timothy L. Harris. 2001. A Pragmatic Implementation of Non-blocking Linked-Lists. In DISC '01.Google ScholarDigital Library
- Maurice Herlihy. 1991. Wait-free synchronization. TOPLAS 13 (January 1991), 26 pages. Issue 1.Google Scholar
- Maurice Herlihy, Victor Luchangco, Paul Martin, and Mark Moir. 2002. Dynamic-Sized Lock-Free Data Structures. In PODC '02.Google ScholarDigital Library
- Shane V. Howley and Jeremy Jones. 2012. A Non-Blocking Internal Binary Search Tree. In SPAA '12.Google Scholar
- Paul E. McKenney and John D. Slingwine. 1998. Read-copy update: Using execution history to solve concurrency problems. In PDCS '98.Google Scholar
- Maged M. Michael. 2002. High Performance Dynamic Lock-Free Hash Tables and List-Based Sets. In SPAA '02.Google Scholar
- Maged. M. Michael. 2004. Hazard pointers: safe memory reclamation for lock-free objects. IEEE Transactions on Parallel and Distributed Systems 15, 6 (2004).Google ScholarDigital Library
- Maged M. Michael, Michael Wong, Paul McKenney, Arthur O'Dwyer, and David Hollman. 2017. Hazard Pointers: Safe Resource Reclamation for Optimistic Concurrency. Technical Report P0233R3. C++ SG14 Working Group.Google Scholar
- Aravind Natarajan and Neeraj Mittal. 2014. Fast Concurrent Lock-free Binary Search Trees. In PPoPP '14.Google Scholar
- Matthew Parkinson, Dimitrios Vytiniotis, Kapil Vaswani, Manuel Costa, Pantazis Deligiannis, Dylan McDermott, Aaron Blankstein, and Jonathan Balkind. 2017. Project Snowflake: Non-blocking Safe Manual Memory Management in .NET. Proceedings of the ACM on Programming Languages (2017).Google ScholarDigital Library
- Arunmoezhi Ramachandran and Neeraj Mittal. 2015. A Fast Lock-Free Internal Binary Search Tree. In ICDCN '15.Google ScholarDigital Library
- Pedro Ramalhete and Andreia Correia. 2017. Brief Announcement: Hazard Eras - Non-Blocking Memory Reclamation. In SPAA '17.Google ScholarDigital Library
- Daniel Solomon. 2020. Efficiently Reclaiming Memory in Concurrent Search Data Structures While Bounding Wasted Memory. Master's thesis. Tel Aviv University.Google Scholar
- Haosen Wen, Joseph Izraelevitz, Wentao Cai, H. Alan Beadle, and Michael L. Scott. 2018. Interval-based Memory Reclamation. In PPoPP '18.Google Scholar
Index Terms
- Efficiently reclaiming memory in concurrent search data structures while bounding wasted memory
Recommendations
Reclaiming Memory for Lock-Free Data Structures: There has to be a Better Way
PODC '15: Proceedings of the 2015 ACM Symposium on Principles of Distributed ComputingMemory reclamation for sequential or lock-based data structures is typically easy. However, memory reclamation for lock-free data structures is a significant challenge. Automatic techniques such as garbage collection are inefficient or use locks, and ...
Automatic memory reclamation for lock-free data structures
OOPSLA '15Lock-free data-structures are widely employed in practice, yet designing lock-free memory reclamation for them is notoriously difficult. In particular, all known lock-free reclamation schemes are ``manual'' in the sense that the developer has to ...
Fast non-intrusive memory reclamation for highly-concurrent data structures
ISMM '16Current memory reclamation mechanisms for highly-concurrent data structures present an awkward trade-off. Techniques such as epoch-based reclamation perform well when all threads are running on dedicated processors, but the delay or failure of a single ...
Comments