脸书开源大型应用程序加速工具B白领T
2018-06-21 17:10:02 | 来源:ithome | 投稿:小艾 | 编辑:dations

原标题:脸书开源大型应用程序加速工具B白领T

脸书开源内部用来加速大型应用程序的工具B白领T,由于提供复杂服务的应用程序,相对来说档案容量就比较大,即便只编译一种服务的机器语言,大小也可能介于10到100MB间,难以放入CPU指令快取中,硬件需要花费额外的时间处理,而脸书的程式最佳化工具B白领T借由改进代码布局,来加速程式载入效率。

由于脸书提供广泛的服务,即便只编译一种服务的机器语言,都会因容量太大而难以放进现代CPU指令快取,脸书研究,发现他们的应用程序,从记忆体获取指令串流载进CPU的时间,需要多花30%的时间。

这个被称为指令饥饿(Instruction△Starvation)的问题,过去通常都以特性指引最佳化(Profile-guided△Optimizations,PGO)来解决,最佳化输出的档案能让硬件更轻易的高效使用快取架构,也能提供工程师手动标注进行配置的弹性。由于撰写程式码的人,最了解哪一区块的程式码最常被执行,由工程师进行手动标记可以获得很好的效果,但是这种方法却缺乏可扩展性,而且程式码的行为也可能随着时间改变。

在某些情况下,难以判断程式码的优先顺序,也很难分辨哪些程式码被执行的次数较多。而应对这问题,一般的解决办法都是先使用PGO典型负载执行应用程序,借由收集程式执行过程的资料,再将结果回馈到重新编译的程式中。而当整个应用程序都使用PGO最佳化,编译器能读取所有的程式码,便能从更全面的角度改进程式输出布局,并允许编译器在应用最佳化时做出更好的决策。

但PGO除了上述有扩展的限制外,只要没有原始码,PGO就无用武之地,编译器没办法对组合语言或是第三方函式库进行最佳化,而且也很难在编译时取得或是应用配置档案。脸书提到,AutoFDO是一个反馈最佳化来简化真实世界部署的系统,或许能够解决脸书遇到的问题,但是由于HHVM在脸书被大量使用,而AutoFDO刚好不适合处理大量使用HHVM中的C++例外机制。

脸书并没有修改AutoFDO来符合自家需求,而是重新建构了B白领T,他们认为,脸书需要一个灵活的工具,可以与任何先进编译器运作良好,不只与所有编译器产生的代码都能相容,也能混合来自不同编译器的输出。另外,这个工具还必须要能够支援没有原始码的组件,像是厂商提供的函式库,最后,这个最佳化系统需要能够支援手动编写的组合语言程式,以最佳化布局。

为了让B白领T可以为应用程序执行新的代码布局,B白领T必须重构程式码的控制流程图,这个任务类似反编译,但是只需要找到像是原始码与目标的分支与回圈等高阶结构,并不需要执行区域变数侦测等其他反编译的工作。应用程序最后会被表示为一组函式运行一组资料的结构。

B白领T的输入要求很低,脸书的目标是要支援Linux二元档,他们从x86-64指令集开始,并增加支援AArch64,未来也还计划扩展到其他架构上。最初HHVM被B白领T加速后,其效能比编译器最佳化的结果提高3%,还能借由连结期函式布局工具HFSort最佳化。经过一系列的改进与调整,目前HHVM在许多情况下能够加速8%,整体来说,不同的CPU架构造成不同的结果,提升2%到15%的执行效能。

现在脸书将B白领T在GitHub上开源,开发者在解决遇到大量指令快取,或是转译后备缓冲区失误的问题,B白领T可以提供有效的帮助。

tags:

上一篇  下一篇

相关:

Mozilla开源基于浏览器开发框架A

Mozilla在混合实境上进行了不少实验性的专案计划,探索各种可能性,而今在GitHub上开源了A-Terrain,这是一个在浏览器3D开发框架A-Frame上使用的高自由度网页制图组件,其特性除了可以应用真实世界的地理资料集,绘制

开源云端开发平台Pulumi释出,主打多语言、多云端的开发体验

Pulumi创办人Joe△Duffy在博客宣布,其多开发语言与多云端环境的开源云端开发平台Pulumi正式上线,开发者可以在Pulumi上使用自己习惯的语言撰写云端运算程式,甚至还能不使用模板语言基础架构,Joe△Duffy提到,使用

容器资安工具Sysdig Secure 2.0登场,加强漏洞、法遵管理

图片来源: Sysdig 主要锁定容器安全市场的Sysdig,现在该公司旗下的容器资安产品Sysdig△Secure已经释出2.0版,这次产品更新除加强漏洞管理、资安分析外,也强化了资安法遵检查功能。Sysdig表示,在该平台1.0版是以监

Visual Studio 2017容器工具包支援Azure Service Fabric,容器环境内直接进行除错

微软在今年度开发者大会Build上,更新Visual△Studio△2017至15.7版本,强化除错以及诊断能力,同时该公司也释出Visual△Studio△2017 15.8预览版,开始在ASP.NET△Core中支援Docker。而在Visual△Studio△2017 15.7

容器映像档扫描工具Aqua MicroScanner整合Jenkins,让映像档建置前先通过漏洞扫描

图片来源: Aqua 日前容器资安新创Aqua释出了一款免费的映像档扫描工具MicroScanner,相比付费版本,MicroScanner的应用情境较为阳春,仅能在Dockerfile执行建置阶段时进行扫描工作。而在近日,Aqua也补强此款漏洞扫描

站长推荐: