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

G. Kliot, E. Petrank, B. Steensgaard
{"title":"A lock-free, concurrent, and incremental stack scanning for garbage collectors","authors":"G. Kliot, E. Petrank, B. Steensgaard","doi":"10.1145/1508293.1508296","DOIUrl":null,"url":null,"abstract":"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 lengths have decreased significantly during 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 length 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 a potential long and unpredictable pauses for a mutator thread. In this work we propose the first concurrent, incremental, and lock-free stack scanning for garbage collectors, allowing high responsiveness and support for programs that employ fine-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 the special in-stack references existing in languages like C#.","PeriodicalId":202844,"journal":{"name":"International Conference on Virtual Execution Environments","volume":"36 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2009-03-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"13","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"International Conference on Virtual Execution Environments","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1508293.1508296","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 13

Abstract

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 lengths have decreased significantly during 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 length 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 a potential long and unpredictable pauses for a mutator thread. In this work we propose the first concurrent, incremental, and lock-free stack scanning for garbage collectors, allowing high responsiveness and support for programs that employ fine-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 the special in-stack references existing in languages like C#.
垃圾收集器的无锁、并发和增量堆栈扫描
垃圾收集器的两个主要效率参数是吞吐量开销和它们引入的暂停时间。高响应系统需要使用暂停时间尽可能短的收集器。近年来,暂停长度显著减少,特别是通过使用并发垃圾收集器。对于现代并发收集器,最长的暂停通常是由于需要自动扫描运行时堆栈而造成的。我们所知道的所有实际的并发收集器都必须获得每个线程运行时堆栈上指针的快照,以便正确回收对象。为了进一步减少收集器暂停的长度,提出了增量堆栈扫描。然而,以前的这种方法使用锁来阻止mutator在扫描堆栈帧时访问堆栈帧。因此,这些方法为mutator线程引入了潜在的长且不可预测的暂停。在这项工作中,我们为垃圾收集器提出了第一个并发、增量和无锁的堆栈扫描,允许高响应性并支持使用精细同步来避免锁的程序。我们的解决方案可以被我们所知道的所有并发收集器所采用,它是无锁的,它对程序执行施加的开销可以忽略不计,并且它支持c#等语言中存在的特殊堆栈内引用。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信