Skip to main content
QUICK REVIEW

[论文解读] Deoptless: Speculation with Dispatched On-Stack Replacement and Specialized Continuations

Olivier Flückiger, Jan Ječmen|arXiv (Cornell University)|Mar 4, 2022
Parallel Computing and Optimization Techniques参考文献 26被引用 5
一句话总结

本文提出 deoptless,一种即时编译技术,通过使用分派的、专用的连续控制流(continuations)来替代传统的去优化(deoptimization),从而避免推测性优化失败时导致的性能下降。通过根据运行时上下文动态选择优化后的连续控制流,deoptless 实现了从失败推测中更快的恢复,并在真实世界基准测试中相比基线去优化技术实现了高达 35× 的性能提升。

ABSTRACT

Just-in-time compilation provides significant performance improvements for programs written in dynamic languages. These benefits come from the ability of the compiler to speculate about likely cases and generate optimized code for these. Unavoidably, speculations sometimes fail and the optimizations must be reverted. In some pathological cases, this can leave the program stuck with suboptimal code. In this paper we propose deoptless, a technique that replaces deoptimization points with dispatched specialized continuations. The goal of deoptless is to take a step towards providing users with a more transparent performance model in which mysterious slowdowns are less frequent and grave.

研究动机与目标

  • 解决即时编译器中因去优化导致的性能病理问题。
  • 消除在推测性优化失败时回退到较慢执行层级的需要。
  • 为动态语言提供更可预测且高性能的执行模型。
  • 通过使用优化的、上下文相关的连续控制流,而非回退解释器,实现从失败推测中的恢复。
  • 通过在 OSR 点生成针对实际执行上下文的专用代码,提升峰值性能。

提出的方法

  • 用分派的在栈替换(OSR)到专用连续控制流替代去优化,而非回退到基线代码。
  • 在每个 OSR 点维护多个优化后的连续控制流,每个均针对不同的运行时假设进行专门化。
  • 在 OSR 退出点使用上下文分派,根据当前执行状态选择最合适的连续控制流。
  • 保留原始函数及其优化代码以供潜在重用,避免逐步泛化。
  • 利用类型推断和反馈信息覆盖过时的性能数据,指导连续控制流的选择。
  • 限制连续控制流的数量;当达到上限时,deoptless 回退到传统去优化。

实验结果

研究问题

  • RQ1deoptless 是否能消除 JIT 编译器中因去优化导致的性能下降?
  • RQ2deoptless 在推测失败后的恢复速度方面与传统去优化相比如何?
  • RQ3deoptless 是否能通过生成上下文专用的连续控制流来提升峰值性能?
  • RQ4deoptless 对具有动态类型变化的真实工作负载有何影响?
  • RQ5deoptless 如何处理性能数据过时或错误的情况?

主要发现

  • 在假设随机失败的合成基准测试中,deoptless 实现了最高达 9.1× 的执行速度提升,所有基准测试均比基线快至少 1.9×。
  • 在按列求和基准测试中,由于能更快地从去优化中恢复,deoptless 相比基线实现了 35× 的性能提升。
  • 光线追踪基准测试显示,deoptless 有效缓解了因类型变化导致的性能下降,证明了其在真实场景中的有效性。
  • 在 RSA 基准测试中,deoptless 的表现优于基于性能反馈的重新优化技术,达到了其最佳情况下的 1.4× 速度提升。
  • 该技术在处理过时类型反馈方面表现出鲁棒性,并通过上下文感知的连续控制流分派维持了高性能。
  • 所有基准测试在 deoptless 下均未出现性能变慢的情况,表明其在多样化工作负载中实现了持续的性能提升。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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