Re: How do parallel builds scale?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ralf,

Ralf Wildenhues <Ralf.Wildenhues@xxxxxx> writes:

> * Ludovic CourtÃs wrote on Fri, Mar 04, 2011 at 06:59:45PM CET:
>> Ralf Wildenhues writes:
>> > * Ludovic CourtÃs wrote on Thu, Mar 03, 2011 at 04:42:52PM CET:
>> >> I ran a series of build time measurements on a 32-core machine, with
>> >> make -jX, with X in [1..32], and the results are available at:
>> >> 
>> >>   http://hubble.gforge.inria.fr/parallel-builds.html
>> >
>> > Thank you!  Would you be so kind and also describe what we see in the
>> > graphs?  I'm sorry but I fail to understand what they are showing, what
>> > the axes really mean, and how to interpret the results.
>> 
>> Y is the number of packages with a speedup <= X.  Does it help?
>
> Well, it helps in that it allows me to understand the graphs, but it
> doesn't allow me to interpret them.  How about a histogram with x the
> speedup (in some number of intervals) and y the number of packages
> exhibiting that speedup?  That would IMVHO be easier to read.

Iâve added that.

FWIW I think the cumulative plots make sense when trying to answer the
question âhow many packages have a speedup <= Xâ.

[...]

>> > I am fairly surprised GCC build times scaled so little.  IIRC I've seen
>> > way higher numbers.  Is you I/O hardware adequate?
>> 
>> I think so.  :-)
>
> OK, so I guess I'd like some details as to how you build it.  Is
> bootstrapping enabled (three-stage build),

Yesâthatâs the default according to the manual (info "(gccinstall)
Configuration").

> which languages do you build?

 - C and C++ for âgcc-4.5â;

 - Fortran only for âgfortran-4.5â, though I suspect
   --enable-langauges=fortran implies --enable-languages=c.

Unfortunately thereâs no data for GNAT and GCJ.

>> > Did you use only -j or also -l for the per-package times (I would
>> > recommend to not use -l).
>> 
>> I actually used â-jX -lXâ.  What makes you think -l shouldnât be used?
>
> Typically, -lX leads to waves in the load, due to the latency between
> measure and action, and of course the retardation from the measure
> interval.  There are long periods in which processes are already done
> but the load is still listed as too high.

Right, I see.

I donât think it hindered scalability though, since as the measurements
show that few packages scale beyond 2, even with â-j32 -l32â.

>> The main problem Iâm interested in is continuous integration on a
>> cluster.  When building a complete distro on a cluster, thereâs
>> parallelism to be exploited at the level of package composition (e.g.,
>> build GCC and Glibc at the same time, each with N/2 cores), and
>> parallelism within a build (âmake -jXâ).
>> 
>> Suppose youâve scheduled GCC and Glibc on a 4-core machine, you want
>> each of them to use 2 cores without stepping on each otherâs toes.
>> I think -l2 may help with this.
>
> I understand the problem, but I don't think -lX is a real solution to
> it.  First off, you want -l4 (or maybe even -l6) on a four-way system,
> not -l2.

Yes, here I always used â-jX -lXâ.

> Then, you still have the waves as above.  It might be simpler to just
> use -j3 for each of them.
>
> Do you build GCC and Glibc in separate virtual containers?

If you mean Linux containers, no.

> If not, we could think of providing a high-level job server that just
> serves out job cookies to the makes of both projects.  It might require
> a bit of adjustment to GNU make to do this in all sorts of interesting
> distro build setups.  But it would allow for (more) effective load
> usage.

Yeah.

Thanks,
Ludoâ.

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf



[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux