RFR: 8191471: Elastic TLABs for G1

Per Liden per.liden at oracle.com
Tue Apr 24 09:19:40 UTC 2018

Hi Stefan,

On 04/23/2018 02:57 PM, Stefan Johansson wrote:
> Hi,
> Please review these changes to lower the waste in G1 mutator regions.
> JBS: https://bugs.openjdk.java.net/browse/JDK-8191471
> Webrev: http://cr.openjdk.java.net/~sjohanss/8191471/00/

Looks good overall, just two comments:


  374   size_t minimal_tlab_size = 
MAX2(ThreadLocalAllocBuffer::compute_min_size(size), MinTLABSize);

Can we move the MAX2-logic into compute_min_size()? It seems to belong 
in there, rather than here?

  133   virtual HeapWord* allocate_new_tlab(size_t min_word_size,
  134                                       size_t desired_word_size,
  135                                       size_t* actual_word_size);

The argument names now vary between the collectors. I suggest we use the 
same names in all places and skip the "word" part. Something like: 
min_size, requested_size, actual_size?


> Summary
> G1 might waste excessive amount of memory due to allocations that would 
> span region boundaries. To lower this waste this patch addresses this 
> problem in two ways. TLAB allocations are now more flexible allowing the 
> size to be less then the desired amount as long as the allocation will 
> fit in the TLAB (defined by min_word_size in the call).
> The G1 allocation code also tries to minimize the waste by keeping two 
> active allocation regions so that a single large allocation won't cause 
> waste that could have been used for other allocations.
> Testing
> Functional testing through mach5 with hs-tier 1-3 and jdk-tier 1-3. 
> Performance testing locally and through aurora without seeing any 
> regressions.
> Thanks,
> Stefan

More information about the hotspot-gc-dev mailing list