Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] emerge getting slower
Date: Fri, 25 Dec 2015 04:44:59
Message-Id: 567CC9C0.4070601@gentoo.org
In Reply to: Re: [gentoo-portage-dev] emerge getting slower by Joakim Tjernlund
1 On 12/22/2015 12:59 AM, Joakim Tjernlund wrote:
2 > On Mon, 2015-12-21 at 12:36 -0800, Zac Medico wrote:
3 >> On 12/21/2015 12:24 PM, Joakim Tjernlund wrote:
4 >>> Lately it feels like emerge has been getting unusual slow to calculate dependencies.
5 >>> I did a strace while emerge was running and noticed a lot of:
6 >>>
7 >>> stat64("/usr/portage/profiles/base/profile.bashrc", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
8 >>> stat64("/usr/portage/profiles/default/linux/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
9 >>> directory)
10 >>> stat64("/usr/portage/profiles/arch/base/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
11 >>> directory)
12 >>> stat64("/usr/portage/profiles/arch/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
13 >>> directory)
14 >>> stat64("/usr/portage/profiles/default/linux/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file
15 >>> or directory)
16 >>> stat64("/usr/portage/profiles/arch/base/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
17 >>> directory)
18 >>> stat64("/usr/portage/profiles/arch/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
19 >>> directory)
20 >>> stat64("/usr/portage/profiles/arch/powerpc/ppc32/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
21 >>> directory)
22 >>> stat64("/usr/portage/profiles/default/linux/powerpc/ppc32/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No
23 >>> such file or directory)
24 >>> stat64("/usr/portage/profiles/releases/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
25 >>> directory)
26 >>> stat64("/usr/portage/profiles/releases/13.0/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
27 >>> directory)
28 >>> stat64("/usr/portage/profiles/default/linux/powerpc/ppc32/13.0/profile.bashrc", 0xbfbb02d0) = -1 ENOENT
29 >>> (No such file or directory)
30 >>> stat64("/usr/local/portage/tmv3-target-overlay/profiles/cusfpv3/profile.bashrc", {st_mode=S_IFREG|0644,
31 >>> st_size=133, ...}) = 0
32 >>> stat64("/etc/portage/profile/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or directory)
33 >>> access("/usr/local/portage/tmv3-target-overlay/dev-libs/apr/apr-1.5.1-r1.ebuild", R_OK) = -1 ENOENT (No
34 >>> such file or directory)
35 >>> access("/usr/portage/dev-libs/apr/apr-1.5.1-r1.ebuild", R_OK) = 0
36 >>> stat64("/usr/portage/dev-libs/apr/apr-1.5.1-r1.ebuild", {st_mode=S_IFREG|0644, st_size=4215, ...}) = 0
37 >>> open("/usr/portage/metadata/md5-cache/dev-libs/apr-1.5.1-r1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
38 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=1350, ...}) = 0
39 >>> ioctl(5, TCGETS, 0xbfbb0d88) = -1 ENOTTY (Inappropriate ioctl for device)
40 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=1350, ...}) = 0
41 >>> _llseek(5, 0, [0], SEEK_CUR) = 0
42 >>> _llseek(5, 0, [0], SEEK_CUR) = 0
43 >>> _llseek(5, 0, [0], SEEK_CUR) = 0
44 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=1350, ...}) = 0
45 >>> read(5, "DEFINED_PHASES=compile configure"..., 1351) = 1350
46 >>> read(5, "", 1) = 0
47 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=1350, ...}) = 0
48 >>> close(5) = 0
49 >>> open("/usr/portage/dev-libs/apr/apr-1.5.1-r1.ebuild", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
50 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=4215, ...}) = 0
51 >>> ioctl(5, TCGETS, 0xbfbb0898) = -1 ENOTTY (Inappropriate ioctl for device)
52 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=4215, ...}) = 0
53 >>> _llseek(5, 0, [0], SEEK_CUR) = 0
54 >>> read(5, "# Copyright 1999-2015 Gentoo Fou"..., 32768) = 4215
55 >>> read(5, "", 24576) = 0
56 >>> read(5, "", 32768) = 0
57 >>> close(5) = 0
58 >>> stat64("/usr/portage/profiles/base/profile.bashrc", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
59 >>> stat64("/usr/portage/profiles/default/linux/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
60 >>> directory)
61 >>> stat64("/usr/portage/profiles/arch/base/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
62 >>> directory)
63 >>> stat64("/usr/portage/profiles/arch/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
64 >>> directory)
65 >>> stat64("/usr/portage/profiles/default/linux/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file
66 >>> or directory)
67 >>> stat64("/usr/portage/profiles/arch/base/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
68 >>> directory)
69 >>> stat64("/usr/portage/profiles/arch/powerpc/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
70 >>> directory)
71 >>> stat64("/usr/portage/profiles/arch/powerpc/ppc32/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
72 >>> directory)
73 >>> stat64("/usr/portage/profiles/default/linux/powerpc/ppc32/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No
74 >>> such file or directory)
75 >>> stat64("/usr/portage/profiles/releases/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
76 >>> directory)
77 >>> stat64("/usr/portage/profiles/releases/13.0/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or
78 >>> directory)
79 >>> stat64("/usr/portage/profiles/default/linux/powerpc/ppc32/13.0/profile.bashrc", 0xbfbb02d0) = -1 ENOENT
80 >>> (No such file or directory)
81 >>> stat64("/usr/local/portage/tmv3-target-overlay/profiles/cusfpv3/profile.bashrc", {st_mode=S_IFREG|0644,
82 >>> st_size=133, ...}) = 0
83 >>> stat64("/etc/portage/profile/profile.bashrc", 0xbfbb02d0) = -1 ENOENT (No such file or directory)
84 >>> access("/usr/local/portage/tmv3-target-overlay/dev-libs/apr/apr-1.5.0-r2.ebuild", R_OK) = -1 ENOENT (No
85 >>> such file or directory)
86 >>> access("/usr/portage/dev-libs/apr/apr-1.5.0-r2.ebuild", R_OK) = 0
87 >>> stat64("/usr/portage/dev-libs/apr/apr-1.5.0-r2.ebuild", {st_mode=S_IFREG|0644, st_size=4047, ...}) = 0
88 >>> open("/usr/portage/metadata/md5-cache/dev-libs/apr-1.5.0-r2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
89 >>> fstat64(5, {st_mode=S_IFREG|0644, st_size=1341, ...}) = 0
90 >>> ioctl(5, TCGETS, 0xbfbb0d88) = -1 ENOTTY (Inappropriate ioctl for device)
91 >>>
92 >>>
93 >>> Could this constant stating of profile.bashrc account for some slowness?
94 >>
95 >> The stat calls indicate that it is executing the "depend" phase to
96 >> generate ebuild metadata cache, which only happens when data in the
97 >> md5-cache directory is stale for some reason. For example, you can see
98 >> this happen above for the
99 >> /usr/portage/metadata/md5-cache/dev-libs/apr-1.5.1-r1 cache entry. An
100 >> eclass-overrides setting in repos.conf can cause this. Are you using
101 >> eclass-overrides?
102 >
103 > No, not yet. I do use in layout.conf
104 > profile-formats = portage-2 profile-bashrcs profile-set
105 >
106 > profile-bashrcs perhaps?
107
108 No, eclass-overrrides is the only potentially relevant setting I can
109 think of at the moment.
110
111 > I just did a
112 > egencache --update --update-use-local-desc --update-pkg-desc-index
113 > for all repos on that system and it is still there.
114 >
115 > Then I recalled portage renames my repo to x-portage so I tried
116 > egencache --update --update-use-local-desc --update-pkg-desc-index --repo x-portage
117 > but that did not help either.
118 >
119 > Jocke
120 >
121
122 If you run egencache to populate $repo/metadata/md5-cache with valid
123 cache, and remove the corresponding cache entries from
124 /var/cache/edb/dep/$repo_location, do dependency calculations still
125 trigger regeneration of cache entries in
126 /var/cache/edb/dep/$repo_location? That would indicate that egencache is
127 writing invalid cache entries, or the cache validation mechanism failing
128 somehow.
129 --
130 Thanks,
131 Zac