G1 STW phases and FGC column in jstat

Yasumasa Suenaga yasuenag at gmail.com
Thu Mar 3 13:23:54 UTC 2016


Hi all,

I've uploaded PoC of PerfCounter for STW phase in concurrent GC:

   hotspot: http://cr.openjdk.java.net/~ysuenaga/perfcounter-for-cgc/hotspot/
       jdk: http://cr.openjdk.java.net/~ysuenaga/perfcounter-for-cgc/jdk/

These patches makes new jstat column CGC and CGCT as below:
-------------
$ jstat -gc 53494 3000
  S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT
  0.0    0.0    0.0    0.0    4096.0    0.0     28672.0      0.0     4480.0 948.9  384.0   77.6       0    0.000   0      0.000   0      0.000    0.000
  0.0   1024.0  0.0   1024.0  3072.0    0.0     28672.0      0.0     4864.0 2969.0 512.0  276.0       1    0.063   0      0.000   2      0.016    0.080
-------------

They are shows STW phase in concurrent GC.

   CMS: Initial Mark and Remark
    G1: Remark and Cleanup

GCT is sum of YGCT, FGCT, and CGCT.


Can be this change accepted?
If so, I will file it to JBS and will send RFR.

I cannot access JPRT.
So I need a sponsor.


Thanks,

Yasumasa


On 2016/03/02 23:19, Yasumasa Suenaga wrote:
> It is not difficult to create webrev for this proposal.
> However, this proposal affects to jstat output, and
> I cannot access JPRT.
> So I want to find sponsor for it at first.
>
> Could somebody be a sponsor?
>
>
> Yasumasa
>
>
> On 2016/03/02 22:29, kirk at kodewerk.com wrote:
>> Hi Yasumasa,
>>
>> It all sounds reasonable and of course the impact on downstream tooling vs the value of the change must be evaluated. In this case I think adding a CGC counter makes sense especially in prep for G1 becoming default in 9.
>>
>> Regards,
>> Kirk
>>
>>> On Mar 2, 2016, at 6:58 AM, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>>
>>> Hi Kirk,
>>>
>>> Agree to you.
>>> However, I use occasional FGC counter at CMS as below:
>>>
>>> 1. Check major collection occurrence
>>>       Some production systems have large memory as Java heap,
>>>       and they are not set GC log.
>>>       If their CPU usage becomes high, I want to check GC execution.
>>>       (Of course, we have to check any other points :-) )
>>>
>>> 2. Core image analysis
>>>       If JVM is crashed, I want to check PerfCounter to know situation.
>>>       (In the past, I sometimes encountered crash at GC worker thread.)
>>>
>>> I guess that I will want to check them at G1.
>>>
>>> Thus, at least, I want to add PerfCounter for CGC (and add JVMTI event hook).
>>> However, this proposal will affect to jstat spec.
>>> So I want to discuss about it before filing to JBS.
>>>
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>>
>>> On 2016/03/02 19:02, kirk at kodewerk.com wrote:
>>>> Hi Yasumasa,
>>>>
>>>> Good question. I’ve never considered CMS to be a Full GC. This implies that there should be separate performance counters for CMS pause phases as it is possible to have FGC. Of course a FGC during CMS maybe user triggered, triggered outside a CMS cycle, interrupts a CMS cycle, or interrupts a CMS phase. I’m not sure how much of a distinction one needs to make here as that could be a quick broader discussion. Certainly the purpose isn’t to recreate the GC logs in these performance counters. But at the very least not having a distinction between full and a STW-CMS phase is kind of misleading in my opinion.
>>>>
>>>> Regards,
>>>> Kirk
>>>>
>>>>> On Mar 1, 2016, at 5:03 PM, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>>>>
>>>>> Hi Kirk,
>>>>>
>>>>>> It is also incorrect to count initial mark and remark in CMS as a FGC.
>>>>>
>>>>> Though, how can we check execution of major collection without GC log?
>>>>> Should we add new PerfCounter for CGC (and add CGC column to jstat output)?
>>>>>
>>>>>
>>>>> Yasumasa
>>>>>
>>>>>
>>>>> On 2016/03/02 6:35, kirk at kodewerk.com wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I think it is incorrect to count remark and cleanup as FGC. They are not full collections. It is also incorrect to count initial mark and remark in CMS as a FGC. It is unfortunate that this is counted this way.
>>>>>>
>>>>>> Regards,
>>>>>> Kirk
>>>>>>
>>>>>>> On Mar 1, 2016, at 8:56 AM, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I wonder that STW phases (Remark and Cleanup) at G1 are not counted in jstat FGC column.
>>>>>>> For example, Initial Mark and Remark at CMS are counted as FGC.
>>>>>>>
>>>>>>> For consistency, I think that G1 STW phases should be counted as FGC.
>>>>>>> What do you think about it?
>>>>>>>
>>>>>>> If it is accepted, I will file it to JBS and will upload webrev.
>>>>>>>
>>>>>>>
>>>>>>> suggested fix:
>>>>>>> ----------------------
>>>>>>> diff -r 8a103ba9a7b2 src/share/vm/gc/g1/g1MonitoringSupport.cpp
>>>>>>> --- a/src/share/vm/gc/g1/g1MonitoringSupport.cpp    Mon Feb 29 22:54:24 2016 +0900
>>>>>>> +++ b/src/share/vm/gc/g1/g1MonitoringSupport.cpp    Tue Mar 01 23:43:30 2016 +0900
>>>>>>> @@ -103,7 +103,7 @@
>>>>>>>    //   name "collector.1".  In a generational collector this would be the
>>>>>>>    // old generation collection.
>>>>>>>    _full_collection_counters =
>>>>>>> -    new CollectorCounters("G1 stop-the-world full collections", 1);
>>>>>>> +    new CollectorCounters("G1 stop-the-world phase", 1);
>>>>>>>
>>>>>>>    // timer sampling for all counters supporting sampling only update the
>>>>>>>    // used value.  See the take_sample() method.  G1 requires both used and
>>>>>>> diff -r 8a103ba9a7b2 src/share/vm/gc/g1/vm_operations_g1.cpp
>>>>>>> --- a/src/share/vm/gc/g1/vm_operations_g1.cpp    Mon Feb 29 22:54:24 2016 +0900
>>>>>>> +++ b/src/share/vm/gc/g1/vm_operations_g1.cpp    Tue Mar 01 23:43:30 2016 +0900
>>>>>>> @@ -230,6 +230,8 @@
>>>>>>>    G1CollectedHeap* g1h = G1CollectedHeap::heap();
>>>>>>>    GCTraceTime(Info, gc) t(_printGCMessage, g1h->gc_timer_cm(), GCCause::_no_gc, true);
>>>>>>>    IsGCActiveMark x;
>>>>>>> +  SvcGCMarker sgcm(SvcGCMarker::OTHER);
>>>>>>> +  TraceCollectorStats tcs(g1h->g1mm()->full_collection_counters());
>>>>>>>    _cl->do_void();
>>>>>>> }
>>>>>>>
>>>>>>> ----------------------
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Yasumasa
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>


More information about the hotspot-gc-dev mailing list