[distcc] More efficient multiple file compiles?
Benjamin R. Haskell
distcc at benizi.com
Tue Apr 28 15:58:58 GMT 2009
On Tue, 28 Apr 2009, Tom Holly wrote:
> Those assumptions are correct. I've had distcc built and installed for a
> while and it's working wonderfully. Now I'm trying to incorporate make
> -j and here is the problem:
>
> I ran "pump make -j12 CC=distcc\ gcc all" in the directory where my
> Makefile and distcc object files reside. Then I did a make install the
> same way and that all worked fine.
>
> Now I want to test this on my own C files and that is what I cannot seem
> to get working because I don't notice the files being compiled
> simultaneously.
I'd recommend using environment variables to tell distcc to output more
useful debugging information for your case. Specifically, I'd look at
using DISTCC_VERBOSE, DISTCC_LOG, and maybe DISTCC_SAVE_TEMPS[1].
For more general 'parallel make' advice, a thread from
help-make at gnu.org[2] had some relevant discussion. Specifically, one of
the suggestions[3] was to augment your targets with timestamp-generating
commands:
e.g.:
AT = @date +"$@: %s" ;
all: foo bar
foo:
$(AT)sleep 5
bar:
$(AT)sleep 10
But, maybe that could be expanded upon further, by creating a small
wrapper for distcc that outputs timing information (tested):
==== put this in your path as 'distcc-with-timing' ====
==== (at http://benizi.com/distcc-with-timing ) ====
#!/bin/zsh
_log=${DISTCC_TIMING_LOG=$DISTCC_DIR/timing-log}
_args=($argv)
function _tag () {
printf "%s %s%s\n" `date +%s` $1 "${DISTCC_TIMING_VERBOSE+ $_args}" >> $_log
}
_tag START-JOB
distcc $argv
_tag FINISH-JOB
==== end of distcc-with-timing ====
$ make -j4 CC=distcc-with-timing
# then inspect $DISTCC_DIR/timing-log
$ DISTCC_TIMING_LOG=/tmp/put-timing-log-here DISTCC_TIMING_VERBOSE=1 make -j4 CC=distcc-with-timing
# then inspect /tmp/put-timing-log-here
If you find more than one START-JOB line in a row, it's running in
parallel.
Best,
Ben
[1] http://distcc.googlecode.com/svn/trunk/doc/web/man/distcc_1.html#TOC_20
[2] http://www.mail-archive.com/help-make@gnu.org/msg07297.html
[3] http://www.mail-archive.com/help-make@gnu.org/msg07304.html
[4] http://benizi.com/distcc-with-timing
More information about the distcc
mailing list