Poor memory allocation performance with a lot of threads on 36 core machine
Witek via Digitalmars-d
digitalmars-d at puremagic.com
Thu Feb 18 05:59:58 PST 2016
On Thursday, 18 February 2016 at 13:10:28 UTC, Dicebot wrote:
> On 02/18/2016 02:00 PM, Witek wrote:
>> So, the question is, why is D / DMD allocator so slow under
>> heavy multithreading? The working set is pretty small (few
>> megabytes at most), so I do not think this is an issue with GC
>> scanning itself. Can I plug-in tcmalloc / jemalloc, to be
>> used as the underlying allocator, instead of using glibc? Or
>> is D runtime using mmap/srbk/etc directly?
>
> DMD/druntime use stop-the-world GC implementation. That means
> every time anything needs to be allocated there is possibility
> of collection cycle which will pause execution of all threads.
> It doesn't matter if there is much garbage - the very pause is
> the problem.
>
> Using allocations not controlled by GC (even plain malloc)
> should change
> situation notably.
The working set is pretty small, and I do not think GC collection
is triggered at all. I think the allocations itself are slow /
not scalable to multiple threads.
I am going to check some GC stats, or disable GC collections
completely, add some explicit 'scope(exit) delete ...;' where
necessary, and see if anything changes.
More information about the Digitalmars-d
mailing list