RFR (S): Full GC mark without liveness stats
Roman Kennke
rkennke at redhat.com
Wed Nov 2 11:09:16 UTC 2016
Hi Aleksey,
you are correct, we don't need liveness counting during full-gc.
I'm not sure I like all the bools all over the place. But I don't see a
much better way for it either. :-)
10% makes me wonder if we can somehow speed up liveness counting. E.g.
we don't strictly need the liveness counters to be 100% correct. A good
estimate should be good enough. Dunno if that could help us?
I already made it use thread-local liveness arrays to avoid threads
stomping over each others threads... is there anything else we can do?
Cheers,
Roman
Am Dienstag, den 01.11.2016, 22:35 +0100 schrieb Aleksey Shipilev:
> Hi,
>
> I am not entirely sure this is a correct assumption, but if I read
> the
> code right, we don't need region liveness stats when doing mark for
> Full
> GC? Because we compact everything anyway?
>
> If we hack this away:
> http://cr.openjdk.java.net/~shade/shenandoah/fullgc-no-live-stats/we
> brev.01/
>
> ...then there is a repeatable +10% improvement for mark phase:
>
> # Before:
> Full GC Times = 94.29 s (avg = 8571.54 ms)
> Mark = 34.92 s (avg = 3174.47 ms)
> Drain Queues = 34.90 s (avg = 3172.31 ms)
> Weak References = 0.00 s (avg = 0.33 ms)
> Class Unloading = 0.01 s (avg = 0.80 ms)
> Calculate Addresses = 12.66 s (avg = 1150.98 ms)
> Adjust Pointers = 24.92 s (avg = 2265.87 ms)
> Copy Objects = 21.61 s (avg = 1964.49 ms)
>
> # After:
> Full GC Times = 90.51 s (avg = 8228.46 ms)
> Mark = 31.17 s (avg = 2833.41 ms)
> Drain Queues = 31.14 s (avg = 2831.36 ms)
> Weak References = 0.00 s (avg = 0.24 ms)
> Class Unloading = 0.01 s (avg = 0.77 ms)
> Calculate Addresses = 12.59 s (avg = 1144.15 ms)
> Adjust Pointers = 25.01 s (avg = 2273.75 ms)
> Copy Objects = 21.58 s (avg = 1961.43 ms)
>
> Thanks,
> -Aleksey
>
More information about the shenandoah-dev
mailing list