Since developers invoke the build system frequently, its performance can impact productivity. Modern artifact-based build tools accelerate builds, yet prior work shows that teams may abandon them for alternatives that are easier to maintain. While prior work shows why downgrades are performed, the implications of downgrades remain largely unexplored. In this paper, we describe a case study of the Kubernetes project, focusing on its downgrade from an artifact-based build tool (Bazel) to a language-specific solution (Go Build). We reproduce and analyze the full and incremental builds of change sets during the downgrade period. On the one hand, we find that Bazel builds are faster than Go Build, completing full builds in 23.06-38.66 up to 75.19 impose a larger memory footprint than Go Build of 81.42-351.07 respectively. Bazel builds also impose a greater CPU load at parallelism settings above eight for full builds and above one for incremental builds. We estimate that downgrading from Bazel can increase CI resource costs by up to 76 explore whether our observations generalize by replicating our Kubernetes study on four other projects that also downgraded from Bazel to older build tools. We observe that while build time penalties decrease, Bazel consistently consumes more memory. We conclude that abandoning artifact-based build tools, despite perceived maintainability benefits, tends to incur considerable performance costs for large projects. Our observations may help stakeholders to balance trade-offs in build tool adoption


翻译:由于开发者频繁调用构建系统,其性能可能影响开发效率。现代基于产物的构建工具能加速构建过程,然而已有研究表明开发团队可能因其维护复杂度而转向更易维护的替代方案。尽管现有研究揭示了降级行为的原因,但降级带来的影响仍未被充分探索。本文以Kubernetes项目为案例,重点研究其从基于产物的构建工具(Bazel)降级至语言特定解决方案(Go Build)的过程。我们复现并分析了降级期间变更集的全量构建与增量构建。研究发现:一方面,Bazel构建速度优于Go Build,全量构建耗时23.06-38.66分钟,而Go Build需75.19分钟;增量构建中Bazel耗时0.18-0.26分钟,Go Build需0.50-0.61分钟。另一方面,Bazel构建会占用更大内存空间,全量构建内存占用为81.42-351.07GB,而Go Build仅需0.22-0.24GB;增量构建中Bazel内存占用为0.25-0.28GB,Go Build仅需0.01GB。当并行度设置超过8线程(全量构建)或1线程(增量构建)时,Bazel还会产生更高的CPU负载。我们估算从Bazel降级可能导致CI资源成本增加最高达76%。为验证研究结论的普适性,我们对另外四个同样从Bazel降级至旧版构建工具的项目进行了复现研究。结果显示:虽然构建时间惩罚有所降低,但Bazel始终消耗更多内存资源。结论表明:放弃基于产物的构建工具虽能获得可感知的维护性收益,但往往会给大型项目带来显著的性能代价。本研究结果可帮助相关方在构建工具选型中权衡利弊。

0
下载
关闭预览

相关内容

Kubernetes 是一个自动化部署,扩展,以及容器化管理应用程序的开源系统。
FlowQA: Grasping Flow in History for Conversational Machine Comprehension
专知会员服务
34+阅读 · 2019年10月18日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
163+阅读 · 2019年10月12日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
STRCF for Visual Object Tracking
统计学习与视觉计算组
15+阅读 · 2018年5月29日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
12+阅读 · 2018年3月15日
IJCAI | Cascade Dynamics Modeling with Attention-based RNN
KingsGarden
13+阅读 · 2017年7月16日
国家自然科学基金
13+阅读 · 2017年12月31日
国家自然科学基金
17+阅读 · 2017年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
VIP会员
相关资讯
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
STRCF for Visual Object Tracking
统计学习与视觉计算组
15+阅读 · 2018年5月29日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
12+阅读 · 2018年3月15日
IJCAI | Cascade Dynamics Modeling with Attention-based RNN
KingsGarden
13+阅读 · 2017年7月16日
相关基金
国家自然科学基金
13+阅读 · 2017年12月31日
国家自然科学基金
17+阅读 · 2017年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
Top
微信扫码咨询专知VIP会员