Please explain make -j to my little brain

martinko martinkov at pobox.sk
Wed May 17 14:07:09 PDT 2006


Bill Moran wrote:
> On Mon, 15 May 2006 11:12:33 +0100
> Ashley Moran <work at ashleymoran.me.uk> wrote:
> 
>> Hi
>>
>> I've read the following snippet out of the handbook hundreds of times and 
>> still don't understand it.  I even asked one of the developers I work with 
>> and he was baffled too.
>>
>>> It is now possible to specify a -j option to make which will cause it to
>>> spawn several simultaneous processes. This is most useful on multi-CPU
>>> machines. However, since much of the compiling process is IO bound rather
>>> than CPU bound it is also useful on single CPU machines.
>> What I want to know is, if compiling is IO bound, and you increase the number 
>> of simultaneous processes compiling your world, where do the extra processes 
>> get data from if the IO bandwidth is all used.
>>
>> Have I misunderstood the term IO bound?  Please help, I feel like a right 
>> tool.
> 
> The key to that quote is the placement of the term "much".  As in "much of
> the compiling process" ... not all of it.
> 
> Generally, while one process is waiting on disk IO, another can be using
> the CPU.  As a result, you can get closer to 100% usage of the machine,
> which won't happen if you batch the whole thing.
> 
>> Just as a side line... does anybody know the best -j value to build world on a 
>> 4-core box?
> 
> I generally quadruple the # of cores, so I'd use -j16.  I couldn't tell you
> authoritatively what is _best_, though.
> 

hi,

i remember from mailing lists there used to be a problem with using "-j"
while compiling kernel or world or ports or sth. is it resolved now pls?

cheers,

martin



More information about the freebsd-questions mailing list