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.
[1]
Léon Bottou,et al.
Large-Scale Machine Learning with Stochastic Gradient Descent
,
2010,
COMPSTAT.
[2]
Brian C. Ross.
Mutual Information between Discrete and Continuous Data Sets
,
2014,
PloS one.
[3]
GhemawatSanjay,et al.
The Google file system
,
2003
.
[4]
Kaiyuan Wang,et al.
Scalable build service system with smart scheduling service
,
2020,
ISSTA.
[5]
A. Kraskov,et al.
Estimating mutual information.
,
2003,
Physical review. E, Statistical, nonlinear, and soft matter physics.
[6]
Chen Lei,et al.
Automated Machine Learning
,
2021,
Cognitive Intelligence and Robotics.
[7]
John Micco,et al.
Taming Google-Scale Continuous Testing
,
2017,
2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).
[8]
Andrew Glover,et al.
Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series)
,
2007
.
[9]
J. Brian Gray,et al.
Introduction to Linear Regression Analysis
,
2002,
Technometrics.
[10]
Craig Chambers,et al.
FlumeJava: easy, efficient data-parallel pipelines
,
2010,
PLDI '10.