RFR (S): 8243672: Short term pause time ratio calculation in G1 off
stefan.johansson at oracle.com
stefan.johansson at oracle.com
Tue May 19 13:31:49 UTC 2020
On 2020-05-19 15:16, Thomas Schatzl wrote:
> Hi Kim, Stefan,
>
> thanks for your reviews.
>
> On 18.05.20 16:39, Kim Barrett wrote:
>>> On May 18, 2020, at 8:42 AM, stefan.johansson at oracle.com wrote:
>>>
>>> Hi Thomas,
>>>
>>> On 2020-05-18 10:45, Thomas Schatzl wrote:
>>>> Hi all,
>>>> can I have reviews for this change that improves our calculation
>>>> of the short term pause time ratio calculation in G1?
>>>> Previously we calculated the short term pause time ratio by assuming
>>>> that the current pause occurred X times in the long term pause time
>>>> tracking interval spanning X garbage collections.
>>>> That, unfortunately, emphasizes the current gc pause, giving
>>>> completely off results particularly for pause time increases e.g.
>>>> during mixed gc (see the comment in the CR for a sample
>>>> calculation), in turn tending to affect heap sizing negatively in
>>>> that the heap expansion is far higher than expected.
>>>> (There is no real issue at the moment for too low results as we do
>>>> not use these calculated time ratios to shrink the heap yet).
>>>> Arguably now the short term gc time ratio will be more spiky now
>>>> with that change, but short term pause time ratio is not the only
>>>> metric used for heap expansion, single outliers are not relevant
>>>> anyway, and there are limits on the per-GC sizing too.
>>>> So overall it mostly works out as before with significant
>>>> improvements in heap sizing behavior together with JDK-8244603
>>>> (which this change will be pushed with.)
>>>> CR:
>>>> https://bugs.openjdk.java.net/browse/JDK-8243672
>>>> Webrev:
>>>> http://cr.openjdk.java.net/~tschatzl/8243672/webrev/index.html
>>>
>>> Looks good,
>>
>> Looks good to me too.
>>
>>> Just one thing:
>>> src/hotspot/share/gc/g1/g1Policy.cpp
>>> ---
>>> 122 double now = os::elapsedTime();
>>> 123 _analytics->update_recent_gc_times(now, 0.0);
>>>
>>> This is added to G1Policy::init() and two of the three things that
>>> are update by this call has already been set in the G1Analytics
>>> constructor. What do you think about adding
>>> _recent_gc_times_ms->add(0.0) to the constructor instead of this call?
>>
>> +1
>>
>
> Actually this code is unnecessary and can be removed.
>
> New webrev:
> http://cr.openjdk.java.net/~tschatzl/8243672/webrev.0_to_1 (diff)
> http://cr.openjdk.java.net/~tschatzl/8243672/webrev.1 (full)
Even better, ship it.
Thanks,
Stefan
>
> Thanks,
> Thomas
More information about the hotspot-gc-dev
mailing list