Smart Build瞄准Google的批处理服务
Smart Build Targets Batching Service at Google
摘要:
Google拥有一个拥有数千万构建目标的整体代码库。每个构建目标指定构建软件工件或运行测试所需的信息。通常在每个修订版执行构建目标的子集,并确保更改不会破坏代码库。Google的构建服务系统使用Bazel来构建目标。Bazel将指定执行上下文、标志和要运行的构建目标的构建作为输入。输出是构建库、二进制文件或测试结果。为了能够支持开发人员的日常活动,构建服务系统每天运行数百万个构建。具有许多目标的构建可能会耗尽分配的内存或超过其执行期限,这是一个已知的问题。这是有问题的,因为它降低了开发人员的生产力,例如代码提交或二进制发布。在本文中,我们提出了一种技术,预测的内存使用和执行器占用的建设。该技术批处理一组目标,以便使用这些目标创建的生成不会耗尽内存或超过其截止日期。这种方法显著减少了内存不足或超过期限的构建数量,从而提高了开发人员的生产力。
英文摘要:
Google has a monolithic codebase with tens of millions build targets. Each build target specifies the information that is needed to build a software artifact or run tests. It is common to execute a subset of build targets at each revision and make sure that the change does not break the codebase. Google's build service system uses Bazel to build targets. Bazel takes as input a build that specifies the execution context, flags and build targets to run. The outputs are the build libraries, binaries or test results. To be able to support developer's daily activities, the build service system runs millions of builds per day. It is a known issue that a build with many targets could run out of the allocated memory or exceed its execution deadline. This is problematic because it reduces the developer's productivity, e.g. code submissions or binary releases. In this paper, we propose a technique that predicts the memory usage and executor occupancy of a build. The technique batches a set of targets such that the build created with those targets does not run out of memory or exceed its deadline. This approach significantly reduces the number of builds that run out of memory or exceed the deadlines, hence improving developer's productivity.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。