一句话:提出 PCRLINEAR,预测 C++ 文件编译所需内存与时间,使分布式构建系统能自适应调度编译资源。
大型企业维护的巨型代码库在单机上构建耗时极长,因此常采用 Bazel、distcc 等工具进行分布式构建。但分布式构建中远程从机常因两类错误崩溃:内存溢出(OOM)与超时(Deadline Exceeded,DE),导致代价高昂的重建,腾讯微信事业群(WXG)即深受其害。为预防这两类错误,论文提出 PCRLINEAR:对给定 C++ 文件预测其编译所需的内存与时间,进而让底层分布式构建系统依据预测结果自适应地调度编译资源。实验表明,PCRLINEAR 将 OOM 与 DE 错误率从 5% 降至 0.2%,同时平均带来约 30% 的构建性能提升。
Development teams in large companies often maintain a huge codebase whose build time can be painfully long in a single machine. To reduce the build time, tools such as Bazel and distcc are used to build the code base in a distributed way. However, in the process of distributed build, certain remote slave machines can crash due to two types of errors: Out Of Memory (OOM) and Deadline Exceeded (DE) errors. These crashes lead to time-consuming rebuilds, as suffered by the WeiXin Group (WXG) of Tencent Inc. (the vendor of WeChat, a highly popular mobile app in China). Aiming to prevent these two types of errors, in this paper, we propose a new approach named PCRLINEAR, which predicts the memory and time requirements of the given C++ file, allowing the underlying distributed build system to schedule compilation resources adaptively according to the prediction results. Our experiments show that PCRLINEAR reduces the number of OOM and DE errors from 5% to 0.2% and, at the same time, achieves substantial build-performance improvement of 30% on average.
@inproceedings{HuWHLJDX23,
title = {Predicting Compilation Resources for Adaptive Build in an Industrial Setting},
author = {Junhao Hu and Chaozheng Wang and Hailiang Huang and Huang Luo and Yu Jin and Yuetang Deng and Tao Xie},
booktitle = {ASE},
year = {2023},
doi = {10.1109/ase56229.2023.00128}
}