写点什么

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:001733
用户头像

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

关注

评论

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

科创人·味多美CIO胡博:数字化是不流血的革命,正确答案藏在业务的田间地头

科创人

Java—Servlet

武师叔

6月月更

Bytebase加入阿里云PolarDB开源数据库社区

阿里云数据库开源

阿里云 开源数据库 polarDB PolarDB-X 阿里云数据库

解密安卓微信聊天信息存储

ooooooh灰灰

Go sqlite 微信 后端 SqlCipher

NFT质押流动性挖矿系统开发技术

薇電13242772558

NFT 流动性挖矿

leetcode 139. Word Break 单词拆分(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

传统的IO存在什么问题?为什么引入零拷贝的?

源字节1号

实时渲染:实时、离线、云渲染、混合渲染的区别

Finovy Cloud

渲染 云渲染

特尔携手微软发挥边云协同势能,推动AI规模化部署

科技之家

共享自助洗车24小时不打烊受青睐

共享电单车厂家

共享自助洗车 自助洗车 自助洗车加盟

CentOS中实现基于Docker部署BI数据分析

葡萄城技术团队

Docker centos BI 分析工具

效率提升 100%,YRCloudFile 让自动驾驶安全更有保障

焱融科技

人工智能 自动驾驶 大数据 数据存储

NFT双币质押流动性挖矿系统开发

开发微hkkf5566

如何实现一套容器(C 语言版)2

祖维

c 容器 泛型 迭代器 双向链表

无界共创,明道云参与广汽本田IT新技术展

明道云

超大规模AI异构计算集群的设计和优化

Baidu AICLOUD

大模型训练 异构计算

全链路业务追踪落地实践方案

云智慧AIOps社区

运维 AIOPS 解决方案 全链路追踪

车白兔:自助共享洗车机哪家好

共享电单车厂家

自助洗车机 自助洗车加盟 车白兔自助洗车

红象云腾完成与龙蜥操作系统兼容适配,产品运行稳定

OpenAnolis小助手

开源 龙蜥社区 龙蜥操作系统 红象云腾 兼容适配

全上链哈希游戏dapp系统定制(方案设计)

开发微hkkf5566

制造业项目MDM主数据项目实施心得

agileai

数据治理 数据集成 企业服务总线 项目实施 制造业项目

【计算讲谈社】第三讲:如何提出关键问题?

大咖说

逻辑学 辩证思维 关键问题

虚拟化是什么意思?包含哪些技术?与私有云有什么区别?

行云管家

云计算 运维 虚拟化 IT运维

等保备案是等保测评吗?两者是什么关系?

行云管家

备案 等保 等级保护 等保备案 等级测评

模块五

Geek_2ce415

【6.16-6.24】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

共享洗车机多少钱一台?看品牌

共享电单车厂家

自助洗车机价格 自助洗车加盟 共享洗车机多少钱

左手代码,右手开源,开源路上的一份子

开源社

开源

Vue项目的创建和托管

Python研究所

6月月更

图像搜索应用场景(个人见解,欢迎补充)

Geek_e369a5

什么是图像搜索 图像搜索的应用场景 拍照购物用图像搜索的作用

共享智能自助洗车现在市场如何

共享电单车厂家

自助洗车加盟 自助洗车市场 共享智能自助洗车

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