A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors

Two major efficiency parameters for garbage collectors are the throughput overheads and the pause times that they introduce. Highly responsive systems need to use collectors with as short as possible pause times. Pause times have decreased significantly over the years, especially through the use of...

Full description

Bibliographic Details
Published in:ACM SIGOPS Operating Systems Review
Main Authors: Kliot, Gabriel, Petrank, Erez, Steensgaard, Bjarne
Format: Article in Journal/Newspaper
Language:English
Published: Association for Computing Machinery (ACM) 2009
Subjects:
Online Access:http://dx.doi.org/10.1145/1618525.1618527
https://dl.acm.org/doi/pdf/10.1145/1618525.1618527
id cracm:10.1145/1618525.1618527
record_format openpolar
spelling cracm:10.1145/1618525.1618527 2024-06-02T08:15:14+00:00 A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors Kliot, Gabriel Petrank, Erez Steensgaard, Bjarne 2009 http://dx.doi.org/10.1145/1618525.1618527 https://dl.acm.org/doi/pdf/10.1145/1618525.1618527 en eng Association for Computing Machinery (ACM) ACM SIGOPS Operating Systems Review volume 43, issue 3, page 3-13 ISSN 0163-5980 journal-article 2009 cracm https://doi.org/10.1145/1618525.1618527 2024-05-07T12:59:19Z Two major efficiency parameters for garbage collectors are the throughput overheads and the pause times that they introduce. Highly responsive systems need to use collectors with as short as possible pause times. Pause times have decreased significantly over the years, especially through the use of concurrent garbage collectors. For modern concurrent collectors, the longest pause is typically created by the need to atomically scan the runtime stack. All practical concurrent collectors that we are aware of must obtain a snapshot of the pointers on each thread's runtime stack, in order to reclaim objects correctly. To further reduce the duration of the collector pauses, incremental stack scans were proposed. However, previous such methods employ locks to stop the mutator from accessing a stack frame while it is being scanned. Thus, these methods introduce potentially long and unpredictable pauses for a mutator thread. In this work we propose the first concurrent, incremental, and lock-free stack scanning mechanism for garbage collectors, that allows high responsiveness and support for programs that employ fine-grain synchronization to avoid locks. Our solution can be employed by all concurrent collectors that we are aware of, it is lock-free, it imposes a negligible overhead on the program execution, and it supports intra-stack references as found in languages like C#. Article in Journal/Newspaper The Pointers ACM Publications (Association for Computing Machinery) ACM SIGOPS Operating Systems Review 43 3 3 13
institution Open Polar
collection ACM Publications (Association for Computing Machinery)
op_collection_id cracm
language English
description Two major efficiency parameters for garbage collectors are the throughput overheads and the pause times that they introduce. Highly responsive systems need to use collectors with as short as possible pause times. Pause times have decreased significantly over the years, especially through the use of concurrent garbage collectors. For modern concurrent collectors, the longest pause is typically created by the need to atomically scan the runtime stack. All practical concurrent collectors that we are aware of must obtain a snapshot of the pointers on each thread's runtime stack, in order to reclaim objects correctly. To further reduce the duration of the collector pauses, incremental stack scans were proposed. However, previous such methods employ locks to stop the mutator from accessing a stack frame while it is being scanned. Thus, these methods introduce potentially long and unpredictable pauses for a mutator thread. In this work we propose the first concurrent, incremental, and lock-free stack scanning mechanism for garbage collectors, that allows high responsiveness and support for programs that employ fine-grain synchronization to avoid locks. Our solution can be employed by all concurrent collectors that we are aware of, it is lock-free, it imposes a negligible overhead on the program execution, and it supports intra-stack references as found in languages like C#.
format Article in Journal/Newspaper
author Kliot, Gabriel
Petrank, Erez
Steensgaard, Bjarne
spellingShingle Kliot, Gabriel
Petrank, Erez
Steensgaard, Bjarne
A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
author_facet Kliot, Gabriel
Petrank, Erez
Steensgaard, Bjarne
author_sort Kliot, Gabriel
title A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
title_short A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
title_full A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
title_fullStr A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
title_full_unstemmed A lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
title_sort lock-free, concurrent, and incremental stack scanning mechanism for garbage collectors
publisher Association for Computing Machinery (ACM)
publishDate 2009
url http://dx.doi.org/10.1145/1618525.1618527
https://dl.acm.org/doi/pdf/10.1145/1618525.1618527
genre The Pointers
genre_facet The Pointers
op_source ACM SIGOPS Operating Systems Review
volume 43, issue 3, page 3-13
ISSN 0163-5980
op_doi https://doi.org/10.1145/1618525.1618527
container_title ACM SIGOPS Operating Systems Review
container_volume 43
container_issue 3
container_start_page 3
op_container_end_page 13
_version_ 1800739340791316480