写点什么

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

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

关注

评论

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

腾讯云携手信通院启动“云原生开源白皮书”编写,深度解读云原生

CODING DevOps

腾讯云 DevOps 云原生

5W1H聊开源之What——开源是什么?

禅道项目管理

开源 软件 开发

华云大咖说 | 安超OS全面升级 最新亮点解密

华云数据

Tapdata 数据库实时同步的技术要点

tapdata

数据库迁移 数据同步 实时数据分析

记一次K8s排错实战

雪雷

k8s 6月日更

Dubbo 线程池模型

青年IT男

dubbo

傲腾持久内存如何为数据赋能,加速应用落地?

白玉兰开源

人工智能 英特尔 傲腾

python——使用input()函数

在即

6月日更

WebSocket 对象简介

编程三昧

大前端 websocket

MySQL 基础之一:基本命令使用

打工人!

MySQL 6月日更

网络攻防学习笔记 Day34

穿过生命散发芬芳

网络攻防 6月日更

《开源 PassJava》1、项目介绍

悟空聊架构

开源 面试 刷题 spring cloud alibaba 6月日更

如履薄冰--亚马逊直运系统重构实录

蔡超

软件架构 软件重构 软件自动化测试

Redis--哈希冲突

是老郭啊

redis hash

🐬【MySQL技术导航】带你认识一下数据库的锁

洛神灬殇

MySQL MySQL锁 6月日更

5分钟速读之Rust权威指南(十六)

wzx

rust

react源码解析5.jsx&核心api

全栈潇晨

React React Hooks

Golang Testing 概览 - 基本篇

hedzr

Unit Test testing Go 语言

超超超超级详细的多边形游戏问题分析(动态规划)

若尘

算法 动态规划 6月日更

“openEuler未来发展” 采访熊伟博士

容光

操作系统

ARTS--week 10 补打卡

steve_lee

资产信息化、数字化和通证化—— 理解区块链世界新经济的优势

CECBC

区块链在数据管理中有哪些价值?

CECBC

权限与认证:JWT

程序员架构进阶

Token JWT 认证授权 28天写作 6月日更

最近打算重新写一遍爬虫“指北”

IT蜗壳-Tango

IT蜗壳教学 6月日更

研发自动化,你准备好了么?

PingCode研发中心

研发管理 研发效能 研发工具 研发团队

区块链:可持续发展的世界的有效工具?

CECBC

速度,力度,广度:金融数智化中的华为“寻道”

脑极体

PMP-项目管理标准

索隆

pmp 6月日更

【Vue2.x 源码学习】第三篇 - 对象的单层劫持

Brave

源码 vue2 6月日更

【通俗易懂】JWT-使用的可能正确姿势

蛋先生DX

JWT 6月日更

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