RFR: Pacer should account allocation waste and unsuccessful pacing in the budget

Aleksey Shipilev shade at redhat.com
Thu Apr 5 16:28:31 UTC 2018


On 04/05/2018 03:50 PM, Aleksey Shipilev wrote:
> http://cr.openjdk.java.net/~shade/shenandoah/pacing-waste/webrev.01/
> 
> I have been testing the intended property that with large enough pacing delay we would Degenerate
> and Full GC very rarely. We are almost there, if we fix these two issues:
> 
>  a) Allocations can waste some space, either due to early retirement of the region, or due to
> humongous region leftovers. We need to tell Pacer that we have wasted that space, otherwise it would
> overestimate the space available.
> 
>  b) Unsuccessful pacing allocates anyway, but it does not claim the budget! Which means, the
> unsuccessful pacing comes completely under the radar, while we should really claim the budget
> forcefully, so subsequent allocations wait for GC to catch up too.
> 
> Both these things require pacing budget to be signed, therefore we switch to intptr_t.
> 
> Testing: hotspot_gc_shenandoah, LRUFragger with max-pacing-delay=10s and 85G/100G LDS runs w/o degen

After some performance testing (actually hotspot_gc_shenandoah was way too long!), I realized the
"idle" pacing was fubar-ed, bcause we need to notify ShConcThread about allocation waste too!

Refactored to make it clear:
  http://cr.openjdk.java.net/~shade/shenandoah/pacing-waste/webrev.02/

Still passes hotspot_gc_shenandoah, allocation pressure tests, LRUFragger.

Thanks,
-Aleksey


More information about the shenandoah-dev mailing list