Facebook如何重新设计HHVM JIT编译器的性能

2013年夏天,Facebook工程师开始对HHVM JIT编译器进行重大的重新设计,这次重新设计使得Facebook Web服务器CPU的使用率整体降低了15%。Facebook工程师Guilherme Ottoni最近描述了Facebook如何在JIT编译器中利用性能分析引导优化(PGO)技术达到这一效果。

\u0026#xD;\u0026#xD;

性能分析引导优化技术主要采用运行时分析,例如,识别出更频繁执行的代码,以改进代码的生成。由于编译器和运行时环境的集成特性,PGO更适合集成到动态编译器和JIT编译器中。

\u0026#xD;\u0026#xD;

Facebook工程师专注于两个主要的目标:利用性能分析的信息优化编译时作出的决策,以帮助编译器识别更大的专用类型编译区域(即可以为给定的已知类型生成的代码进行优化的区域),从而避免类型检查的开销。为了实现这一点,HHVM JIT编译器必须学习如何转换任意代码区域,而不仅仅是tracelet,tracelet是非常基础的可以独立转换成机器代码的专用类型块。Tracelet不会任意增长,因为它的定义是:当无法确定块的输入类型或者当JIT编译器不能确定分支的方向时,tracelet就会结束。

\u0026#xD;\u0026#xD;

Facebook工程师概括tracelet采取的第一步是,基于性能分析信息将其中的几个组合在一起。通过这样做,可以减少不同tracelet进入和退出的开销,并且实现更高级的cross-tracelet优化,例如提升循环不变式计算到循环外。

\u0026#xD;\u0026#xD;

a6e529a5d68e0e952876fdbd18ae7b72.png\"

\u0026#xD;\u0026#xD;

在基本的tracelet外构建更大的区域具有不违反现有JIT优化器和后端中任何假设的优点,这些假设是紧密围绕这一概念设计的。在第二个阶段,Facebook工程师开始重新设计这些组件,以便能够处理具有任意控制流的区域。这一努力在2015年春天完成了,通过将CPU使用率降低15%,显著提高了JIT编译器的性能,相比第一阶段的改进提升了两倍。

\u0026#xD;\u0026#xD;

查看英文原文:How Facebook Redesigned the HHVM JIT Compiler for Performance

\u0026#xD;\u0026#xD;

感谢夏雪对本文的审校。

\u0026#xD;

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2名名名名名名名名名名名名名名名名名名名

谢谢啊011702

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值