Distcc –同时在多台计算机上分发构建版本(2006)

2021-01-02 08:16:43

在我看来,速度提供了一种真正的现代乐趣。 — Aldous Huxley distcc是一个程序,用于在网络上的多台计算机上分发C,C ++,Objective C或Objective C ++代码的构建。 distcc应该始终生成与本地版本相同的结果,易于安装和使用,并且通常比本地编译要快得多。 distcc不需要所有机器共享一个文件系统,同步时钟或安装相同的库或头文件。如果安装了交叉编译器,它们甚至可以具有不同的处理器或操作系统。只是想让您说一句,我们现在正在使用distcc,它非常好。我们有一架用于执行计算任务的opteron机器,现在我们将它们用作编译场来编译〜1MLOC C ++树(如果更改某些头文件,则可能需要一个小时在单个CPU上进行重新编译)。我们尝试使用Sun的网格引擎来执行此操作(我们已经使用它来调度我们的计算作业),但是将其轮询操作和NFS开销结合起来并没有带来什么改善(并且极大地增加了我们的网络压力)。随着distcc编译时间的减少,我的工作效率大大提高了;对我来说,两个最好的功能是对网络的影响小且简单。

对于每台机器,下载distcc解压缩,然后执行./configure&&制作&& sudo make install在每个服务器上,运行distccd --daemon和--allow选项以限制访问。将服务器的名称放入您的环境中:export DISTCC_POTENTIAL_HOSTS =' localhost红色绿色蓝色'建立!将构建命令包装在" pump"中。脚本并使用" distcc"作为您的C编译器:cd〜/ work / myproject;泵品牌-j8 CC = distcc

有关更详细的安装说明,请参阅INSTALL文件。 distcc是在GNU / Linux上开发的,但据报道可在其他系统上工作,包括FreeBSD,NetBSD,Darwin,Solaris,HP-UX,IRIX,Cygwin和BSD / OS。 distcc为每个作业通过网络发送完整的预处理源代码,因此,志愿机器所需要的只是它们正在运行distccd守护程序,并且已安装了适当的编译器。 distcc本身不是编译器,而是GNU C / C ++编译器(gcc)和LLVM编译器(clang)的前端。 (对其他一些编译器有初步支持,但主要关注点是gcc。)几乎所有gcc选项和功能都可以正常工作。 distcc设计为与GNU Make或SCons中的-j并行构建功能一起使用,或与其他构建工具一起使用。通过网络传送文件需要时间,但是在客户端计算机上的循环很少。基本上可以免费构建的任何可以远程构建的文件。在客户端CPU方面。 distcc自2002年初开始开发。它可靠且成功地编译了大型,复杂的自由和专有软件系统。已知可以使用distcc正确构建的程序包括Linux内核,rsync,KDE,GNOME(通过GARNOME),Samba和Wireshark。 distcc对于少量机器几乎可以线性扩展:在使用distcc 0.15的1700MHz Pentium IV机器上构建Linux 2.4.19需要6分45秒。在100Mbps交换机上的三台此类计算机上使用distcc只需2分钟30秒:快2.6倍。 (无法达到的)理论最大加速比是3.0倍,因此在这种情况下distcc的缩放效率为89%。您不需要大量机器即可受益:笔记本电脑和单个台式机比单独的笔记本电脑快得多。可以单独使用几种增强或补充distcc的工具:ccache缓存编译器输出以加快构建速度。 dmucs帮助distcc选择合适的服务器。即使构建在运行中,ccontrol也可以对并行性,缓存和分发进行集中控制。