And Here I Thought buildworld/makeworld Was IO Bound

Tim Daneliuk tundra at tundraware.com
Mon Feb 10 15:45:57 UTC 2014


On 02/10/2014 09:24 AM, Glen Barber wrote:
> On Mon, Feb 10, 2014 at 08:57:10AM -0600, Tim Daneliuk wrote:
>> On 02/09/2014 11:45 PM, army.of.root wrote:
>>> Am 10/02/14 04:43, schrieb Tim Daneliuk:
>>>> For some years now, I have been doing nightly builds of -STABLE
>>>> on an old Pentium D machine with 2G of memory.  Buildworld + 2
>>>> different kernels was taking in the neighborhood of 3 1/2 hours or so
>>>> to run.
>>>>
>>>> I then upgraded the Mobo/CPU to a Haswell Quadcore I5-4570 and, sure
>>>> enough, the build time for all the above came down to 30-35 mins or so.
>>>>
>>>> "So", says I, "I'll bet a faster drive would help considering all the
>>>> scribbling to the disk the compilers and makes do".  So, I upgdared to
>>>> a Kingston SSD Now 300, 120G hard drive and he time to do the above
>>>> went down to .... wait, it's still about 30-35 mins ????
>>>>
>>>> So, I've tried fiddling with different values for -j on the make
>>>> command line to little avail.  Well, -j8 and -j16 show no real
>>>> difference here.
>>>>
>>>> So is the bounding function here actually CPU not IO?  Am I missing
>>>> something?
>>>>
>>>> Thanks,
>>>>
>>>> P.S.  Trying now with no -j arg on make invocation.
>>>
>>> Hi,
>>>
>>> the new machine has a lot more memory, I assume.
>>
>> Yes, 8G as opposed to 2G. I suppose I could bump it out
>> to 16G and see if this makes any material difference with
>> even more cache space.
>>
>>> The build probably will not even hit the disk due to caching.
>>
>>
>> Well ... it has to hit the disk sooner or later.  But, if the
>> frequency of physical writes is low because of aggregated
>> IO from the cache, I guess that would tend to make the whole
>> business more CPU bound than IO bound.  I just found this surprising.
>>
>
> What is the underlying filesystem?
>

UFS w/Softupdates, no journaling.


>>>
>>> Also remember, the build process spawns probably millions of processes and that alone takes some time.
>>>
>>> And 30min sounds pretty great to me :D
>>
>> Yeah, I wonder what other people are seeing for a full buildworld/kernel and/or what
>> the master machines at FreeBSD.org do in this regards.
>>
>> Would anyone else care to share with the class?
>>
>
> If you mean "what do the machines do with regard to tuning", the only
> specific tuning is turning off atime.
>


Could you comment a bit more about this please?  How you do it,
rationale', etc.

> If you mean "what do the machines do as far as overall build time", with
> a clean obj/ directory, 35 minutes sounds about right.  I do not have
> exact numbers.
>
> The machine that currently produces weekly snapshot images uses '-j10'
> for buildworld and '-j6' for buildkernel for each build.  It also runs
> the builds in parallel.  Even with three parallel 'make -j10 buildworld'
> (one for head/, stable/10/, and stable/9/), disk IO is minimal.  The
> only time the disk IO becomes a bottleneck is when creating the
> distribution files (base.txz, kernel.txz, etc.).


What sort of CPU/Mem/Disk is that machine?

>
> Glen
>


-- 
----------------------------------------------------------------------------
Tim Daneliuk     tundra at tundraware.com
PGP Key:         http://www.tundraware.com/PGP/



More information about the freebsd-stable mailing list