gc_ms2_tuning branch

Nick Wellnhofer wellnhofer at aevum.de
Mon Sep 27 14:19:02 UTC 2010


On 27/09/2010 02:58, Vasily Chekalkin wrote:
> Hello.
>
> On Mon, Sep 27, 2010 at 4:04 AM, Nick Wellnhofer<wellnhofer at aevum.de>  wrote:
>> It also turned out that the double linked lists in the new GC code are quite
>> a hit on performance and memory consumption. I replaced them with a simple
>> array as GC mark stack but afaics the double linked lists will also be used
>> for Generational GC. So maybe this approach doesn't work out.
>
> Yes, main purpose of using lists was to simplify GenGC implementation.
> If we want to use your approach we have implement compacting to avoid
> sweeping all memory after marking young generations.

Can't we use an array that holds all the PMC pointers of the young 
generation?

>> The dynamic threshold is a space-time tradeoff. Generally, lower values
>> cause more GC runs, more execution time and less memory consumption. But on
>> memory limited machines, a lower threshold can also improve general
>> perfomance if it avoids swapping.
>
> I think dynamic threshold should be similar to JVM's schema: maximize
> throughput with minimizing pause time.
> http://www.oracle.com/technetwork/java/ergo5-140223.html

Minimizing pause time is difficult, of course. Something like the 
"throughput goal" should be easy to implement though. But given how slow 
our GC still is, it will cause a lot of memory usage if you want to 
restrict the time spent in GC to low values.

I think a memory based threshold is a good default that should just work 
out of the box with any kind of workload.

Nick


More information about the parrot-dev mailing list