D2 port of Sociomantic CDGC available for early experiments

Rainer Schuetze via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Oct 30 11:53:10 PDT 2014



On 30.10.2014 04:02, Martin Nowak wrote:
> On Wednesday, 8 October 2014 at 18:25:00 UTC, Rainer Schuetze wrote:
>> I'm benchmarking my Windows version of a concurrent GC with it. It
>> does quite a lot of allocations, and this is causing some serious
>> trouble because marking cannot compete with the rate of allocation,
>> causing some tests to allocate a lot of memory, slowing down marking
>> even more. I'm still looking for a solution...
>
> Well ultimatively you got to throttle your mutators to a throughput that
> the GC can handle. That's actually a nice thing about the forking GC,
> the mutator has to pay for the COW page faults, so there is some
> built-in throttling.
> How does your GC work?

There's sort of a description here: 
http://rainers.github.io/visuald/druntime/concurrentgc.html

There are actually two variations:

- one uses "Memory-Write-Watches" to detect modified pages and rescans 
all pages modified during a background scan. It could be improved to 
reschedule the second scan to the background, again, until there are 
only few modified pages.

- the other uses COW protection on the pool memory, but has to copy 
modified memory back when restoring unprotected memory mappings.


More information about the Digitalmars-d-announce mailing list