写点什么

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

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

关注

评论

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

聚焦OLAP性能提升,火山引擎ByteHouse性能挑战赛圆满落幕

字节跳动数据平台

信创腾飞,必须使用国产芯片系统!

Geek_2305a8

win版Topaz Photo AI(图片降噪软件) v3.0.3特别版下载

iMac小白

Topaz Photo AI下载 Topaz Photo AI破解 Topaz Photo AI特别版

win版iZotope Ozone Advanced (音频制作软件)v11.0.1 直装版

iMac小白

英特尔人工智能创新应用大赛最终奖项揭晓!酷睿Ultra助力选手创意开发

E科讯

win版eM Client Pro(邮件处理软件)v9.2.2258 激活版

iMac小白

eM Client Pro下载 eM Client Pro激活版 eM Client Pro破解版

win版PilotEdit Lite(高级文本编辑器)激活版

iMac小白

PilotEdit下载 PilotEdit激活版 PilotEdit破解版

国内优质堡垒机厂商大揭秘!你知多少!

行云管家

网络安全 数据安全 堡垒机

Win版Adobe Audition 2024 (Au2024)最新直装版下载

iMac小白

Audition 2024 Audition 2024下载 Audition 2024直装版 Audition 2024破解版

Win版Adobe After Effects 2024(Ae2024)直装破解版

iMac小白

After Effects 2024下载 After Effects 2024破解 After Effects 2024直装 AE2024下载

深入解析Apache Flink核心概念:事件流、状态、事件时间和快照

木南曌

实时计算

海外云手机——电商最有效的引流工具

Ogcloud

云手机 海外云手机 云手机海外版 电商云手机 跨境云手机

进一步解读英伟达 Blackwell 架构、NVlink及GB200 超级芯片

GPU算力

深度学习 英伟达 Blackwell GB200

如何优雅的使用ollama| 京东云技术团队

京东科技开发者

OSS_PIPE:Rust编写的大规模文件迁移工具

京东科技开发者

产品经理必备的API技术知识

幂简集成

产品经理 API

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例

Aloudata

数据分析 自动化 IDC 全链路数据血缘 金融数据

一键自动化博客发布工具,用过的人都说好(csdn篇)

程序那些事

工具 程序那些事 自动发布

个人品牌升级攻略:ChatGPT助您塑造独特简历风格

测吧(北京)科技有限公司

测试

盘点信创产业发展与开发者相关的技术

Geek_2305a8

10分钟了解Flink SQL使用

不在线第一只蜗牛

sql 大数据 flink

怎么查询游戏服务器IP?哪些工具可以协助?

一只扑棱蛾子

服务器

外贸网站优化为什么要布置内部链接?如何优化内链?

九凌网络

怪兽AI数字人直播软件

Mr_song

AI 短视频 直播 数字人

Java Chassis 3:接口维度负载均衡

华为云开发者联盟

Java 华为云 华为云开发者联盟 企业号2024年5月PK榜

什么? 20分钟,构建你自己的LLaMA3应用程序| 京东云技术团队

京东科技开发者

电商后台的秘密:通过API接口提取商品信息

Noah

面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!

快乐非自愿限量之名

Java spring 安全

面试题:线程池内“闹情绪”的线程,怎么办?

EquatorCoco

Python 开发语言 window

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