1 |
On 2010-01-14, Nirbheek Chauhan <nirbheek@g.o> wrote: |
2 |
> On Wed, Jan 13, 2010 at 9:24 PM, Mike Frysinger <vapier@g.o> wrote: |
3 |
>> i think our current work flows also significantly impede the smooth running of |
4 |
>> this. if we had were using a dscm (git) on gentoo-x86, i feel like it'd be a |
5 |
>> much smoother ride for Gentoo devs to pull from a proxy maintainer and push on |
6 |
>> their behalf. |
7 |
> |
8 |
> In theory, yes. In practice, git is too slow to handle 30,000 files. |
9 |
> Even simple operations like git add become painful even if you put the |
10 |
> whole of portage on tmpfs since git does a stat() on every single file |
11 |
> in the repository with every operation. |
12 |
> |
13 |
> Simple test: do a git init followed by git add && git commit -m |
14 |
> "Initial commit" in your portage dir (.gitignore packages/ and |
15 |
> distfiles/) |
16 |
> |
17 |
> Once this is done, you can test how it'll feel like to use a DSCM on |
18 |
> portage (without history). Unless you have a really fast SSD and |
19 |
> processor, you'll want to go back to the good old days of CVS with its |
20 |
> network-bound latencies on just 5-6 files in the current dir. |
21 |
|
22 |
Ouch. I wanted to test this in a fairly bad scenario, so I gave it a |
23 |
try on my old, low-spec fileserver. |
24 |
|
25 |
aravis-root /usr/portage # time git add . |
26 |
real 19m1.333s |
27 |
user 0m53.230s |
28 |
sys 1m9.350s |
29 |
|
30 |
aravis-root /usr/portage # time git commit -m "Initial commit" |
31 |
real 19m44.700s |
32 |
user 0m23.740s |
33 |
sys 0m49.320s |
34 |
|
35 |
Then, with no changes whatsoever: |
36 |
aravis-root /usr/portage # time git status |
37 |
real 4m26.454s |
38 |
user 0m2.090ssys 0m6.380s |
39 |
|
40 |
Finally, a ray of hope: |
41 |
aravis-root /usr/portage/app-emulation # time git add xen-tools-gdbserver/ |
42 |
real 0m0.978s |
43 |
user 0m0.400s |
44 |
sys 0m0.180s |
45 |
|
46 |
But no: |
47 |
aravis-root /usr/portage/app-emulation # time git commit -m "Commit 2" |
48 |
real 3m18.502s |
49 |
user 0m1.830s |
50 |
sys 0m7.530s |
51 |
|
52 |
Now, this is fairly close to a worst-case scenario, being an old |
53 |
computer with a slow drive. A new computer with faster drives (in |
54 |
RAID 1+0) is much more reasonable. |
55 |
|
56 |
lasaraleen portage # time git add . |
57 |
real 0m26.002s |
58 |
user 0m6.256s |
59 |
sys 0m6.572s |
60 |
|
61 |
lasaraleen portage # time git commit -m "Initial commit" |
62 |
real 0m27.371s |
63 |
user 0m3.704s |
64 |
sys 0m3.856s |
65 |
|
66 |
lasaraleen app-emulation # time git commit -m "Commit 2" |
67 |
real 0m1.374s |
68 |
user 0m0.468s |
69 |
sys 0m0.904s |
70 |
|
71 |
|
72 |
-- |
73 |
Having to infer what Unix is solely from a copy of the GNU Manifesto is |
74 |
not really an exercise you want to undertake. |
75 |
--AdB |