1、缓存与并行化重新定义算力加速以解决优化Android(AOSP)大型工程构建编译时间目 录CONTENTSAOSP项目构建基本现状IB在AOSP构建时间优化方案实测案例QAAOSP构建环境现状及挑战 构建背景门禁构建次数多,每周构建超过3000次;总构建次数较多,每周构建超过2000次,日均构建376次;个人构建占比多,且选择构建领域多,每周个人构建超过1500次;每周规划出版本10个以上,需要增加工具支撑编译再提效编译耗时问题编译耗时问题大仓编译耗时大仓编译耗时:对于大型代码仓库,编译过程往往需要40分钟以上的时间,不仅降低了开发效率,也影响到项目的交付效率。资源利用不充分资源利用不充分:由
2、于编译任务对资源的需求具有瞬时性且周期较短,往往单机编译时CPU被编译任务占满而无法正常开展开发工作,其余未发起编译的开发人员的工作站同时又有大量空闲资源,造成工作站大部分时间内计算资源未得到充分利用。可行优化建议可行优化建议分布式构建系统分布式构建系统:分布式构建系统不仅可以有效缩短编译时间,还可以通过将编译任务分配至多个工作站并行处理,解放单机性能且提高编译效率。虚拟化技术应用虚拟化技术应用:采用虚拟化技术,可以在不增加物理硬件资源的情况下,动态分配计算能力给需要的应用程序或服务,从而更高效地利用现有资源。资源共享机制资源共享机制:建立内部资源共享平台,使团队成员能够在非高峰时段共享彼此的
3、工作站资源进行大规模编译或其他计算密集型任务。容器化方案容器化方案:考虑使用容器化解决方案来封装开发环境,这样不仅可以简化环境搭建流程,还能更好地控制资源分配,实现更高效的资源利用AOSP构建编译瓶颈1.把编译从16core提升到64核,编译时间会有显著的下降,比如从2小时到50分钟左右;2.在64core基础上继续增加核数,编译时间几乎没有明显减少每一行代表一个CPU core构建主机有96个CPUcoreIncredibuild构建编译加速平台Caching通过重用历史构建结果,大幅减少编译任务数量,提升编译速度Hybrid Dev Acceleration PlatformDistrib
4、ution将编译任务分发至网络中其他主机,实现大规模并行编译,提升编译速度Combine parallelization with cachingBuildCache:编译产物共享a.cppa.hcl.exeHash(MD5)环境变量编译参数A709873HSCNSC7NIndexCD8J73HSJIUHJUYT36OHTKHGHJUOOIEYEINBXNIIEU863936OHTKHGHJUOOI编译结果一致性验证项a.objb.objx.obji.objCache EndPoint编译源文件及依赖文件内容编译器版本编译环境变量编译参数Incredibuild分布式编译On prem笔记本笔
5、记本,云桌面云桌面云服务云服务 实例实例-instanceOn prem 服务器服务器 虚拟机虚拟机,容器容器动态计算资源池 HELPERHELPERHELPER编译主机INITIATORDev processCOORDINATOR1.监听解析构建进程2.定义为可分发的进程,Incredibuild会将其封装,通过网络分发到其他计算机3.使用集群网络其他计算机空闲CPU资源进行处理4.Incredibuild集群变成一台“超级计算机”Helper协助机不需要部署任何代码/编译构建工具基于SharedCache的构建编译时间优化实践(1)”source of truth”定律:限定只有CI构建主
6、机才可将其构建编译产物更新写入Shared Cache;(2)开发从代码主干拉取更新代码后进行编译,通过获取Shared Cache服务器编译产物数据,可大量减少编译任务量,显著缩短编译编译等待时间;CI服务器服务器开发编译主机开发编译主机开发编译主机开发编译主机开发编译主机开发编译主机COORDINATORShared CachePULLContribute/writePULLRead产品代码库产品代码库基于AOSP15/16 Vanelia构建benchmarkAOSP构