[phobos] Phobos unit tests running out of memory
Rainer Schuetze
r.sagitario at gmx.de
Tue Sep 4 15:39:07 PDT 2012
On 05.09.2012 00:07, Andrei Alexandrescu wrote:
> On 9/4/12 9:38 PM, Rainer Schuetze wrote:
>> IIRC it was removed because compile times more than doubled.
>
> That always struck me as a simple parameter choosing problem. Can't we
> set the limit at which the GC enters in action high enough so only the
> few programs that really need a lot of RAM actually incur a collection?
> What am I missing?
>
>> Regarding the bail out with less than 1 GB allocated I suspect that the
>> dmc runtime uses VirtualAlloc with sizes below the allocation
>> granularity (which is 64kB on 32-bit windows). This waists virtual
>> address space, so another allocation fails even if the actually
>> allocated physical memory is well below the 2GB limit.
>>
>> The MS-cl-compiled version of dmd does not exhibit this problem (and
>> compiles D code considerably faster).
>
> Interesting. Can we fix that?
If I read the dmc runtime library sources correctly (heap32/heap.cpp),
heap allocations work with a minimum chunk size of 64 kB but
unfortunately 4 bytes get added to the requested size before calling
VirtualAlloc. That actually blocks 128kB of virtual address space, but
only 64k+4 bytes are used.
So, I recommend just aligning to the next multiple of 64kB in
RTLHeap::MoreCore. Walter, can you rebuild snn.lib with an appropriate fix?
More information about the phobos
mailing list