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 |