Re: Distributed Builds - Overloading System
Re: Distributed Builds - Overloading System
- Subject: Re: Distributed Builds - Overloading System
- From: James Bucanek <email@hidden>
- Date: Mon, 27 Feb 2006 08:32:17 -0700
David Michael Bryson wrote on Wednesday, February 22, 2006:
>On Feb 22, 2006, at 6:31 PM, James Bucanek wrote:
>
>> It's not launchd, it's distcc.
>>
>> Help > Show Expert Preferences Notes
>>
>> See XCMaxNumberOfDistributedTasks
>
>I've looked into that, but it doesn't seem to affect the daemon side
>of things. It will set how many jobs the client computer will farm
>out to other machines. The problem I'm seeing is that host machines
>will accept more farmed out jobs than what is optimal for the
>machine. (i.e. 4 tasks on a single cpu G4 machine)
First of all, my apologies for taking so long to get back to this.
Apparently this is designed behavior for distccd and might be related to the latest release of distcc included with Xcode 2.2. Last night I updated all of my other computers to 10.4.5 and Xcode 2.2, enabled distributed builds, and played around with it.
My iMac G5 and Mini were both processing 3 jobs each. I'd never seen this in any previous release of Xcode. Prior to this upgrade, all of my remote computers would process exactly one job at a time. A little digging uncovered this in the distccd man page:
-j, --jobs JOBS
Sets a limit on the number of jobs that can be accepted at any
time. By default this is set to two greater than the number of
CPUs on the machine, to allow for some processes being blocked
on network IO. (Daemon mode only.)
Curious to see how this was affecting my remote computers, I ran top while performing a relatively large build (approximately 300 Obj-C files). To my surprise, having each remote computer chew on 3 jobs at a time was just about right. The CPU load hung around 1, with each job getting approximately 30% of the CPU time. I'm assuming that all three jobs were essentially I/O bound.
The next step, which I haven't had time to get to, would be to try to adjust the number of jobs distccd would accept by specifying the --jobs argument in /System/Library/LaunchDaemons/distccd.plist. Note that this would probably be overwritten the next time you reconfigured distributed builds in the Xcode interface, but would let you experiment with higher or lower jobs limits for a particular system.
James Bucanek
____________________________________________________________________
Author of Beginning Xcode ISBN: 047175479X
<http://www.beginningxcode.com/> Available April 3rd, 2006
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden