RFR(s): 8189864: Provide an ascii map to visualize metaspace fragmentation

Thomas Stüfe thomas.stuefe at gmail.com
Wed Oct 25 04:51:46 UTC 2017


Hi all,

could I please have your thoughts and reviews for this enhancement:

Issue:  https://bugs.openjdk.java.net/browse/JDK-8189864
Webrev: http://cr.openjdk.java.net/~stuefe/webrevs/8189864-
metaspace-map/webrev.00/webrev/

At SAP, we added a something we call a metaspace map to the metaspace
analysis functions. This is a very simple ASCII print of the metaspace
layout. It shows the composition of the VirtualSpaceNodes on a chunk basis.
It facilitates examining fragmentation and has been proven useful when
experimenting with the metaspace allocator.

This change adds the map printing code and invokes it if a Metaspace OOM
occurs and -Xlog:gc+metaspace+freelist=debug is active (in this case, we
already print out a bunch of things). We also may consider adding this to
NMT or as a jcmd addition, but I did not want to overload the patch.

Example output looks like this (mind that this will only make sense with a
monospaced font). Dots indicate starts of chunks. Letters indicate chunk
type - (H)umongous, (M)edium, (S)mall (X)specialized - with lower case
letters indicating
a free chunk, upper case letters indicating a chunk in use.

0x0000000100000000:   ......
                      xxxxxxHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
0x0000000100020000:
                      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
0x0000000100040000:
                      HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
0x0000000100060000:   . . . . . . . . . . . . . .
                      SSSSSSSSSSSSMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMSSSSSSSSMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0x0000000100080000:   . . . .
                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0x00000001000a0000:   . . . .
                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0x00000001000c0000:   . . . .
                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0x00000001000e0000:   . . . .
                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
0x0000000100100000:   . . . . . . . . . . . . . . . . . . . . . . . .
                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMSSSSMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
0x0000000100120000:   . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                      SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS


Thank you!

Thomas


More information about the hotspot-runtime-dev mailing list