RFR (S) JDK-8014912 Restore PrintSharedSpaces after NPG
Coleen Phillimore
coleen.phillimore at oracle.com
Fri May 24 10:43:37 PDT 2013
I think you can inherit from HistogramElement and add fields but I'm not
going to make further suggestions at this time, I just wanted you to
consider reusing this code. Your code is good.
Coleen
On 5/23/2013 12:51 PM, Ioi Lam wrote:
> Coleen,
>
> I looked at histogram.hpp, but it has only one _count field:
>
> class HistogramElement : public CHeapObj<mtInternal> {
> protected:
> jint _count;
> const char* _name;
>
> public:
> HistogramElement();
> virtual int count();
> virtual const char* name();
> virtual void increment_count();
> void print_on(outputStream* st) const;
> virtual int compare(HistogramElement* e1,HistogramElement* e2);
> };
>
> For my purpose, I would need a count and size for each subtype of
> metadata, so it doesn't look like this class is immediately usable for
> me.
>
> I am actually planning (with a different bug ID) to dump a detailed
> "map file" of every object in CDS. Now that I record all the
> allocations under Metaspace::_alloc_record_head, I can iterate over
> them and call, for example, Method::print_codes_on() on all the
> methods. This will allow you to do all kinds of analysis, like
>
> How many unquickened getfield bytecodes are inside CDS
> How many methods contain unquickened bytecodes
>
> ... etc. When we were doing Monty's romizer, a mapfile like this was
> very helpful in identifying possible areas for improvements.
>
> While I do that, I can also dump a table of the size distribution of
> each type objects in a histogram format, similar to
> PrintSymbolTableSizeHistogram.
>
> Thanks
> - Ioi
>
>
> On 05/22/2013 06:47 PM, Coleen Phillimore wrote:
>>
>> Ioi,
>>
>> This looks really good. The only thing is that we have code to
>> create histograms in the VM (see utilities/histogram.hpp). Couldn't
>> you reuse this class instead of writing your own histogram creating
>> function? It would sort your data for you! I don't know if it would
>> have the data you are looking for but lots of other jvm code uses
>> this class for a similar purpose.
>>
>> Thanks,
>> Coleen
>>
>> On 5/21/2013 6:29 PM, Ioi Lam wrote:
>>> Please review:
>>>
>>> http://cr.openjdk.java.net/~iklam/8014912/print_sharedspc_001/
>>>
>>> Bug: Restore PrintSharedSpaces functionality after NPG
>>>
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014912
>>> https://jbs.oracle.com/bugs/browse/JDK-8014912
>>>
>>> Summary of fix:
>>>
>>> I added a new enum, MetaspaceObj::Type, which is passed to
>>>
>>> Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
>>> bool read_only, MetaspaceObj::Type type,
>>> TRAPS);
>>>
>>> During CDS dumping, all allocations are logged in a linked list to
>>> be processed later by metaspaceShared.cpp to generate statistics for
>>> objects in the CDS archive. See sample output below.
>>>
>>> * No such logging is doneat normal VM execution time so there
>>> is no performance impact.
>>>
>>> * I verified that the patch can be applied cleanly on Jon's
>>> recentpatch for JDK-8014862 "Add fast Metasapce capacity and
>>> used per MetadataType"
>>>
>>> http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/2b1a9d972fc2
>>>
>>> Testing:
>>>
>>> JPRT, UTE (vm.quick.testlist)
>>>
>>> Sample output:
>>>
>>> ro_cnt ro_bytes % | rw_cnt
>>> rw_bytes % | all_cnt all_bytes %
>>> --------------------+---------------------------+---------------------------+--------------------------
>>>
>>> Unknown : 1 64 0.0 | 1 64 0.0
>>> | 2 128 0.0
>>> Class : 0 0 0.0 | 2364 2006080 14.7
>>> | 2364 2006080 9.2
>>> Symbol : 49858 2507168 30.9 | 0 0 0.0
>>> | 49858 2507168 11.5
>>> TypeArrayU1 : 13264 608336 7.5 | 2365 428784 3.1
>>> | 15629 1037120 4.8
>>> TypeArrayU2 : 4796 341952 4.2 | 0 0 0.0
>>> | 4796 341952 1.6
>>> TypeArrayU4 : 2371 178528 2.2 | 0 0 0.0
>>> | 2371 178528 0.8
>>> TypeArrayU8 : 3708 365920 4.5 | 0 0 0.0
>>> | 3708 365920 1.7
>>> TypeArrayOther : 0 0 0.0 | 0 0 0.0
>>> | 0 0 0.0
>>> Method : 0 0 0.0 | 32552 3659888 26.8
>>> | 32552 3659888 16.8
>>> ConstMethod : 32552 4099008 50.6 | 0 0 0.0
>>> | 32552 4099008 18.8
>>> MethodData : 0 0 0.0 | 0 0 0.0
>>> | 0 0 0.0
>>> ConstantPool : 0 0 0.0 | 2365 3225600 23.6
>>> | 2365 3225600 14.8
>>> ConstantPoolCache : 0 0 0.0 | 2350 2212320 16.2
>>> | 2350 2212320 10.2
>>> Annotation : 26 1248 0.0 | 0 0 0.0
>>> | 26 1248 0.0
>>> MethodCounters : 0 0 0.0 | 0 0 0.0
>>> | 0 0 0.0
>>> SymbolHashentry : 0 0 0.0 | 49858 1595456 11.7
>>> | 49858 1595456 7.3
>>> SymbolBuckets : 0 0 0.0 | 20011 320176 2.3
>>> | 20011 320176 1.5
>>> Other : 0 0 0.0 | 0 203893 1.5
>>> | 0 203893 0.9
>>> --------------------+---------------------------+---------------------------+--------------------------
>>>
>>> Total : 106576 8102224 100.0 | 111866 13652261
>>> 100.0 | 218442 21754485 100.0
>>>
>>>
>>> Thanks,
>>> Ioi
>>>
>>>
>>
>
More information about the hotspot-dev
mailing list