写点什么

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

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

关注

评论

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

AI简报-逆光也清晰-色彩增强算法CURL

AIWeker

人工智能 深度学习 5月月更 AI简报

模块六:拆分电商系统为微服务

jiaoxn

「架构实战营」

架构实战营 - 模块六 - 作业

michael

架构实战营 #架构实战营 架构师实战营 「架构实战营」

Kafka 万亿级消息实践之资源组流量掉零故障排查分析

vivo互联网技术

大数据 kafka 监控

绿色环保作为经济长线主题,MOVE PROTOCOL运动APP来助力

股市老人

M_6: 拆分电商系统为微服务

Jadedev

架构训练营

位运算小妙招-求二进制序列中0的个数

芒果酱

数据结构 算法 5月月更

Linux环境封装静态库

Loken

音视频 5月月更

ResNet实战:单机多卡DDP方式、混合精度训练

AI浩

Go 依赖注入 Wire 详解 - 用户指南

baiyutang

Go 微服务 依赖注入 5月月更

架构学习(二)

爱晒太阳的大白

5月月更

Hyperspace索引系统论文解析

漫长的白日梦

spark 数据湖 索引系统

用IntelliJ IDEA ULTIMATE版看Java类图

程序员欣宸

Java IDEA 5月月更

HashMap 源码分析-基础结构

zarmnosaj

5月月更

今天要学习的技术点,Python 筛选数字,模块导入,特殊变量__all__ 实战博客

梦想橡皮擦

5月月更

flask框架的学习笔记【二】

恒山其若陋兮

5月月更

代码之外:谈谈算法该怎么准备,不准备可以吗

宇宙之一粟

算法面试 代码之外 5月月更

STM32F103系列开发_点亮LED灯

DS小龙哥

5月月更

HashMap 源码分析-新增

zarmnosaj

5月月更

VIT实战总结:非常简单的VIT入门教程,一定不要错过

AI浩

SWA实战:使用SWA进行微调,提高模型的泛化

AI浩

架构模块六

小马

「架构实战营」

运动健康深入人心,MOVE PROTOCOL引领品质生活

BlockChain先知

模块六作业: 拆分电商系统为微服务

凯博无线

OKALEIDO解决NFT流动性不足难题,更有创新平台通证分配方案

股市老人

跨平台应用开发进阶(十三) :uni-app应用异常退出时处理机制探究

No Silver Bullet

uni-app 5月月更 异常退出 处理机制

MobileVIT实战:使用MobileVIT实现图像分类

AI浩

Swin Transformer实战: timm使用、Mixup、Cutout和评分一网打尽,图像分类任务

AI浩

拆分电商系统为微服务

dan629xy

中国信通院发布“可信开源”全景观察 成立三大开源产业组织

中国IDC圈

开源 开源治理

还在为模型加速推理发愁吗?不如看看这篇吧。手把手教你把pytorch模型转化为TensorRT,加速推理

AI浩

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