Gentoo Archives: gentoo-user

From: Volker Armin Hemmann <volkerarmin@××××××××××.com>
To: gentoo-user@l.g.o
Cc: Jorge Almeida <jjalmeida@×××××.com>
Subject: Re: [gentoo-user] xz memory hungry?
Date: Thu, 23 Aug 2012 08:25:58
Message-Id: 1502344.cAeGcK7EK0@energy
In Reply to: Re: [gentoo-user] xz memory hungry? by Jorge Almeida
1 Am Mittwoch, 22. August 2012, 22:16:19 schrieb Jorge Almeida:
2 > On Wed, Aug 22, 2012 at 9:39 PM, Florian Philipp <lists@×××××××××××.net>
3 wrote:
4 > > Am 22.08.2012 20:52, schrieb Jorge Almeida:
5 > >
6 > > This should not happen, especially on such a small archive. I've tried
7 > > `strace xz -t m4-1.4.16.tar.xz` and looked for calls to mmap (e.g.
8 > > memory allocations). They never were larger than 68 MB
9 > >
10 > > Try it yourself. The second parameter in mmap is the allocated size in
11 > > byte.
12 > In the box where it works:
13 >
14 > $ strace -e trace=mmap2 xz -t m4-1.4.16.tar.xz
15 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
16 > 0) = 0xb7746000
17 > mmap2(NULL, 134226, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7725000
18 > mmap2(NULL, 155888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
19 > 0) = 0xb76fe000
20 > mmap2(0xb7723000, 8192, PROT_READ|PROT_WRITE,
21 > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24) = 0xb7723000
22 > mmap2(NULL, 107004, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
23 > 0) = 0xb76e3000
24 > mmap2(0xb76fa000, 8192, PROT_READ|PROT_WRITE,
25 > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb76fa000
26 > mmap2(0xb76fc000, 4604, PROT_READ|PROT_WRITE,
27 > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76fc000
28 > mmap2(NULL, 1727172, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
29 > 3, 0) = 0xb753d000
30 > mmap2(0xb76dd000, 12288, PROT_READ|PROT_WRITE,
31 > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19f) = 0xb76dd000
32 > mmap2(0xb76e0000, 10948, PROT_READ|PROT_WRITE,
33 > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76e0000
34 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
35 > 0) = 0xb753c000
36 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
37 > 0) = 0xb753b000
38 > mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb733b000
39 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
40 > 0) = 0xb7745000
41 > mmap2(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
42 > -1, 0) = 0xb723a000
43 > +++ exited with 0 +++
44 >
45 >
46 > In the other box, in the gentoo chroot:
47 >
48 > # strace -e trace=mmap2 xz -t /usr/portage/distfiles/m4-1.4.16.tar.xz
49 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
50 > 0) = 0xb779e000
51 > mmap2(NULL, 12143, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb779b000
52 > mmap2(NULL, 143600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
53 > 0) = 0xb7777000
54 > mmap2(0xb7799000, 8192, PROT_READ|PROT_WRITE,
55 > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x21) = 0xb7799000
56 > mmap2(NULL, 1448488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
57 > 3, 0) = 0xb7615000
58 > mmap2(0xb7771000, 12288, PROT_READ|PROT_WRITE,
59 > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb7771000
60 > mmap2(0xb7774000, 10792, PROT_READ|PROT_WRITE,
61 > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7774000
62 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
63 > 0) = 0xb7614000
64 > mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7414000
65 > mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x102a) = 0xb779d000
66 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
67 > 0) = 0xb779c000
68 > mmap2(NULL, 67112960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
69 > -1, 0) = -1 ENOMEM (Cannot allocate memory)
70 > mmap2(NULL, 67244032, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
71 > -1, 0) = -1 ENOMEM (Cannot allocate memory)
72 > mmap2(NULL, 2097152, PROT_NONE,
73 > MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xb7214000
74 > mmap2(NULL, 67112960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
75 > -1, 0) = -1 ENOMEM (Cannot allocate memory)
76 > mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
77 > 0) = 0xb779c000
78 > xz: /usr/portage/distfiles/m4-1.4.16.tar.xz: Cannot allocate memory
79 > +++ exited with 1 +++
80 >
81 >
82 > Thanks,
83 >
84 > Jorge Almeida
85
86
87 maybe a memory fragmentation problem? It tries to allocate 65mb continous
88 chunk - and can't find one?
89 --
90 #163933