[D-runtime] D Concurrent GC

Leandro Lucarella luca at llucax.com.ar
Tue Sep 28 18:31:48 PDT 2010


Sean Kelly, el 28 de septiembre a las 07:49 me escribiste:
> >> I know some additional performance tuning may need to be done
> >> with your parallel collection scheme, but I'd imagine that could
> >> always be turned off so it behaves pretty much like the current GC?
> > 
> > Right now, for the only real program I tested (Dil generating the entire
> > Tango docs), is way faster than the basic collector (about 2 times
> > faster on single-core and 2.5 times faster on multi-core), other are way
> > faster too but some tests that are very GC centric (like the shootout
> > binary trees test) are a little slower, but I don't think that's a fair
> > test for this kind of collector.
> 
> Why are these cases slower?  Do collections occur more often overall?

I'm not 100% sure yet, but I think on one side, the extra overhead
imposed by fork()ing and waiting is bigger than the gain the concurrency
provides (which is almost zero for programs that doesn't do any actual
work except calling GC code). Then, there is the problem of the static
data being much bigger in my GC because of TypeInfos.

> > This is talking about total run-time, the maximum pause is reduced even
> > much more, about 10x or more (with exceptions, but again the exceptions
> > are in not-very-realistic test programs).
> > 
> > So I think performance-wise, it deserves to be the default collector (at
> > least in Linux). I don't know stability-wise though :)
> 
> Vetting the GC will be tricky because basically no one will take the
> trouble to rebuild druntime with it to try it out.  I think we'll
> simply have to do our best to make sure it works correctly and then
> just switch over and wait for bug reports.  Do you have any objection
> to it being distributed under the Boost license?

Not at all. I have no problems with any license, the only care I would
like to take is, I hope the GC can be used in both Druntime and Tango.
The GC is based on code written by Walter, you and David Friedman
according to the sources, so I wanted to eventually ask all of you about
the licensing :). From my side, I'm willing to free the code in whatever
license is needed to integrate it to whatever anyone wants to integrate
it.

> >> I'll have to see what I've changed in the GC since creating druntime
> >> as well.  Nothing major I think though.
> > 
> > I think the array appending changes are the bigger since the last time
> > I checked.
> 
> There's an APPENDABLE flag now.  I'll check the diffs in the GC code
> to see if there's anything else.  Thanks for the reply!

Sure! Thanks for taking interest on this!

-- 
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
DIEZ "PUNGAS" MENOS
	-- Crónica TV


More information about the D-runtime mailing list