RFR (M): JDK-8138760: [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
Thu Jul 14 14:17:42 UTC 2016


Thank you!

> On Jul 13, 2016, at 7:37 PM, David Holmes <david.holmes at oracle.com> wrote:
> 
> Looks good! Thanks Gerard.
> 
> David
> 
> On 14/07/2016 5:31 AM, Gerard Ziemski wrote:
>> hi all,
>> 
>> Here is a webrev 2, which incorporates the following feedback:
>> 
>> #1. Changed “debug_only" to “DEBUG_ONLY" (Christian, David), including all instances in the files where I used the macros
>> 
>> #2. Fixed the “for” loops (David)
>> 
>> #3. Using “unsigned” for hit counter instead of "long" (Ioi)
>> 
>> #4. Changed the help message (Ioi)
>> 
>> #5. Changed how I print ‘%’ (Ioi)
>> 
>> webrev:	http://cr.openjdk.java.net/~gziemski/8138760_rev2
>> bug id: https://bugs.openjdk.java.net/browse/JDK-8138760
>> 
>> 
>>> 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
>>> closed webrev:	http://javaweb.us.oracle.com/~gziemski/webrevs/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