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 |