Skip to main content
QUICK REVIEW

[论文解读] A new and five older Concurrent Memory Reclamation Schemes in Comparison (Stamp-it)

Manuel Pöter, Jesper Larsson Träff|arXiv (Cornell University)|Dec 17, 2017
Distributed systems and fault tolerance参考文献 25被引用 3
一句话总结

本文提出Stamp-it,一种新颖的无锁、均摊常数时间内存回收机制,避免了像以往方案一样扫描所有线程以判断节点是否可回收。在最多512个线程的四种架构上进行评估,Stamp-it在内存回收效率和运行时性能方面优于五种成熟方案(包括Hazard Pointers、基于纪元的回收机制和引用计数),尤其在高并发场景下表现更优。

ABSTRACT

Memory management is a critical component in almost all shared-memory, concurrent data structures and algorithms, consisting in the efficient allocation and the subsequent reclamation of shared memory resources. This paper contributes a new, lock-free, amortized constant-time memory reclamation scheme called \emph{Stamp-it}, and compares it to five well-known, selectively efficient schemes from the literature, namely Lock-free Reference Counting, Hazard Pointers, Quiescent State-based Reclamation, Epoch-based Reclamation, and New Epoch-based Reclamation. An extensive, experimental evaluation with both new and commonly used benchmarks is provided, on four different shared-memory systems with hardware supported thread counts ranging from 48 to 512, showing Stamp-it to be competitive with and in many cases and aspects outperforming other schemes.

研究动机与目标

  • 解决因扫描所有线程以检测可回收节点而引起的并发内存回收性能瓶颈。
  • 设计一种通用、非侵入式、可移植且符合标准的内存回收机制,兼容C++和现代硬件。
  • 在不同工作负载和架构下,将Stamp-it与五种知名方案进行对比评估,以确立其在可扩展性和效率方面的优势。
  • 降低内存压力并改善回收延迟,特别是在拥有大量线程的高并发场景中。
  • 提供所有方案的生产就绪、开源实现,以确保可复现性及真实世界应用。

提出的方法

  • 提出一种新型回收机制Stamp-it,利用全局‘戳记’值追踪线程活动,并在无需扫描所有线程的情况下检测节点是否可安全回收。
  • 采用每线程本地的退役列表和全局退役列表,仅当全局戳记表明无活跃引用时才触发回收。
  • 使用硬件支持的原子操作(CAS、FAA)确保无锁进展和线程安全,避免使用非标准指令。
  • 在回收过程中引入重启机制:若回收过程中全局戳记发生变化,则以新戳记重启回收过程,以避免竞争条件。
  • 设计线程本地数据结构,仅在必要时将节点引用退役至全局列表,从而最小化竞争。
  • 采用标准化C++接口(如Robison [29] 所提议),以确保在不同数据结构间的可移植性和非侵入性。

实验结果

研究问题

  • RQ1能否设计一种内存回收机制,在无需扫描所有线程的情况下实现均摊常数时间的回收?
  • RQ2在高并发环境下,Stamp-it与成熟方案(如Hazard Pointers、基于纪元的回收)相比,在回收效率和运行时间方面表现如何?
  • RQ3线程数量(最多512个)对不同架构下回收性能和内存压力的影响如何?
  • RQ4与其它方案相比,Stamp-it如何处理‘最后一个线程’问题——即无线程可回收剩余的退役节点?
  • RQ5一种通用的、非引用计数的回收机制能否在避免其内存开销的同时,达到或超越引用计数的性能?

主要发现

  • Stamp-it在无需扫描所有线程的情况下实现了每节点均摊常数时间的回收,与除引用计数外的所有其他方案不同。
  • 在Sparc上的HashMap基准测试中,Stamp-it和LFRC的运行时间随测试轮次递减,而HP、ER、NER和QSR的运行时间因未收集的内存压力而递增。
  • 在所有架构上,Stamp-it在回收效率方面均优于HP、ER、NER和QSR,且随时间推移未回收节点数量显著更少。
  • HP、ER、NER和QSR的未回收节点数量持续稳步增长,即使所有线程终止后也未能降至零,表明存在持续的内存压力。
  • Stamp-it通过轻量级基于戳记的重启机制缓解了‘最后一个线程’的竞争条件,减少了内存泄漏并改善了最终回收效果。
  • 在拥有48至512个硬件线程的系统上,Stamp-it在性能和内存效率方面始终优于或匹配所有其他方案,尤其在高线程数量下表现更优。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。