[distcc] Eight little patches for distcc.

Michael Donohue michael.donohue at gmail.com
Mon Apr 10 19:18:18 GMT 2006

I submitted an improved randomized algorithm a while back:

It requires fewer probes of the locks to find a successful host, and allows
some degree of load balancing based on the number of slots available.

I also submitted a patch for limiting preprocessing, so that hugely parallel
builds can be started without crushing the machine with that same number of
preprocessors all starting at the same time.  It doesn't improve overall
execution time, but it keeps the system responsive if you're trying to do
something else while building.  Once the 'system' starts rolling, only about
20% of the jobs are typically in preprocess, but initially 100% of them are,
so far more resources get drained at that time, compared to the middle of a

It looks like my original message was scrubbed, but the patch is still


On 4/5/06, Dan Kegel <dank at kegel.com> wrote:
> http://kegel.com/distcc/2006-03-28/
> contains eight patches I'm using locally.
> I'd be happy to recieve feedback on these if they're not good enough
> as-is.
> 00-distcc-getload-20051229.patch
> 01-distcc-gdb-20051210.patch
> 02-distcc-lsdistcc-20060306.patch
> 03-distcc-timeout-20051213.patch
> 04-distcc-stats-20060222.patch
> 05-distcc-stringmap-20051208.patch
> 06-distcc-randomhost.patch
> 07-distcc-timeout-stats-20060131.patch
> 01 is an already-posted patch that avoids problems with gdb
> not being able to find source files.  I used to think this should
> be fixed inside gcc, but distcc has to be able to handle old versions
> of gcc, too.
> 02 is my little lsdistcc program which enumerates servers from DNS.
> 03 lets you recover from compilers with infinite loops (gcc-2.95.3 has
> plenty)
> 06 helps if you have lots of servers but no load balancer
> It's better performance-wise than the other randomize patch
> 00 and 04 together add simple http-based monitoring to distcc.
> e.g. if distcc7 is a distcc server, and you started it with the --stats
> option,
> then viewing http://distcc7:3633 displays some useful statistics.
> The message it displays is (including http header):
> +HTTP/1.0 200 OK\n\
> +Content-Type: text/plain\n\
> +Connection: close\n\n\
> +argv /distccd\n\
> +<distccstats>\n\
> +dcc_tcp_accept %d\n\
> +dcc_rej_bad_req %d\n\
> +dcc_rej_overload %d\n\
> +dcc_compile_ok %d\n\
> +dcc_compile_error %d\n\
> +dcc_compile_timeout %d\n\
> +dcc_cli_disconnect %d\n\
> +dcc_other %d\n\
> +dcc_longest_job %s\n\
> +dcc_longest_job_compiler %s\n\
> +dcc_longest_job_time_msecs %d\n\
> +dcc_max_kids %d\n\
> +dcc_current_load %d\n\
> +dcc_load1 %1.2lf\n\
> +dcc_load2 %1.2lf\n\
> +dcc_load3 %1.2lf\n\
> +dcc_num_compiles1 %d\n\
> +dcc_num_compiles2 %d\n\
> +dcc_num_compiles3 %d\n\
> +dcc_num_procstate_D %d\n\
> +dcc_max_RSS %d\n\
> +dcc_max_RSS_name %s\n\
> +dcc_io_rate %d\n\
> +dcc_free_space %d MB\n\
> +</distccstats>\n";
> where
> dcc_load[123] is system load average over last 1, 5, 15 minutes
> dcc_num_compiles[123] is number of jobs in last 1, 5, 15 minutes
> --
> Wine for Windows ISVs: http://kegel.com/wine/isv
> __
> distcc mailing list            http://distcc.samba.org/
> To unsubscribe or change options:
> https://lists.samba.org/mailman/listinfo/distcc
-------------- next part --------------
HTML attachment scrubbed and removed

More information about the distcc mailing list