ZGC: RFR: 8207756: jstat should show CGC STW phases of ZGC

Per Liden per.liden at oracle.com
Tue Aug 7 10:36:20 UTC 2018


Hi,

On 07/27/2018 04:31 PM, Yasumasa Suenaga wrote:
> Hi Erik, Per,
> 
> Thank you for your comment.
> I uploaded new webrev. It has CGC counter in ZServiceability.
> 
>    http://cr.openjdk.java.net/~ysuenaga/JDK-8207756/webrev.01/
> 
> I know ZGC has three STW phases. They are called by VM_ZOperation. So I 
> had added CGC counter in it at first. However I agree with you if 
> ZServiceability should have it.

In general, I think jstat is in such a bad state that I'm hoping we long 
term can either deprecate/remove it or replace it with a better tool. As 
you know, jstat just makes too many assumptions and is a really bad fit 
for concurrent collectors in general. Anyway, let's just play along and 
try to make jstat happy for now.

I took the liberty of making some cleanups and adjustments to your patch.

http://cr.openjdk.java.net/~pliden/8207756/webrev.0

I'm currently running it through our testing.

cheers,
Per

> 
> 
> Yasumasa
> 
> 
> On 2018/07/26 23:19, Erik Österlund wrote:
>> Hi Yasumasa,
>>
>> There is only one global instance of CollectorCounters. Do we really 
>> have to pass it around into constructors and dump it in ZDriver?
>> I don't see why it would be in any way problematic to just put this 
>> global instance of counters in ZServiceabilityCounters. And put the 
>> TraceCollectorStats tcs(_cgc_counters); stuff in 
>> ZServiceabilityCountersTracer or something like that.
>>
>> Also I saw this: _cgc_counters = new CollectorCounters("Z 
>> stop-the-world phases", 2);
>>
>> Does this assume there are two pauses for a ZGC collection cycle? 
>> There are at least 3, but possibly more:
>>
>> 1) Mark start
>> 2) Mark end (this could recur multiple times due to unlucky races with 
>> mutators resurrecting weak references right before hitting mark end, 
>> causing a new concurrent phase if a large object graph was reachable 
>> from this weak ref). So we really can't know for sure how many pauses 
>> there will be.
>> 3) Relocate start (done after reference processing and concurrent 
>> selection of relocaiton set)
>>
>> Thanks,
>> /Erik
>>
>> On 2018-07-26 15:44, Yasumasa Suenaga wrote:
>>> CC'ing to hotspot-gc-dev
>>>
>>> Hi Per,
>>>
>>> I've looked at ZServiceabilityCounters in zServiceability.cpp .
>>> IMHO it is unsuitable because CGC counter means STW in concurrent GC. 
>>> So I think it is suitable to implement in VMOperation for ZGC.
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>>
>>> On 2018/07/26 22:30, Per Lidén wrote:
>>>> Hi,
>>>>
>>>> Please have a look at the zServiceability class, which is where code 
>>>> like this is intended to live.
>>>>
>>>> /Per
>>>>
>>>>> On 26 Jul 2018, at 14:30, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>>>>
>>>>> PING: Could you review it?
>>>>>
>>>>>>    webrev: 
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8207756/webrev.00/
>>>>>
>>>>>
>>>>> Yasumasa
>>>>>
>>>>>
>>>>>> On 2018/07/18 11:59, Yasumasa Suenaga wrote:
>>>>>> Hi all,
>>>>>> Please review this change:
>>>>>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8207756
>>>>>>    webrev: 
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8207756/webrev.00/
>>>>>> jstat shows CGC STW phases as CGC and CGCT fields since JDK-8153333 .
>>>>>> However, ZGC does not adapt to it yet as following:
>>>>>> ```
>>>>>> $ jstat -gc 1234 1 1
>>>>>>   S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT 
>>>>>> CGC CGCT GCT
>>>>>>    - - - - - - 514048.0 12288.0 4352.0 3731.2 0.0 0.0 - - - - - - 
>>>>>> 0.000
>>>>>> ```
>>>>>> I uploaded webrev which is for jdk/jdk repo. Please tell me if it
>>>>>> should be for zgc repo.
>>>>>> I'm not an author of ZGC. So I need a sponsor.
>>>>>> (I'm a Reviewer of jdk. If this change should be pushed to jdk/jdk,
>>>>>> please tell me. I will push it after reviewing.)
>>>>>> Thanks,
>>>>>> Yasumasa
>>>>
>>



More information about the hotspot-gc-dev mailing list