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

Stefan Karlsson stefan.karlsson at oracle.com
Wed Apr 24 08:47:38 UTC 2019



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?

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