RFR (XS) 8222818: NMT summary could show the GC in use

Stefan Karlsson stefan.karlsson at oracle.com
Wed Apr 24 09:25:52 UTC 2019


On 2019-04-24 11:18, David Holmes wrote:
> Hi Stefan,
> 
> On 24/04/2019 6:47 pm, Stefan Karlsson wrote:
>>
>>
>> On 2019-04-24 00:17, David Holmes wrote:
>>> On 24/04/2019 6:50 am, Zhengyu Gu wrote:
>>>>
>>>>
>>>> On 4/23/19 2:53 PM, Eric Caspole wrote:
>>>>> Hi Zhengyu,
>>>>> Hopefully this email comes through in monospace, the alignment is 
>>>>> OK for me:
>>>>>
>>>>>
>>>>> currently:
>>>>>
>>>>> -                        GC (reserved=379056KB, committed=93220KB)
>>>>>                              (malloc=39184KB #2159)
>>>>>                              (mmap: reserved=339872KB, 
>>>>> committed=54036KB)
>>>>>
>>>>>
>>>>> My version:
>>>>>
>>>>>
>>>>> -                GC - g1 gc (reserved=379090KB, committed=93254KB)
>>>>>                              (malloc=39218KB #2194)
>>>>>                              (mmap: reserved=339872KB, 
>>>>> committed=54036KB)
>>>>>
>>>>>
>>>>> so it is aligned going to the left off the parenthesis like the 
>>>>> current version. Is that what you mean? I like the way the GC 
>>>>> stands out like this but it is OK to put it in the parentheses on 
>>>>> the right.
>>>>
>>>> Different GC has different name, it is hard to get them all aligned 
>>>> right, and it does not worth the effort.
>>>
>>> AFAICS The code already "reserves" 26 characters just to print "GC", 
>>> which is right-aligned. So all this does is take some of the 24 
>>> existing spaces and fill them in with the GC name so you end up with:
>>>
>>>                  GC - g1 gc (reserved=379056KB, committed=93220KB)
>>>                             (malloc=39184KB #2159)
>>>                             (mmap: reserved=339872KB, committed=54036KB)
>>>
>>> or
>>>          GC - shenandoah gc (reserved=379056KB, committed=93220KB)
>>>                             (malloc=39184KB #2159)
>>>                             (mmap: reserved=339872KB, committed=54036KB)
>>>
>>> etc. Only nit is that 26 seems to small for "concurrent mark sweep 
>>> gc". Also the alignment of 26 could be specified dynamically based on 
>>> the length of the hs_err_name() string if needed.
>>
>>
>> FYI, the name of the function hs_err_name() was chosen to deter people 
>> from using it in other places. Maybe it's time to add another function 
>> in GCConfig that return better names? Maybe use names that match our 
>> -XX:Use<Name>GC flags?
> 
> I was thinking more simply that we might rename hs_err_name() to name() 
> and make the strings a little nicer e.g. "G1 GC" instead of "g1 gc". But 
> if you want to add more general GC functionality here that's up to you :)

Either way works for me.

We tried to change the name before, but it was met with resistance:
https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2018-April/021937.html

StefanK

> 
> Cheers,
> David
> 
>> If you would find that useful, I've created a patch that exposes three 
>> new functions that return the flag names, or parts of it:
>> http://cr.openjdk.java.net/~stefank/8222818/gcFlagNames/webrev.01/
>>
>> GCConfig::flag_name() gives:
>>   UseConcMarkSweepGC
>>   UseEpsilonGC
>>   UseG1GC
>>   UseParallelGC
>>   UseSerialGC
>>   UseShenandoahGC
>>   UseZGC
>>
>> GCConfig::flag_name_no_use() gives:
>>   ConcMarkSweepGC
>>   EpsilonGC
>>   G1GC
>>   ParallelGC
>>   SerialGC
>>   ShenandoahGC
>>   ZGC
>>
>> GCConfig::flag_name_no_use_no_gc() gives:
>>   ConcMarkSweep
>>   Epsilon
>>   G1
>>   Parallel
>>   Serial
>>   Shenandoah
>>   Z
>>
>> The universe.cpp changes, are only temporary changes to test the output.
>>
>> StefanK
>>
>>>
>>> David
>>> -----
>>>
>>>>
>>>> So, my suggestion is to place GC name inside parentheses, and you 
>>>> don't have to deal with indents to the left.
>>>>
>>>> e.g.
>>>>
>>>>
>>>> -                     GC (reserved=379056KB, committed=93220KB by g1 
>>>> gc)
>>>>                            (malloc=39184KB #2159)
>>>>                            (mmap: reserved=339872KB, committed=54036KB)
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> -Zhengyu
>>>>
>>>>>
>>>>> Thanks,
>>>>> Eric
>>>>>
>>>>>
>>>>>
>>>>> On 4/22/19 21:57, Zhengyu Gu wrote:
>>>>>>
>>>>>>
>>>>>> On 4/22/19 8:19 PM, David Holmes wrote:
>>>>>>> Hi Eric,
>>>>>>>
>>>>>>> On 23/04/2019 8:13 am, Eric Caspole wrote:
>>>>>>>> Hi, could I have reviews and any opinions on this little change 
>>>>>>>> to show the GC name in the NMT output, as this helps us to more 
>>>>>>>> easily triage performance data.
>>>>>>>
>>>>>>> The idea seems fine.
>>>>>>
>>>>>>>
>>>>>>> For the implementation wouldn't it be simpler to do something like:
>>>>>>>
>>>>>>> if (flag == mtGC) {
>>>>>>>    out->print("%s - %s (", NMTUtil::flag_to_name(flag),
>>>>>>>                            GCConfig::hs_err_name());
>>>>>>> } else {
>>>>>>>    out->print("-%26s (", NMTUtil::flag_to_name(flag));
>>>>>>> }
>>>>>>>
>>>>>> Yes, this is simpler.
>>>>>>
>>>>>> I don't like where the name is placed, it screws up section 
>>>>>> alignments. I would prefer to place name inside parenthesis. e.g.
>>>>>>
>>>>>> - GC (g1 gc reserved=379056KB, committed=93220KB)
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> -Zhengyu
>>>>>>
>>>>>>> and skip the need for a local buffer and snprintf?
>>>>>>>
>>>>>>> Aside: it's probably used in enough different contexts that 
>>>>>>> GCConfig::hs_err_name should be renamed.
>>>>>>>
>>>>>>> Also if the VM terminates during initialization is it possible 
>>>>>>> for this code to be executed before the GCConfig has been setup? 
>>>>>>> And if so how will it behave?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> David
>>>>>>>
>>>>>>>> This passed tier 1 and 2.
>>>>>>>> Thanks,
>>>>>>>> Eric
>>>>>>>>
>>>>>>>>
>>>>>>>> JBS:
>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8222818
>>>>>>>>
>>>>>>>> webrev:
>>>>>>>> http://cr.openjdk.java.net/~ecaspole/JDK-8222818/02/webrev/


More information about the hotspot-runtime-dev mailing list