RFR (M): JDK-8030177: G1: Enable TLAB resizing
Jon Masamitsu
jon.masamitsu at oracle.com
Thu Jan 23 23:36:58 UTC 2014
Bengt,
http://cr.openjdk.java.net/~brutisso/8030177/webrev.01/src/share/vm/memory/genCollectedHeap.cpp.frames.html
An opportunity to remove _gens[] in another place? Since we
really only have two generations in GenCollectedHeap.
936 size_t GenCollectedHeap::tlab_used(Thread* thr) const {
937 size_t result = 0;
938 for (int i = 0; i < _n_gens; i += 1) {
939 if (_gens[i]->supports_tlab_allocation()) {
940 result += _gens[i]->tlab_used();
941 }
942 }
943 return result;
944 }
Can tlab_used() get Thread *thr from myThread() instead
of passing it in? It's somewhat confusing when a parameter
is passed in and then ignored a lot of the time.
Rest looks good.
Jon
On 01/23/2014 01:27 AM, Bengt Rutisson wrote:
>
> Hi all,
>
> I went through this change with Stefan Karlsson. Here is an updated
> webrev based on his suggestions:
>
> http://cr.openjdk.java.net/~brutisso/8030177/webrev.01/
>
> Here is a webrev with just the changes that Stefan suggested:
>
> http://cr.openjdk.java.net/~brutisso/8030177/webrev.01_delta/
>
> Thanks,
> Bengt
>
>
> On 2014-01-13 14:09, Bengt Rutisson wrote:
>>
>> Hi Thomas,
>>
>> On 1/13/14 1:14 PM, Thomas Schatzl wrote:
>>> Hi,
>>>
>>> On Thu, 2014-01-09 at 20:32 +0100, Bengt Rutisson wrote:
>>>> Hi everyone,
>>>>
>>>> Can I have a couple of reviews for this change?
>>>>
>>>> http://cr.openjdk.java.net/~brutisso/8030177/webrev.00/
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8030177
>>>>
>>>> Unlike the other collectors G1 did not use dynamic sizes for the TLABs
>>>> that the Java threads use for allocation. That means that the TLABs
>>>> when using G1 were all fixed size and very small. This patch adds
>>>> dynamic sizing of TLABs to G1 too. In performance testing this has
>>>> shown a 2-3% improvement across a range of benchmarks.
>>>>
>>>> One difference compared to other collectors is that the maximum TLAB
>>>> size in G1 has to be limited by the region size and not by the eden
>>>> size. Also, for the other collectors the used space for TLAB
>>>> allocation was deducted from the maximum TLAB size because this was
>>>> essentially what was left in eden. That is an assumption that happened
>>>> to work out, but it kind of breaks the abstraction. So, the method
>>>> CollectedHeap:: tlab_used() has been added to be more consistent about
>>>> the TLAB abstraction and to make it more straight forward to implement
>>>> in G1.
>>> threadLocalAllocBuffer.cpp:
>>>
>>> line 83: typo: allcoation -> allocation
>>> // These allcoation should ideally not be counted but since
>>> it is
>>> not possible
>>>
>>> Looks good. It's okay for me to just fix this without a re-review ;-)
>>
>> Thanks! I fixed the typo. :)
>>
>> Bengt
>>
>>
>>>
>>> Thomas
>>>
>>>
>>
>
More information about the hotspot-gc-dev
mailing list