RFR: Elastic TLABs for Shenandoah

Aleksey Shipilev shade at redhat.com
Thu Jul 12 16:51:40 UTC 2018


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



More information about the shenandoah-dev mailing list