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

Coleen Phillimore coleen.phillimore at oracle.com
Wed Aug 14 11:11:40 PDT 2013


Erik,

I didn't review the test code but the product code looks good, except 
that after Harold's change there won't be a compressed class space 
allocated if !UseCompressedKlassPointers.  It appears that you allocate 
a performance counter for the compressed class space, but don't fill it 
in if !UseCompressedKlassPointers.   The code in metaspace.cpp assumes 
that a class_space_list() returns non-null, so that works now but won't 
(soon, I hope).   Can you write the code to still work if 
class_space_list() returns null because otherwise there's going to be a 
merge conflict that hg won't detect.   lines 2564 and 2571.

Thanks,
Coleen

On 8/14/2013 10: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-runtime-dev mailing list