中文

无锁数据结构免快照、透明且鲁棒的内存回收

分布式、并行与集群计算 2021-05-04 v2

摘要

我们提出一类安全内存回收方案Hyaline,其快速、可扩展且对底层无锁数据结构透明。Hyaline基于引用计数——过去因高开销被认为不适用于内存回收。Hyaline仅在回收时使用引用计数器,而在访问单个对象时不使用,从而降低了对象访问的开销。由于借助引用计数器时由任意线程最终释放内存,Hyaline的回收工作负载在所有线程间(几乎)均衡,这与多数既有回收方案(如基于纪元的回收(EBR)或危险指针(HP))不同。Hyaline常能取得(优异的)EBR级性能与(良好的)HP级内存效率,而这是所有现有方案都难以兼顾的权衡。Hyaline方案具备:(i) 高性能;(ii) 良好内存效率;(iii) 鲁棒性:即便存在停滞线程也能限制内存用量,这是EBR众所周知的难题;(iv) 透明性:支持几乎无界数量、可动态创建删除并轻松加入既有工作负载的线程(或并发实体);(v) 自主性:避免特殊操作系统机制且对非运行时或编译器环境无侵入;(vi) 简洁性:便于集成到非托管C/C++代码中;(vii) 通用性:支持多种数据结构。所有现有方案均缺失上述一项或多项特性。我们已在x86(-64)、ARM32/64、PowerPC与MIPS上实现并测试Hyaline。通用方案需LL/SC或双宽度CAS,而专用版本亦兼容单宽度CAS。我们的评估显示Hyaline吞吐量极高——在某测试中稳定超越EBR达10%,在超额订阅场景下取得2倍提升。Hyaline优越的内存效率在读主导工作负载中尤为明显。

关键词

引用

@article{arxiv.1905.07903,
  title  = {Snapshot-Free, Transparent, and Robust Memory Reclamation for Lock-Free Data Structures},
  author = {Ruslan Nikolaev and Binoy Ravindran},
  journal= {arXiv preprint arXiv:1905.07903},
  year   = {2021}
}

备注

An extended version of the PLDI'21 paper (with Appendix)