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