RFR: Elastic TLABs for Shenandoah

Roman Kennke rkennke at redhat.com
Thu Jul 12 17:17:41 UTC 2018


Am 12.07.2018 um 18:51 schrieb Aleksey Shipilev:
> http://cr.openjdk.java.net/~shade/shenandoah/elastic-tlabs/webrev.01/
> 
> Upstream has this nice new feature for G1:
>   https://bugs.openjdk.java.net/browse/JDK-8191471
> 
> This implements the handling on Shenandoah side, replacing our TLAB trimming hack.
> 
> It is actually three changesets in one:
> 
>  a) Refactor allocation path to accept ShenandoahAllocRequest tuple
>   This pushes the needed data through the allocation path down to the actual TLAB alloc.
> 
>  b) Elastic TLABs support for Shenandoah
>   This is a small change in FreeSet that adjusts TLAB allocations if current region cannot
>   satisfy the full TLAB size. It finally allows to ditch the TLAB trimming, and allow allocation
>   path to request region-sized TLAB without ill effects. Which alleviates the contention on
>   allocation lock, because we can now have 8x less calls to TLAB refill slowpath.
> 
>  c) Pacer should account actual size for elastic TLABs
>   This is the leftover change to give pacer the claimed tokens back if trimmed TLAB was allocated.
>   Some caveats in tracking that we are adding tokens back to the same phase budget needed to be
>   resolved.
> 
> Testing: tier3_gc_shenadnoah, benchmarks
> 
> Thanks,
> -Aleksey
> 


Patch looks good. Thanks!

Does it have any performance impact?

Cheers,
Roman



More information about the shenandoah-dev mailing list