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

Thomas Stüfe thomas.stuefe at gmail.com
Wed Nov 1 07:20:24 UTC 2017


Hi Goetz,

On Mon, Oct 30, 2017 at 1:49 PM, Lindenmaier, Goetz <
goetz.lindenmaier at sap.com> wrote:

> Hi Thomas,
>
> the change looks good and I know we have made good use of this
> already.
>
> Can you look into the chunks? It could be useful to know that,
> for example, a medium chunk is used by a  class loader, but
> still mostly empty (i.e., empty but not free).  Well, there is no
> third variant after lower and upper case,  but maybe empty
> parts could be indicated in the line with the dots by 'e's (obviously
> at the granularity of small chunks).
>
> Thanks,
>   Goetz.
>
>
thank you for the review!

Indicating which chunks are filled to what degree can certainly be done.
Question is how useful this is (see Zhengyu's work for
https://bugs.openjdk.java.net/browse/JDK-8189688), because within chunks
there is no fragmentation, so the in-chunk map could look rather
unexciting. I will take a look when I am back next week.

Kind Regards, Thomas

> -----Original Message-----
> > From: hotspot-runtime-dev [mailto:hotspot-runtime-dev-
> > bounces at openjdk.java.net] On Behalf Of Thomas Stüfe
> > Sent: Wednesday, October 25, 2017 6:52 AM
> > To: hotspot-runtime-dev at openjdk.java.net
> > Subject: RFR(s): 8189864: Provide an ascii map to visualize metaspace
> > fragmentation
> >
> > 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
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > HHHHHHHHH
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > 0x0000000100020000:
> >                       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > HHHHHHHHH
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > 0x0000000100040000:
> >                       HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > HHHHHHHHH
> > HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
> > 0x0000000100060000:   . . . . . . . . . . . . . .
> >                       SSSSSSSSSSSSMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMSSSSSSSSMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > M
> > 0x0000000100080000:   . . . .
> >                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmm
> > mmmmmmmmmmmmmmmmMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > M
> > 0x00000001000a0000:   . . . .
> >                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > M
> > 0x00000001000c0000:   . . . .
> >                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmm
> > mmmmmmmmmmmmmmmmMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > M
> > 0x00000001000e0000:   . . . .
> >                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > M
> > 0x0000000100100000:   . . . . . . . . . . . . . . . . . . . . . . . .
> >                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMMMMSSSSMMMMMMMMMMMMM
> > MMMMMMMMMMMMMMMMMMMSS
> > SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
> > 0x0000000100120000:   . . . . . . . . . . . . . . . . . . . . . . . . .
> . .
> > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
> >                       SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
> > SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
> > SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
> >
> >
> > Thank you!
> >
> > Thomas
>


More information about the hotspot-runtime-dev mailing list