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 <yasue...@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, k...@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 <yasue...@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, k...@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 <yasue...@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 >>>>> >>>>> >>>> >>
signature.asc
Description: Message signed with OpenPGP using GPGMail