1 |
On Mon, Jul 7, 2014 at 9:39 PM, Duncan <1i5t5.duncan@×××.net> wrote: |
2 |
> But from the sound of things, default backtrack=10, multilib, full |
3 |
> @system set and default profile use, on spinning rust, is getting all but |
4 |
> intolerable now. =:^( |
5 |
|
6 |
Actually a mix of RAID0 and RAID1 over fast, new-ish SSDs -- anyhow I |
7 |
doubt it would matter on spinning rust. When I sync, I run egencache |
8 |
on everything and then emerge --metadata, so by the time I run emerge |
9 |
-u*, it's against a warm cache; the disk light basically stays dark |
10 |
the whole time. But, I have overlays with forced eclass overrides, |
11 |
and over 2000 packages installed. Furthermore, after a sync, I'm |
12 |
often waiting for emerge to fail, not to succeed. |
13 |
|
14 |
For example, say I've multilibutized something upstream hasn't, and |
15 |
upstream has version-bumped their non-multilibutized ebuild (but not |
16 |
multilibutized it); and say I have packages installed requiring |
17 |
multilib in the same slot -- that's a scenario I frequently find |
18 |
myself in. Worse, I will usually provide --complete-graph to portage |
19 |
(because otherwise, portage can fail to show me the clues I need to |
20 |
detect precisely this problem). Basically, you could say my use case |
21 |
is the perfect storm of ways to make emerge slow. I probably wouldn't |
22 |
be kept waiting for those 30 minutes unless I'd waited a week or two, |
23 |
and let gx86 provide newer versions of several of my ebuilds. I'm |
24 |
pretty sure this triggers massive amounts of backtracking. |
25 |
|
26 |
By the way, I've profiled depsolving on my system. Portage spends a |
27 |
/majority/ of it's depsolving time solving regexes on behalf of |
28 |
portage.dep.Atom. I have an untested theory that, without fixing any |
29 |
algorithmic stuff, we could reap a meaningful O(1) gain implementing, |
30 |
say, a CustomAtom (inherited by Atom) in cpython that does most of its |
31 |
string parsing in hand-coded C. |
32 |
|
33 |
-gmt |