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:49:30 UTC 2016
Thank you for the review.
I made the change and will be posting 2nd webrev shortly.
cheers
> On Jul 11, 2016, at 10:44 PM, David Holmes <david.holmes at oracle.com> wrote:
>
> Hi Gerard,
>
> Please include the bug number in the RFR subject - thanks.
>
> Adding the additional diagnostic info seems okay for debug builds.
>
> Two style nits with src/share/vm/classfile/dictionary.cpp
>
> 1. As Christian mentioned DEBUG_ONLY is preferred, but debug_only is presently used. I would not be adverse to going a global replace in this file in this case.
>
> 2. Please ensure there are spaces around operators, particularly in for loops e.g.:
>
> - good: 757 for (int i = 0; i < table_size(); i++) {
> - bad: 753 for (int i=0; i<TOP_COUNT; i++) {
>
> Thanks,
> David
>
> On 12/07/2016 3: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