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

简介:

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

文章转载自 开源中国社区 [http://www.oschina.net]

目录
相关文章
|
SQL 分布式计算 Java
GraalVM在Facebook大量使用,性能提升显著!
GraalVM在Facebook大量使用,性能提升显著!
772 0
GraalVM在Facebook大量使用,性能提升显著!
|
机器学习/深度学习 自然语言处理
480万标记样本:Facebook提出「预微调」,持续提高语言模型性能
近日,Facebook的研究人员提出了一种能够改善训练语言模型性能的方法——预微调,在大约50个分类、摘要、问答和常识推理数据集上进行了480万个标记样本。
175 0
480万标记样本:Facebook提出「预微调」,持续提高语言模型性能
|
存储 区块链
Facebook Libra 性能初探
译自:官方文档翻译 《Libra 技术白皮书》。 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。 Libra 中文网同步翻译 http://www.libra-cn.top/document/info/?id=18 Libra 协议的使命在于至此全球的金融基础设施。
1615 0
|
SQL 关系型数据库 测试技术
三体PCC大赛题目 - facebook\微博 like场景 数据库设计与性能压测
标签 PostgreSQL , pipelinedb , facebook , 微博 , 流式统计 背景 高可用架构的一个PCC大赛,看了一下比赛规则,发现PostgreSQL很适合做这个场景,原样复刻,使用PG实现以及性能表现到底如何? 比赛内容介绍如下 https://github.
3772 0
|
关系型数据库 PHP
facebook工具xhprof的安装与使用-分析php执行性能
下载源码包的网址 http://pecl.php.net/package/xhprof 上面说了,每个版本适用的php版本。 规划(预先搞清楚思路)一、这是一个php扩展的形式。我们安装gd2,curl都是php的扩展形式。
1063 0