1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<!-- This document was created with Latte version 2.1 -->
<!-- For information on Latte, see http://www.latte.org/ -->
<html>
<head><meta name="generator" content="Latte 2.1"><title>distcc compared to other systems</title>
<meta name="author" content="Martin Pool">
<meta name="keywords" content="distributed, make, build, gcc,
parallel, network, networked, faster, free, fast, paralel, cc, c,
C++, Objective C, ObjC, compile, compiler, compilation,
simple, GPL, GNU, Linux, BSD, Unix, software, development,
developer, TeamBuilder, quick, dmake, pvmake,
transparent, easy, workstations, Solaris, IncrediBuild,
productivity, speed, time, tool, performance, hardware,
agents, nfs, libraries, source, headers, workload,
buildfarm, farm, server, cluster, clustered, clustering, MOSIX, OpenMOSIX">
<link rel="SHORTCUT ICON" href="favicon.ico">
<link type="text/css" rel="stylesheet" href="distcc-green.css">
<link type="text/html" rel="top" href="index.html">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body vlink="#003300" text="#000000" link="#003300" bgcolor="#ffffff" alink="#336633"><p><table width="100%"><tr><td valign="top"><div class="navbar"><ul><li><a href="index.html"><b>distcc</b></a></li>
<li><a href="http://code.google.com/p/distcc/source/browse/trunk">source</a>
<li><a href="http://code.google.com/p/distcc/downloads/list">binaries</a></li>
<li><a href="http://distcc.googlecode.com/svn/trunk/NEWS">news</a></li>
<li><a href="scenarios.html">scenarios</a></li>
<li><a href="results.html">testimonials</a></li>
<li><a href="http://code.google.com/p/distcc/issues/list">report a bug</a></li>
<li><a href="faq.html">FAQ</a></li>
<li><a href="security.html">security</a></li>
<li><a href="distcc-lca-2004.html">whitepaper</a></li>
<li><a href="https://lists.samba.org/mailman/listinfo/distcc">mailing list</a>
<ul><li><a href="mailto:distcc@lists.samba.org">post</a></li>
<li><a href="http://lists.samba.org/archive/distcc/">archive</a></li>
<li><a href="news://news.gmane.org/gmane.comp.compilers.distcc">newsgroup</a></li></ul>
</li>
<li><a href="http://freshmeat.net/projects/distcc">Freshmeat</a>
<ul><li><a href="http://freshmeat.net/subscribe/28140">be notified</a></li></ul>
</li>
<p>
<li>related:</li>
<ul>
<li><a title="How to use distcc and Gentoo" href="http://www.gentoo.org/doc/en/distcc.xml">Gentoo</a></li>
<li><a title="Script to ease building cross-compilers and toolchains" href="http://kegel.com/crosstool/">crosstool</a></li>
<li><a title="Cache compiler results" href="http://ccache.samba.org/">ccache</a></li>
<li><a title="Centralized control over distcc and ccache" href="http://ccontrol.ozlabs.org/">ccontrol</a></li>
<li><a title="Smart job scheduler" href="http://dmucs.sourceforge.net/">dmucs</a></li>
</ul>
<p><p></td> <td valign="top"><div class="body"><h1 class="title">distcc compared to other systems</h1>
<p><h2><a name="summary" href="#summary">Summary</a></h2>
<p>The main advantages of distcc compared to other tools are:
<p><ul><li>distcc is free software under the GNU GPL.</li>
<p><li>distcc is simple to install and configure.</li>
<p><li>distcc can be installed by a non-root user, without requiring
a kernel patch or any change to installed software or
filesystems.</li>
<p><li>distcc has very little impact on machines helping with the
build.</li>
<p><li>distcc doesn't require a shared filesystem.</li>
<p><li>distcc can optionally use strongly encrypted and authenticated ssh
channels for communication. In this mode it is
<a href="security.html">safe</a> to use on untrusted networks.</li>
<p><li>distcc can use machines with different processor architectures
(i386, ppc, ...) or operating systems (Cygwin, Linux, BSD), if
appropriate cross-compilers are installed. distcc runs on
<a href="binaries.html">many operating systems and architectures</a>.</li>
<p><li>distcc works reasonably even over wireless networks, when the
LZO compression option is turned on.</li></ul>
<p>The disadvantages of distcc are:
<p><ul><li>distcc requires that the same compiler version be installed on all
participating machines. (Every other distributed build system
requires this too.)</li>
<p><li>Only C/C++/ObjC/ObjC++ compilation can be distributed, not
linking or other tasks. (Some clustering systems can
distribute any task.)</li>
<p><li>distcc comes with no warranty (as does most software), though
it has been successfully used by many people for many
years.</li></ul>
<p><h2><a name="openmosix" href="#openmosix">OpenMOSIX</a></h2>
<p><a href="http://www.openmosix.org/">OpenMOSIX</a> is a kernel-level
single-image clustering system for Linux. It can be used to spread
software builds or any other parallel task across multiple machines.
<p>OpenMOSIX requires a kernel patch. All the machines must be of the
same architecture and running similar kernels.
<p>MOSIX and OpenMOSIX give you essentially a "single system image"
cluster, which looks like a fast computer. distcc just looks like a
fast compiler.
<p>Some people have reported that distcc is much faster than OpenMOSIX
for software builds in some situations. Short-lived, CPU-intensive
compiler processes may be a very difficult load for a design based
on process migration.
<p>Other differences:
<p><ul><li>You don't need root to install distcc</li>
<li>Installing distcc doesn't require a kernel patch or reboot;
presumably it can't destabilize anything else on the machine.</li>
<li>distcc copes reasonably gracefully if a machine goes away
abruptly or the network goes down; it will just keep compiling
locally.</li>
<li>distcc works (at least in theory) on any POSIX-like operating
system, not just Linux, and on any processor. It has been
reported to work on Linux, FreeBSD, HP-UX, Solaris, AIX and Cygwin,
and you can spread load across machines using different systems.
OpenMOSIX works only on Linux, and (perhaps?) only on x86 and IA-64.</li>
<li>distcc volunteers can have different processor architectures
or even operating systems to the machines they're serving. (You
do need to install a cross compiler though.)</li>
<li>distcc is only about 13000 lines of C, so you may find it
easier to hack or patch.</li></ul>
<p>Barnowl writes:
<p><blockquote>Currently openMosix (oM) only runs on Linux and
currently only on x86 and IA64 arch. distcc works like a champ when
used combined with oM. While oM does help some with short run jobs,
its forte is big computation jobs so it works better for things like
video edits or DNA decoding. If you just want to speed up C compiles
with out a lot of work or custom kernels distcc is the way to go.</blockquote>
<p><h2><a name="cook" href="#cook">Cook</a></h2>
<p><a href="http://www.canb.auug.org.au/~millerp/cook/cook.html">Cook</a>
is a Make replacement written by Peter Miller and distributed under
the GNU GPL. Cook can do parallel builds and has built-in support
for distributing builds across machines on a LAN.
<p>Using Cook requires you to convert your Makefiles to a <q>cookbook</q>,
though there is a <q>make2cook</q> program to help with this.
<p>Cook runs commands over <tt>rsh</tt> by default, but it seems like you
could use <tt>ssh</tt> instead. Cook uses <tt>rup</tt> to calculate load
on different machines.
<p>It seems like Cook requires a shared filesystem and the same tools
on all machines. There is a mechanism to group machines into
classes and run particular commands on particular classes of
machine.
<p><h2><a name="pvmgmake" href="#pvmgmake">pvmgmake</a></h2>
<p><a href="http://pvmgmake.sourceforge.net/">pvmgmake</a> is a fork of
GNU Make which can spread tasks across multiple machines using the
PVM protocol.
<p>pvmgmake requires that all the machines see the same filesystem, and
have the same tools installed.
<p><h2><a name="xcode" href="#xcode">XCode</a></h2>
<p>Apple <a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/Build_System/Dist_Builds/distributed_builds.html">XCode Distributed Build</a> is based on distcc.
<p>Apple add patches for Rendezvous-based discovery of servers and
transport of precompiled headers. These features may come back into
the mainstream distribution in the future. Apple also add GUI to
configure distcc, and support for some Apple-specific gcc features.
<p>Apple's tools only work on Mac OS X.
<p>The Apple version at the moment does not seem to support LZO or SSH.</div></td>
</tr></table>
<div class="thanks">Copyright © 2002–2004 Martin Pool.
distcc is a trademark of Martin Pool.
<p>Send comments to <tt>distcc(at)lists.samba.org</tt>,
or talk to us on <tt>#distcc</tt> on <a href="http://oftc.net/">irc.oftc.net</a>.</div></body>
</html>
|