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 193 194 195 196 197
|
<!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">distcc</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="benchmark.html">benchmarks</a></li>
<li><a href="security.html">security</a></li>
<li><a href="distcc-lca-2004.html">whitepaper</a></li>
<li><a href="http://distcc.googlecode.com/svn/trunk/doc/web/man/">Man pages</a></li>
<li><a href="faq.html">FAQ</a></li>
<p>
<li><a href="http://code.google.com/p/distcc/issues/list">report a bug</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="https://ccache.dev/">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>
|