Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3178487.3178488acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
research-article

Interval-based memory reclamation

Published: 10 February 2018 Publication History

Abstract

In this paper we present interval-based reclamation (IBR), a new approach to safe reclamation of disconnected memory blocks in nonblocking concurrent data structures. Safe reclamation is a difficult problem: a thread, before freeing a block, must ensure that no other threads are accessing that block; the required synchronization tends to be expensive. In contrast with epoch-based reclamation, in which threads reserve all blocks created after a certain time, or pointer-based reclamation (e.g., hazard pointers), in which threads reserve individual blocks, IBR allows a thread to reserve all blocks known to have existed in a bounded interval of time. By comparing a thread's reserved interval with the lifetime of a detached but not yet reclaimed block, the system can determine if the block is safe to free. Like hazard pointers, IBR avoids the possibility that a single stalled thread may reserve an unbounded number of blocks; unlike hazard pointers, it avoids a memory fence on most pointer-following operations. It also avoids the need to explicitly "unreserve" a no-longer-needed pointer.
We describe three specific IBR schemes (one with several variants) that trade off performance, applicability, and space requirements. IBR requires no special hardware or OS support. In experiments with data structure microbenchmarks, it also compares favorably (in both time and space) to other state-of-the-art approaches, making it an attractive alternative for libraries of concurrent data structures.

Supplementary Material

Artifacts Available (interval-based-reclamation-v1.0.0.zip)
Initial release of Interval-Based Reclamation schemes on Parharness testing platform.

References

[1]
Dan Alistarh, Patrick Eugster, Maurice Herlihy, Alexander Matveev, and Nir Shavit. 2014. StackTrack: An Automated Transactional Approach to Concurrent Memory Reclamation. In Proc. of the 9th European Conf. on Computer Systems (EuroSys '14). Amsterdam, The Netherlands, 25:1--25:14.
[2]
Dan Alistarh, William M. Leiserson, Alexander Matveev, and Nir Shavit. 2015. ThreadScan: Automatic and Scalable Memory Reclamation. In Proc. of the 27th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA '15). Portland, OR, USA, 123--132.
[3]
Oana Balmau, Rachid Guerraoui, Maurice Herlihy, and Igor Zablotchi. 2016. Fast and Robust Memory Reclamation for Concurrent Data Structures. In Proc. of the 28th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA '16). Pacific Grove, CA, USA, 349--359.
[4]
Anastasia Braginsky, Alex Kogan, and Erez Petrank. 2013. Drop the Anchor: Lightweight Memory Management for Non-blocking Data Structures. In Proc. of the 25th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA '13). Montréal, Québec, Canada, 33--42.
[5]
Trevor Brown. 2015. Reclaiming Memory for Lock-Free Data Structures: There Has to Be a Better Way. In Proc. of the 2015 ACM SIGACT-SIGOPS Symp. on Principles of Distributed Computing (PODC '15). Donostia-San Sebastián, Spain, 261--270.
[6]
Austin T. Clements, M. Frans Kaashoek, and Nickolai Zeldovich. 2012. Scalable Address Spaces Using RCU Balanced Trees. In Proc. of the 17th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS '12). London, England, UK, 199--210.
[7]
Nachshon Cohen and Erez Petrank. 2015. Efficient Memory Management for Lock-Free Data Structures with Optimistic Access. In Proc. of the 27th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA '15). Portland, Oregon, USA, 254--263.
[8]
Dave Dice, Maurice Herlihy, and Alex Kogan. 2016. Fast Non-intrusive Memory Reclamation for Highly-concurrent Data Structures. In Proc. of the 2016 ACM SIGPLAN Intl. Symp. on Memory Management (ISMM '16). Santa Barbara, CA, USA, 36--45.
[9]
Aleksandar Dragojević, Maurice Herlihy, Yossi Lev, and Mark Moir. 2011. On the Power of Hardware Transactional Memory to Simplify Memory Management. In Proc. of the 2011 ACM SIGACT-SIGOPS Symp. on Principles of Distributed Computing (PODC '11). San Jose, CA, USA, 99--108.
[10]
James R. Driscoll, Neil Sarnak, Daniel D. Sleator, and Robert E. Tarjan. 1986. Making Data Structures Persistent. In Proc. of the 18th Ann. ACM Symp. on Theory of Computing (STOC '86). Berkeley, CA, USA, 109--121.
[11]
Jason Evans. 2006. A scalable concurrent malloc (3) implementation for FreeBSD. In Proc. of the 2006 BSDCan Conf.
[12]
Keir Fraser. 2004. Practical lock-freedom. Ph.D. Dissertation. Computer Laboratory, University of Cambridge. No. UCAM-CL-TR-579.
[13]
Anders Gidenstam, Marina Papatriantafilou, Håkan Sundell, and Philippas Tsigas. 2009. Efficient and Reliable Lock-Free Memory Reclamation Based on Reference Counting. IEEE Trans. on Parallel and Distributed Systems 20, 8 (Aug 2009), 1173--1187.
[14]
Timothy L. Harris. 2001. A Pragmatic Implementation of Non-blocking Linked-Lists. In Proc. of the 15th Intl. Conf. on Distributed Computing (DISC '01). Springer-Verlag, Lisbon, Portugal, 300--314.
[15]
Thomas E. Hart, Paul E. McKenney, Angela Demke Brown, and Jonathan Walpole. 2007. Performance of Memory Reclamation for Lockless Synchronization. Journal of Parallel and Distributed Computing 67, 12 (Dec. 2007), 1270--1285.
[16]
Maurice Herlihy. 1993. A Methodology for Implementing Highly Concurrent Data Objects. ACM Trans. on Programming Languages and Systems 15, 5 (Nov. 1993), 745--770.
[17]
Maurice Herlihy, Victor Luchangco, Paul Martin, and Mark Moir. 2005. Nonblocking Memory Management Support for Dynamic-sized Data Structures. ACM Trans. on Computer Systems 23, 2 (May 2005), 146--196.
[18]
Håkan Sundell. 2005. Wait-Free Reference Counting and Memory Management. In 19th IEEE Intl. Parallel and Distributed Processing Symp. Denver, CO, USA, 24b--24b.
[19]
Paul E. McKenney, Dipankar Sarma, Andrea Arcangeli, Andi Kleen, Orran Krieger, and Rusty Russell. 2002. Read Copy Update. In 2002 Ottawa Linux Symp.
[20]
Maged M. Michael. 2004. Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects. IEEE Trans. on Parallel and Distributed Systems 15, 8 (Aug. 2004), 491--504.
[21]
Maged M. Michael and Michael L. Scott. 1995. Correction of a Memory Management Method for Lock-Free Data Structures. Technical Report TR 599. Dept. of Computer Science, Univ. of Rochester.
[22]
Adam Morrison and Yehuda Afek. 2015. Temporally Bounding TSO for Fence-Free Asymmetric Synchronization. In Proc. of the 20th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS '15). Istanbul, Turkey, 45--58.
[23]
Aravind Natarajan and Neeraj Mittal. 2014. Fast Concurrent Lock-free Binary Search Trees. In Proc. of the 19th ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming (PPoPP '14). Orlando, FL, USA, 317--328.
[24]
Chris Okasaki. 1999. Purely functional data structures. Cambridge University Press.
[25]
Pedro Ramalhete and Andreia Correia. 2017. Brief Announcement: Hazard Eras - Non-Blocking Memory Reclamation. In Proc. of the 29th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA '17). Washington, DC, USA, 367--369.
[26]
R. Kent Treiber. 1986. Systems Programming: Coping with Parallelism. Technical Report RJ 5118. IBM Almaden Research Center.
[27]
John D. Valois. 1995. Lock-free Linked Lists Using Compare-and-swap. In Proc. of the 1995 ACM SIGACT-SIGOPS Symp. on Principles of Distributed Computing (PODC '95). Ottowa, Ontario, Canada, 214--222.

Cited By

View all
  • (2024)A Family of Fast and Memory Efficient Lock- and Wait-Free ReclamationProceedings of the ACM on Programming Languages10.1145/36588518:PLDI(2174-2198)Online publication date: 20-Jun-2024
  • (2024)Concurrent Immediate Reference CountingProceedings of the ACM on Programming Languages10.1145/36563838:PLDI(151-174)Online publication date: 20-Jun-2024
  • (2023)Practically and Theoretically Efficient Garbage Collection for MultiversioningProceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3572848.3577508(66-78)Online publication date: 25-Feb-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PPoPP '18: Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
February 2018
442 pages
ISBN:9781450349826
DOI:10.1145/3178487
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 53, Issue 1
    PPoPP '18
    January 2018
    426 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/3200691
    Issue’s Table of Contents
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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication Notes

Badge change: Article originally badged under Version 1.0 guidelines https://www.acm.org/publications/policies/artifact-review-badging

Publication History

Published: 10 February 2018

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. garbage collection
  2. parallel algorithms
  3. shared memory

Qualifiers

  • Research-article

Funding Sources

  • US National Science Foundation
  • Google, Inc.

Conference

PPoPP '18

Acceptance Rates

Overall Acceptance Rate 230 of 1,014 submissions, 23%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)39
  • Downloads (Last 6 weeks)5
Reflects downloads up to 23 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)A Family of Fast and Memory Efficient Lock- and Wait-Free ReclamationProceedings of the ACM on Programming Languages10.1145/36588518:PLDI(2174-2198)Online publication date: 20-Jun-2024
  • (2024)Concurrent Immediate Reference CountingProceedings of the ACM on Programming Languages10.1145/36563838:PLDI(151-174)Online publication date: 20-Jun-2024
  • (2023)Practically and Theoretically Efficient Garbage Collection for MultiversioningProceedings of the 28th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming10.1145/3572848.3577508(66-78)Online publication date: 25-Feb-2023
  • (2023)Quancurrent: A Concurrent Quantiles SketchProceedings of the 35th ACM Symposium on Parallelism in Algorithms and Architectures10.1145/3558481.3591074(15-25)Online publication date: 17-Jun-2023
  • (2023)Separating Mechanism from Policy in STM2023 32nd International Conference on Parallel Architectures and Compilation Techniques (PACT)10.1109/PACT58117.2023.00031(279-296)Online publication date: 21-Oct-2023
  • (2022)wfspan: Wait-free Dynamic Memory ManagementACM Transactions on Embedded Computing Systems10.1145/353372421:4(1-26)Online publication date: 23-Aug-2022
  • (2022)wCQProceedings of the 34th ACM Symposium on Parallelism in Algorithms and Architectures10.1145/3490148.3538572(307-319)Online publication date: 11-Jul-2022
  • (2022)Fast and Portable Concurrent FIFO Queues With Deterministic Memory ReclamationIEEE Transactions on Parallel and Distributed Systems10.1109/TPDS.2021.309790133:3(604-616)Online publication date: 1-Mar-2022
  • (2022)Core-aware combiningJournal of Parallel and Distributed Computing10.1016/j.jpdc.2022.01.001162:C(27-43)Online publication date: 1-Apr-2022
  • (2021)Snapshot-free, transparent, and robust memory reclamation for lock-free data structuresProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454090(987-1002)Online publication date: 19-Jun-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media