降级构建系统的代价:Kubernetes 项目案例研究
软件工程
2025-10-24 v1
摘要
由于开发人员频繁调用构建系统,其性能可能影响生产力。现代基于工件的构建工具可加速构建,但 prior work 显示,团队可能因更易维护的替代方案而放弃使用它们。虽然 prior work 显示了进行降级的原因,但降级的影响仍基本未被探讨。本文我们描述了 Kubernetes 项目的案例研究,聚焦于其从基于工件的构建工具(Bazel)降级到语言特定解决方案(Go Build)的过程。我们复现并分析了降级期间变更集的完整构建和增量构建。在一方面,我们发现 Bazel 构建速度快于 Go Build,完整构建耗时分别为 23.06-38.66 秒,内存占用为 81.42-351.07 百万字节。Bazel 构建在并行度超过八个时的完整构建以及并行度超过一时的增量构建中还会引起更大的 CPU 负载。我们估计,从 Bazel 降级到 Go Build 可将 CI 资源成本增加最高可达 76%。我们进一步探索了这些观察是否普遍化,通过在四个同样从 Bazel 降级到旧构建工具的项目中复现我们的 Kubernetes 研究。我们观察到尽管构建时间惩罚减少,Bazel 始终占用更多内存。我们得出结论,尽管放弃基于工件的构建工具虽被认为更易维护,但会为大型项目带来可观的性能代价。我们的观察可能有助于利益相关者在构建工具采购中权衡利弊。
关键词
引用
@article{arxiv.2510.20041,
title = {The Cost of Downgrading Build Systems: A Case Study of Kubernetes},
author = {Gareema Ranjan and Mahmoud Alfadel and Gengyi Sun and Shane McIntosh},
journal= {arXiv preprint arXiv:2510.20041},
year = {2025}
}