RFR: 8191471: Elastic TLABs for G1

Stefan Johansson stefan.johansson at oracle.com
Wed May 2 09:28:40 UTC 2018


Thanks for the review Per,

On 2018-04-24 11:19, Per Liden wrote:
> 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:
>
> src/hotspot/share/gc/shared/collectedHeap.cpp
> ---------------------------------------------
>
>  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?
>
I agree and I changed it. This will however change the logic in 
compute_size a bit, it didn't take MinTLABSize into consideration 
before, but now does. I still think the change is good though.
>
> src/hotspot/share/gc/shared/collectedHeap.hpp
> ---------------------------------------------
>  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?
>
Fixed.

New webrevs:
Full: http://cr.openjdk.java.net/~sjohanss/8191471/02
Inc: http://cr.openjdk.java.net/~sjohanss/8191471/01-02

Will re-run testing before pushing to make sure the small change don't 
cause any trouble.

Thanks,
Stefan

> cheers,
> Per
>
>>
>> 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