中文

提炼生产级垃圾回收器的真实代价

性能 2022-07-05 v2 编程语言

摘要

删节版摘要:尽管垃圾回收(GC)历史悠久且在现代编程语言中普遍存在,但其真实代价却出奇地缺乏清晰认知。若不理解其代价,垃圾回收器(GC)所做出的关键权衡便会被忽视。这会导致 GC 研究者和用户采用被误导的设计约束与评估标准,阻碍高性能、低代价 GC 的发展。在本文中,我们开发了一种方法,能够对任意给定指标集合实证估计 GC 的代价。通过提炼出可显式辨识的 GC 代价,我们使用不同 GC 来估计应用的内在执行代价。提炼出的最小代价构成一个基线。从总执行代价中减去该基线,我们便可对不同 GC 的绝对代价给出实证下界。利用此方法,我们研究了 OpenJDK 17(一个高性能 Java 运行时)中的五种生产级 GC。我们度量了这些回收器的代价,并揭示了它们各自的关键性能权衡。我们发现,在中等大小堆的情况下,生产级 GC 在一套多样化的现代基准测试中产生显著开销,相对于基线代价多花费至少 7–82% 的挂钟时间和 6–92% 的 CPU 周期。我们表明这些代价可被并发性以及充裕的内存/计算资源供给所掩盖。此外,我们发现较新的低暂停 GC 比旧式 GC 显著更昂贵,且令人惊讶的是,有时比 stop-the-world GC 提供更高的应用延迟。我们的发现重申 GC 远非已解决的问题,且低代价、低延迟的 GC 仍遥不可及。我们建议在未来 GC 评估中采用该提炼方法并辅以更广泛的代价指标。

关键词

引用

@article{arxiv.2112.07880,
  title  = {Distilling the Real Cost of Production Garbage Collectors},
  author = {Zixian Cai and Stephen M. Blackburn and Michael D. Bond and Martin Maas},
  journal= {arXiv preprint arXiv:2112.07880},
  year   = {2022}
}

备注

Camera-ready version