RFR: Single GCTimer shared by all operations
Roman Kennke
rkennke at redhat.com
Wed Jan 31 12:12:46 UTC 2018
Am 31.01.2018 um 12:42 schrieb Aleksey Shipilev:
> On 01/31/2018 12:40 PM, Roman Kennke wrote:
>> Am 31.01.2018 um 12:28 schrieb Aleksey Shipilev:
>>> http://cr.openjdk.java.net/~shade/shenandoah/single-gc-timer/webrev.01/
>>>
>>> Degenerated GC exposed a wrinkle in our GCTimer handling. Full GC has the separate GCTimer (for
>>> legacy reasons?). All other operations run with GCTimer from ShHeap. Degenerated GC is peculiar: it
>>> may start as the usual operation, but then *continue* as upgraded to Full GC. GCTimers then start to
>>> misbehave with asserts like:
>>>
>>> # assert(_phases->length() <= 1000) failed: Too many recored phases?
>>>
>>> The solution/cleanup is to use a single GCTimer, basically letting Full GC using the GCTimer from
>>> ShHeap.
>>>
>>> Testing: hotspot_gc_shenandoah
>>>
>>> Thanks,
>>> -Aleksey
>>>
>>
>> Seems good. Is there a difference between STWGCTimer and ConcurrentGCTimer that may fall on our feet?
>
> I don't think so.
>
> The bigger question if that fixes the failures that you see in tests? Because I cannot reproduce the
> failure on my local machine.
>
> -Aleksey
>
Seems good in the few runs I could make. Let's push it and undergo more
testing when it's in.
Roman
More information about the shenandoah-dev
mailing list