Gentoo Archives: gentoo-soc

From: Rich Freeman <rich0@g.o>
To: gentoo-soc@l.g.o
Subject: Re: [gentoo-soc] Project Proposal : GenCC for "Gentoo Community Compiling"
Date: Mon, 01 Apr 2013 15:30:22
Message-Id: CAGfcS_=JRBUtbbBQ04moCGkP_aPH2pWT9oYanTZyUPwkQ=-sZw@mail.gmail.com
In Reply to: Re: [gentoo-soc] Project Proposal : GenCC for "Gentoo Community Compiling" by Donnie Berkholz
1 On Mon, Apr 1, 2013 at 10:43 AM, Donnie Berkholz <dberkholz@g.o> wrote:
2 > The problem in the end is that it wasn't really feasible on anything
3 > besides a 100 MBit *minimum* connection with low latency, otherwise you
4 > spent more time transferring files around than compiling them.
5 >
6 > Today you could imagine it being potentially interesting if you think
7 > about it in the context of public (or private) cloud living in shared
8 > datacenters.
9
10 I messed around with distcc in combination with EC2 thinking I might
11 make my life easier when my previous box was taking eons to compile
12 things like chromium. The goal was to have my box at home just send
13 out work and do no little local compilation. It was as much an
14 experiment as anything.
15
16 I found that the latency of the connection REALLY slowed things down
17 unless you had a very high level of parallelism (think 32-64 files in
18 transit at any time). If I got the number of jobs high enough it
19 would perform better, and I'd have many more jobs than hosts because
20 the reality is that 75% of the jobs were just travelling over the
21 network and not running at any time.
22
23 The problems were:
24 1. Few build systems could actually get that many jobs running in parallel.
25 2. distcc only manages a queue for gcc jobs run in parallel, but make
26 -j64 runs everything in parallel.
27 3. distcc still requires dependencies to be present on all of the
28 build systems.
29
30 #2 meant that when some java program built I'd end up with 64 java VMs
31 just killing my system. Even shell or python scripts would just kill
32 the thing, and many build systems are a combination of C and
33 scripts/etc.
34
35 It might do marginally better if you could improve the build systems,
36 but for the most part it is local-only. It might make more sense in
37 more dedicated roles like a tinderbox that only builds a single
38 package as it could be optimized to overcome those issues.
39
40 Rich