APP下载
报价宝  ›  综合  › 

脸书开源大型应用程序加速工具BOLT

报价宝 来源:baojiabao.com 发布时间:2018-06-21 17:31:00 10月14日更新
报价宝综合消息脸书开源大型应用程序加速工具BOLT

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

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

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

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

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

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

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

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

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

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 手机价格 电视机价格 华为手机价格 耳机价格 降噪耳机价格