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
Mon Jul 11 17:25:41 UTC 2016


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