This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: compile server design document
- From: Michael Matz <matz at suse dot de>
- To: Per Bothner <per at bothner dot com>
- Cc: Alexandre Oliva <aoliva at redhat dot com>, <gcc at gcc dot gnu dot org>
- Date: Tue, 4 Mar 2003 22:31:54 +0100 (CET)
- Subject: Re: compile server design document
Hi,
On Tue, 4 Mar 2003, Per Bothner wrote:
> Distributed compilation is still useful, but I'm not that comfortable
> with distcc's approach of shipping preprocessed files. It substantially
> increases network bandwidth. Of course this isn't really a problem
> if you're on a fast network - but in that case why not instead get the
> header files using (say) NFS or FTP - and have them be cached by the
> compile server?
I tell you: because setting up NFS servers would be another thing to do.
This really is a hurdle. There were other distributed compiling
environments in the past (pmake and friends) for a long time, which more
or less all were based on some kind of network file system. Still those
never made it to mainstream use (not even in all companies which could
theoretically make use of that). A part of the problems are also locking
problems, or problems with timestamps and synchronisation. Whatever,
using NFS for this is not easy. With teambuilder and distcc this changed.
Simply install/run a daemon, and be done with it. With distcc it's a bit
more difficult, as you also have to configure the clients with a list of
to be used compiler servers, and it doesn't have a central scheduler
(compared to teambuilder).
Anyway, if you say, that using preprocessed files is increasing network
load, the same happens for NFS/AFS based systems. There is no big
difference if the content for the preprocessed contents comes in directly
as preprocessed file, or from header files over NFS, at least not in the
direction you indicate. On the contrary, the preprocessed file will most
probably be smaller, than the whole files used for building it, as for
instance all comments are stripped. You might answer, that one should not
take common headers from NFS, but instead have them locally on each
compile server. That would add a _huge_ maintenace cost in having them
consistent.
I tried to use all three approaches (NFS+pmake, distcc and teambuilder)
with KDE. pmake never really worked that well, distcc/teambuilder just
worked. So, while in theory totally equivalent solutions, in practice
there's a huge difference. compile servers not using preprocessed files
are practically unusable ;)
Ciao,
Michael.