As mentioned last week, I’ve put together these changes for submission to the project.

Our local setup is that no compiling is done locally.  We’ve got big enough jobs that the local machine is busy with linking and preprocessing.  We also found that going above about –j 15 didn’t improve total time to compile by much, even on a 4 processor box.

 

Limiting the preprocessor helps achieve a healthy level of parallelism.   Currently, we have to carefully adjust the parallel factor in make, so that it doesn’t overwhelm the local machine.  By using lock files to control that instead, we can now dramatically increase the j factor, and it doesn’t slow down the build.

 

The other change is to randomize host selection, and choose based on slots.  This means that hosts with 4 available slots are 4 times more likely to be chosen than a host with only 1 available slot. 

 

Last, the localhost lock file now includes part of the host name.  We have 4 “localhosts” in use here on shared disks.  Without this change, they all used the same lockfiles.  This meant that box 2 would not do any linking, because box 1 was already doing 4.   

 

The randomized host selection is turned on by adding the host “—randomize” to the list.  

Local compilation slots can be set without adding localhost to the hostlist, by setting “—localslots=<num>”

And the preprocessor limit can be set by “—localslots_cpp=<num>” 

It currently defaults to 8.    I haven’t done any performance tuning, but 8 does significantly better than “unlimited” on our 4 processor boxes.

 

This patch is against the 2.18.3 tarball.  Our original changes were against 2.11.2, and I decided to just reimplement them against a clean 2.18.3 tree. 

 

We have other changes, but I’m not sure how general they are.   One outstanding problem is that with multiple “localhosts” using 1 shared directory, orphan detection doesn’t work so well.  We’ve just turned it off, but that results in many orphans.   

 

Michael 

Attachment: distcc-changes-2005-03-28
Description: distcc-changes-2005-03-28

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

Reply via email to