RFR: 8191471: Elastic TLABs for G1

Per Liden per.liden at oracle.com
Wed May 2 11:49:51 UTC 2018


On 05/02/2018 11:28 AM, Stefan Johansson wrote:
> 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.

Looks good!

/Per

> 
> 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