写点什么

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

  • 2016-10-18
  • 本文字数:818 字

    阅读完需:约 3 分钟

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

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

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

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

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

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


感谢夏雪对本文的审校。

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

2016-10-18 19:001367
用户头像

发布了 31 篇内容, 共 99597 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

前端也要懂机器学习(下)

执鸢者

机器学习 大前端

HDFS中的常用压缩算法及区别

王知无

大数据 hdfs

架构师训练营第2期 第13周命题作业

月下独酌

架构师训练营第2期

最长公共前缀字符串, RxSwift的概念详细解析, 极客大学认识产品经理 John 易筋 ARTS 打卡 Week 35

John(易筋)

ARTS 打卡计划 最长公共前缀字符串 RxSwift的概念详细解析 极客大学认识产品经理 极客大学产品经理训练营

数字货币合约交易系统软件开发|数字货币合约交易APP开发

系统开发

有道乐读 x AWS | 云上的少儿图书馆!这个寒假让孩子爱上“乐读”

亚马逊云科技 (Amazon Web Services)

云计算 AWS

十三、数据应用二

Geek_28b526

十三周总结

水浴清风

数字货币交易APP系统开发|数字货币交易软件开发

系统开发

构师训练营 - 第十三周课后练习

joshuamai

架构师训练营 week13 课后作业

花果山

架构师课程--第十三周作业

孤星

币币撮合交易系统软件开发|币币撮合交易APP开发

系统开发

敏捷开发需要内外兼修

Bruce Talk

敏捷开发 Agile

Springboot 中的切面AOP处理

武哥聊编程

Java aop springboot SpringBoot 2 28天写作

如何 debug hive 源码,知其然知其所以然

王凯

hive 源码分析

给自己当前岗位所定义的理想岗位模型

邹小胖

自我思考

Flink1.12集成Hive打造自己的批流一体数仓

王知无

大数据 flink

AWS Graviton2 | 匠“芯”定制,性能为王

亚马逊云科技 (Amazon Web Services)

云计算 AWS

【计算机内功修炼】七:高并发高性能服务器是如何实现的

码农的荒岛求生

高并发 事件驱动 高性能 Event Driven 高并发优化

Hbase性能优化百科全书

王知无

大数据 HBase

面试官:Netty的线程模型可不只是主从多Reactor这么简单

中间件兴趣圈

reactor Netty nio 中间件 线程模型

ClickHouse在大数据领域企业级应用实践和探索总结

王知无

大数据 Clickhouse

项目管理系列 (5)-沟通规划

Ian哥

项目管理 沟通与管理 28天写作

第一周-胡赵凯-总结

hisun胡

产品经理训练营

第一周-胡赵凯-作业

hisun胡

产品经理训练营

架构师训练营 week13 学习笔记

花果山

HTML(一)——html相关介绍

程序员的时光

程序员 28天写作

架构师训练营第2期 第13周总结

月下独酌

架构师训练营第2期

软件架构-缓存技术

看山

缓存 架构

在 AWS 的视角下,正确打开零信任安全模型

亚马逊云科技 (Amazon Web Services)

云计算 AWS

Facebook如何重新设计HHVM JIT编译器的性能_PHP_Sergio De Simone_InfoQ精选文章