中文

Google 的智能构建目标批处理服务

软件工程 2021-02-19 v1

摘要

Google 拥有一个包含数千万个构建目标的单体代码库。每个构建目标指定了构建软件制品或运行测试所需的信息。在每个版本上执行一部分构建目标并确保变更不会破坏代码库是常见做法。Google 的构建服务系统使用 Bazel 来构建目标。Bazel 以指定执行上下文、标志和待运行构建目标的构建作为输入,输出为构建库、二进制文件或测试结果。为支持开发者的日常活动,该构建服务系统每天运行数百万次构建。已知问题是,包含大量目标的构建可能会耗尽分配的内存或超出其执行截止时间。这会降低开发者生产力(如代码提交或二进制发布),因而存在问题。本文提出一种预测构建内存使用量与执行器占用的技术,该技术对一组目标进行批处理,使得由这些目标创建的构建不会内存耗尽或超出截止时间。该方法显著减少了内存耗尽或超时的构建数量,从而提升了开发者生产力。

关键词

引用

@article{arxiv.2102.09098,
  title  = {Smart Build Targets Batching Service at Google},
  author = {Kaiyuan Wang and Daniel Rall and Greg Tener and Vijay Gullapalli and Xin Huang and Ahmed Gad},
  journal= {arXiv preprint arXiv:2102.09098},
  year   = {2021}
}