RFR (M): [JVMCI] VM warning: Performance bug: SystemDictionary lookup_count=21831450 lookup_length=1275207287 average=58.411479 load=5.572844
Gerard Ziemski
gerard.ziemski at oracle.com
Wed Jul 13 16:52:41 UTC 2016
Thank you for the review.
I made the changes and will be posting 2nd webrev shortly.
cheers
> On Jul 12, 2016, at 8:29 AM, Ioi Lam <ioi.lam at oracle.com> wrote:
>
> Hi Gerard,
>
> The changes look good. A small nit here:
>
> 826 tty->print("%4d: hits %5.2f%c", ...., '%');
>
> This should be changed to
>
> 826 tty->print("%4d: hits %5.2f%%", ...);
>
> Also in hashtable.hpp:
>
> 129 long _hits;
>
> Is there any reason to not use 'int'? _lookup_count is an 'int'.
>
> Also, the terminology used by the VM is -- we have 1009 'buckets', and each bucket contains zero or more 'entries' in a link list.
>
> So the help message should be something like:
>
> 1st number: the bucket index
> 2nd number: the entry's index within this bucket
> 3rd number: the hit percentage of this entry
> 4th number: the hash index of this entry
>
> Thanks
> - Ioi
>
>
>
> On 7/11/16 10:25 AM, Gerard Ziemski wrote:
>> hi all,
>>
>> Please review this rather simple fix, which will print more info about SystemDictionary, so that we can hopefully draw some conclusion the next time we hit the “VM warning: Performance bug: SystemDictionary…” warning.
>>
>> Currently all we print is just the warning's 1st line below, but with this fix we show the following:
>>
>> -----------------------------
>> Java HotSpot(TM) 64-Bit Server VM warning: Performance bug: SystemDictionary lookup_count=6752 lookup_length=1010 average=0.149585 load=0.479683
>> Java system dictionary (table_size=1009, classes=484)
>> ^ indicates that initiating loader is different from defining loader
>> 1st number shows bucket index
>> 2nd number shows chain index within a bucket
>> 3rd number shows hit percentage of the bucket
>> 4th number shows hash index
>> 0:
>> 1:
>> 2:
>> 3: 0: 0.20%: 1763306205: jdk.internal.module.ModuleHashes, loader NULL class_loader
>> 3: 1: 0.20%: 1886526294: sun.nio.fs.UnixFileStoreAttributes, loader NULL class_loader
>> 3: 2: 0.20%: 220125461: java.lang.reflect.ReflectAccess, loader NULL class_loader
>> 4: 0: 0.08%: 915402137: jdk.internal.loader.BuiltinClassLoader$LoadedModule, loader NULL class_loader
>> 5:
>> .
>> .
>> .
>> 1003:
>> 1004: 0: 0.08%: 688417488: jdk.internal.reflect.ConstructorAccessor, loader NULL class_loader
>> 1005:
>> 1006:
>> 1007: 0: 0.08%: 400327811: java.lang.InterruptedException, loader NULL class_loader
>> 1008: 0: 0.11%: 1113735208: java.util.concurrent.atomic.AtomicBoolean, loader NULL class_loader
>>
>> Top 16 buckets:
>> 546: hits 2.76%
>> 183: hits 0.87%
>> 969: hits 2.37%s
>> 281: hits 0.95%
>> 957: hits 1.73%
>> 571: hits 16.67%
>> 221: hits 0.98%
>> 505: hits 0.84%
>> 727: hits 1.28%
>> 414: hits 1.73%
>> 569: hits 4.89%
>> 245: hits 0.89%
>> 253: hits 1.34%
>> 135: hits 0.95%
>> 457: hits 0.87%
>> 348: hits 1.23%
>>
>> Protection domain cache table (table_size=2017, classes=1)
>> entry 0x00007fe525019c20 value 0x00000006cfe147a8 strongly_reachable 0 next 0x0000000000000000
>> -----------------------------
>>
>> We now show the bucket index, the chain index (item index within the bucket), the hit ratio (successful lookup / all successful lookups) and hash code for verification.
>>
>> In the end, I believe that the way to actually fix this issue will be to increase the SystemDictionary size, but the warning will be now accompanied by more pertinent details, which should make it more useful on its own.
>>
>> open webrev: http://cr.openjdk.java.net/~gziemski/8138760_rev1
>> bug id: https://bugs.openjdk.java.net/browse/JDK-8138760
>>
>> Passes JPRT hotspot.
>>
>>
>> cheers
>>
>
More information about the hotspot-runtime-dev
mailing list