开源公告|C++分布式编译系统yadcc开源了

yadcc是腾讯广告后台广泛使用的C++分布式编译系统,现对外开源。它解决了用户众多、编译集群管理、网络波动等问题,通过中心调度节点和本地守护进程优化编译效率和并发控制。系统包括调度器、编译缓存和守护进程,支持多版本编译器并避免不必要的重复编译。项目已在GitHub和腾讯工蜂开源。
摘要由CSDN通过智能技术生成

框架介绍

yadcc是广泛投产于腾讯广告后台的C++分布式编译系统。

我们在调研学习了业界的ccache、sccache、distcc、icecc等开源的编译加速系统之后,根据我们实际的工业生产场景,设计了这样一套系统。

目前我们实际生产环境:

- 有~1700编译核心;

- 使用512并发编译(实际并发度取决于本地预处理能力,32逻辑核以上可达到512并发);

- 每天编译产出(含命中分布式缓存)300,0000+个目标文件;

- 每天编译产出总计约3~5TB。

本着回馈社区的目的,我们现将这套分布式编译系统对外开源。

基本原理

与ccache、sccache、distcc、icecc等类似,可通过创建名为g++等的符号链接至yadcc的客户端,并将之加入PATH,来截获编译器调用。之后yadcc的客户端会将任务分发出去至编译机编译,降低本地负载。

也因此,通常而言,使用分布式编译可以加大本地并发度(因为单个任务很多时候是在休眠等待网络上的编译结果返回),实现更高的编译吞吐。例如8逻辑核的机器通常可以通过make -j100来加速编译。

需要注意的是,分布式编译通常只能提高吞吐,但是不能降低单个文件的编译耗时(暂不考虑命中缓存的情况)。对于无法并发编译的工程,除非命中缓存,否则分布式编译通常不能加快编译,反而可能有负面效果。

主要特点

我们首先分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值