I submitted an improved randomized algorithm a while back:
http://lists.samba.org/archive/distcc/2005q1/002957.html

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 run.

It looks like my original message was scrubbed, but the patch is still there:
http://lists.samba.org/archive/distcc/2005q2/002964.html

-Michael

On 4/5/06, Dan Kegel <[EMAIL PROTECTED]> 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

__ 
distcc mailing list            http://distcc.samba.org/
To unsubscribe or change options: 
https://lists.samba.org/mailman/listinfo/distcc

Reply via email to