RFR (M): 8014659: NPG: performance counters for compressed klass space

Jon Masamitsu jon.masamitsu at oracle.com
Mon Aug 19 17:38:17 UTC 2013


On 8/19/13 2:41 AM, Erik Helin wrote:
> On 2013-08-16, Jon Masamitsu wrote:
>> Erik,
>>
>> Changes look good.
> Thanks!
>
> On 2013-08-16, Jon Masamitsu wrote:
>> Is it correct that MetaspaceCounters will include counters for ClassType
>> and NonClassType metadata if UseCompressedClassPointers is false?
> The class MetaspaceCounters (representing the counters in namespace
> "sun.gc.metaspace") always includes both ClassType and NonClassType
> metadata, regardless whether compressed class pointers are used or not.
Would the count for ClassType in MetaspaceCounters always be 0 if
compressed class pointers is turned "on", yes.

Jon
>
> On 2013-08-16, Jon Masamitsu wrote:
>> And only for NonClassType if UseCompressedClassPointers is true?
> No, the class MetaspaceCounters always include all kinds of metadata.
>
> The class CompressedClassCounters (representing the namespace
> "sun.gc.compressedclassspace") only includes ClassType metadata if
> compressed class pointers are used. If compressed class pointers are *not*
> used, then these counters are always 0.
>
>
> On 2013-08-16, Jon Masamitsu wrote:
>> And that's the way the MemoryPools are also divided?
> No :( Thanks for catching this Jon, this is wrong. I would like the
> memory pools to follow the same pattern:
> - MetaspaceMemoryPool: Always measures all kinds of metadata
> - CompressedClassSpaceMemoryPool: Only measures compressed class space.
>    Always zero or undefined in compressed class pointers aren't used.
>
> As of now, the MetaspaceMemoryPool only measures NonClassType metadata.
>
> I'll create a new bug and send out a patch fixing this.
>
> Again, thanks for reviewing Jon, really appreciate it.
>
> Erik
>
>> Jon
>>
>> On 8/14/2013 7:49 AM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change adds performance counters for compressed class space.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>>>
>>> Changes to hotspot:
>>> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
>>> where the class MetaspaceCounters has been split up into
>>> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
>>> an instance of MetaspacePerfCounters. The class
>>> CompressedClassSpaceCounters has been added which also has its own
>>> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
>>> updates the actual performance counters.
>>>
>>> The changes in metaspace.hpp/cpp were needed to get some additional data
>> >from the metaspace data structures. The method
>>> free_chunks_in_total(mdtype) was made public and the method
>>> free_bytes(mdtype) was added. Some common functionality was extracted
>>> into get_space_list(mdtype) which got rid of some duplicated code.
>>>
>>> The changes in:
>>> - g1MonitorinSupport.cpp
>>> - parallelScavengeHeap.cpp
>>> - genCollectedHeap.cpp
>>> - universe.cpp
>>> are only "one-liners" that either update or initialize the new performance
>>> counters.
>>>
>>> Changes to the testlibrary:
>>> - Added Asserts.java for writing asserts like "assertTrue",
>>>    "assertEquals", etc.
>>> - Added PerfCounter.java and PerfCounters.java to make it easy to
>>>    inspect performance counters for the currently running VM.
>>> - Added InputArguments.java so a test can check the arguments it got
>>>    passed.
>>> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
>>>    Useful for loading classes generated at runtime without using files.
>>> - Added ByteCodeLoader.java for defining a new class when you already
>>>    have the bytecode.
>>>
>>> Testing:
>>> - Added the new test TestMetaspacePerfCounters.java
>>> - JPRT
>>>
>>> Bug:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>>>
>>> Thanks,
>>> Erik




More information about the hotspot-gc-dev mailing list