[distcc] distcc/ccache?? cache management in a distcc environ ment.

Jeremy Glazman JGlazman at itsgames.com
Fri Jun 3 21:14:02 GMT 2005

I have a distcc/ccache setup, but I share my cache among the machines.  If
you give each machine it's own cache, you'll only get a cache hit if distcc
randomly happens to send the same source to the same machine twice.  In my
setup, I use samba to share the originating machine's cache with the rest of
the compile farm.  That way the entire farm has the same cache and gets all
the proper cache hits no matter where distcc decides to send the source.

As for how ccache determines 'freshness', to quote the ccache homepage: "It
acts as a caching pre-processor to C/C++ compilers, using the -E compiler
switch and a hash to detect when a compilation can be satisfied from cache.

Search the manpage for 'hash' for some more details about how this is
controlled. There is more detailed info about this in the ccache mailing
list archives as well, I believe.

distcc + ccache = :)

-----Original Message-----
From: distcc-bounces+jglazman=itsgames.com at lists.samba.org
[mailto:distcc-bounces+jglazman=itsgames.com at lists.samba.org]On Behalf Of
David Weeks
Sent: Friday, June 03, 2005 11:09 AM
To: distcc at lists.samba.org
Subject: [distcc] distcc/ccache?? cache management in a distcc environment.

Hello again.

Continuing with my earlier question, I now ask how distcc and ccache
interact.  I'm assuming at this point that the client/server
relationship of distcc solves potential recurssion problems within
distcc operations.  In other words, I assume it is the distcc client
that distrubutes service requests to distcc daemons, yet the daemons
themselves NEVER distrubute service request, delivering to the compiler
instead, and routing the compilied binary back to the requesting host.

So I now wonder about the utilization of ccache.  It seems to me that
the originating host ought to first que its compile list to its own
ccache, and where there is a miss, perhaps then que the job to a remote
host.  When the remote host receives the service request, it too should
examine its ccache, and build only when necessary.  Regardless of which
host eventually compiles an object, the originating host ALWAYS get's
the completed list of objects.  Is there any state management of ccache
at this point?  I don't know how ccache determines freshness, but I'm
sure it is some comparision of source code, say a check sum?  Or is it a
make function?  I don't know, but would like to.


David Weeks,
Tampa, Florida, USA.

distcc mailing list            http://distcc.samba.org/
To unsubscribe or change options:

More information about the distcc mailing list