博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Facebook如何重新设计HHVM JIT编译器的性能
阅读量:6847 次
发布时间:2019-06-26

本文共 837 字,大约阅读时间需要 2 分钟。

2013年夏天,Facebook工程师开始对 JIT编译器进行重大的重新设计,这次重新设计使得Facebook Web服务器CPU的使用率整体降低了15%。Facebook工程师最近了Facebook如何在JIT编译器中利用性能分析引导优化(PGO)技术达到这一效果。

\\

技术主要采用运行时分析,例如,识别出更频繁执行的代码,以改进代码的生成。由于编译器和运行时环境的集成特性,PGO更适合集成到动态编译器和JIT编译器中。

\\

Facebook工程师专注于两个主要的目标:利用性能分析的信息优化编译时作出的决策,以帮助编译器识别更大的专用类型编译区域(即可以为给定的已知类型生成的代码进行优化的区域),从而避免类型检查的开销。为了实现这一点,HHVM JIT编译器必须学习如何转换任意代码区域,而不仅仅是,tracelet是非常基础的可以独立转换成机器代码的专用类型块。Tracelet不会任意增长,因为它的定义是:当无法确定块的输入类型或者当JIT编译器不能确定分支的方向时,tracelet就会结束。

\\

Facebook工程师概括tracelet采取的第一步是,基于性能分析信息将其中的几个组合在一起。通过这样做,可以减少不同tracelet进入和退出的开销,并且实现更高级的cross-tracelet优化,例如提升循环不变式计算到循环外。

\\

a6e529a5d68e0e952876fdbd18ae7b72.png

\\

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

\\

查看英文原文:

\\

感谢对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博(,),微信(微信号:)关注我们。

转载地址:http://jdlul.baihongyu.com/

你可能感兴趣的文章
搭建openstack实战部署
查看>>
cisco ipsec *** 配置
查看>>
coursera专项课程——程序设计与算法简介
查看>>
Open***完美解决公司网络没有固定公网IP的问题
查看>>
配置ASA实现内网、DMZ和外网的访问
查看>>
DHCP的工作原理
查看>>
Linux 的五个重启命令及具体说明
查看>>
rsync linux同步到windows
查看>>
利用Perl检测系统中与系统用户相关的进程
查看>>
Nginx配置为简单的文件服务器
查看>>
电源故障导致的USB接口失效
查看>>
ORACLE查询优化
查看>>
RedHat6.1和CentOS7网络配置
查看>>
谢烟客---------Linux之bash脚本编程---if补充和for循环
查看>>
网站分层架构图解
查看>>
web目录权限设置(待完善)
查看>>
N皇后问题
查看>>
Windows Server 2012 新特性:IPAM的配置
查看>>
Apache Mesos 官方文档 V1.0
查看>>
zend studio 的vim插件,扔掉鼠标
查看>>