Am 07.08.23 um 07:59 schrieb Jiri Slaby:
On 06. 08. 23, 23:35, Aaron Puchert wrote:
The machine has lots of memory, but i586 only provides a 2GB user virtual address space for every process.
Huh, no. AFAIK, we are using 64bit kernels for building even on 32bit. So you have full 4 gigs per process.
Thanks for pointing that out, I was incorrectly assuming that only the lower 2GB would be available. The log says 2nd stage started in virtual machine machine type: x86_64 [...] switching personality to 8... 2nd stage started in virtual machine machine type: i686 Presumably that refers to /usr/include/sys/personality.h: PER_LINUX32 = 0x0008, and there is a separate ADDR_LIMIT_3GB = 0x8000000 /* ... */ PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, The man page says PER_LINUX32 (since Linux 2.2) [To be documented.] PER_LINUX32_3GB (since Linux 2.4) Implies ADDR_LIMIT_3GB. ADDR_LIMIT_3GB (since Linux 2.4.0) With this flag set, use 0xc0000000 as the offset at which to search a virtual memory chunk on mmap(2); otherwise use 0xffffe000. So despite our entry not being documented, it seems that 0xffffe000 is the limit, which gives us almost the full 4GB. In any event, since we're talking about virtual address space exhaustion, it could also be a matter of fragmentation. Do we have ASLR active in OBS and might it help to turn it off? I know that we have MALLOC_CHECK_, which is quite slow in multi-threaded processes, but I'm not sure about the memory overhead. Aaron