Mon, 04 Mar 2013 13:01:24 +0100
8004172: Update jstat counter names to reflect metaspace changes
Reviewed-by: stefank, jmasa
src/share/vm/memory/metaspaceCounters.cpp | file | annotate | diff | comparison | revisions | |
src/share/vm/memory/metaspaceCounters.hpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/memory/metaspaceCounters.cpp Fri Feb 01 17:02:36 2013 -0800 1.2 +++ b/src/share/vm/memory/metaspaceCounters.cpp Mon Mar 04 13:01:24 2013 +0100 1.3 @@ -25,12 +25,14 @@ 1.4 #include "precompiled.hpp" 1.5 #include "memory/metaspaceCounters.hpp" 1.6 #include "memory/resourceArea.hpp" 1.7 - 1.8 -#define METASPACE_NAME "perm" 1.9 +#include "utilities/exceptions.hpp" 1.10 1.11 MetaspaceCounters* MetaspaceCounters::_metaspace_counters = NULL; 1.12 1.13 -MetaspaceCounters::MetaspaceCounters() { 1.14 +MetaspaceCounters::MetaspaceCounters() : 1.15 + _capacity(NULL), 1.16 + _used(NULL), 1.17 + _max_capacity(NULL) { 1.18 if (UsePerfData) { 1.19 size_t min_capacity = MetaspaceAux::min_chunk_size(); 1.20 size_t max_capacity = MetaspaceAux::reserved_in_bytes(); 1.21 @@ -41,6 +43,25 @@ 1.22 } 1.23 } 1.24 1.25 +static PerfVariable* create_ms_variable(const char *ns, 1.26 + const char *name, 1.27 + size_t value, 1.28 + TRAPS) { 1.29 + const char *path = PerfDataManager::counter_name(ns, name); 1.30 + PerfVariable *result = 1.31 + PerfDataManager::create_variable(SUN_GC, path, PerfData::U_Bytes, value, 1.32 + CHECK_NULL); 1.33 + return result; 1.34 +} 1.35 + 1.36 +static void create_ms_constant(const char *ns, 1.37 + const char *name, 1.38 + size_t value, 1.39 + TRAPS) { 1.40 + const char *path = PerfDataManager::counter_name(ns, name); 1.41 + PerfDataManager::create_constant(SUN_GC, path, PerfData::U_Bytes, value, CHECK); 1.42 +} 1.43 + 1.44 void MetaspaceCounters::initialize(size_t min_capacity, 1.45 size_t max_capacity, 1.46 size_t curr_capacity, 1.47 @@ -50,93 +71,32 @@ 1.48 EXCEPTION_MARK; 1.49 ResourceMark rm; 1.50 1.51 - // Create a name that will be recognized by jstat tools as 1.52 - // the perm gen. Change this to a Metaspace name when the 1.53 - // tools are fixed. 1.54 - // name to recognize "sun.gc.generation.2.*" 1.55 + const char *ms = "metaspace"; 1.56 1.57 - const char* name = METASPACE_NAME; 1.58 - const int ordinal = 2; 1.59 - const int spaces = 1; 1.60 - 1.61 - const char* cns = PerfDataManager::name_space("generation", ordinal); 1.62 - 1.63 - _name_space = NEW_C_HEAP_ARRAY(char, strlen(cns)+1, mtClass); 1.64 - strcpy(_name_space, cns); 1.65 - 1.66 - const char* cname = PerfDataManager::counter_name(_name_space, "name"); 1.67 - PerfDataManager::create_string_constant(SUN_GC, cname, name, CHECK); 1.68 - 1.69 - // End of perm gen like name creation 1.70 - 1.71 - cname = PerfDataManager::counter_name(_name_space, "spaces"); 1.72 - PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_None, 1.73 - spaces, CHECK); 1.74 - 1.75 - cname = PerfDataManager::counter_name(_name_space, "minCapacity"); 1.76 - PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes, 1.77 - min_capacity, CHECK); 1.78 - 1.79 - cname = PerfDataManager::counter_name(_name_space, "maxCapacity"); 1.80 - PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes, 1.81 - max_capacity, CHECK); 1.82 - 1.83 - cname = PerfDataManager::counter_name(_name_space, "capacity"); 1.84 - _current_size = 1.85 - PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes, 1.86 - curr_capacity, CHECK); 1.87 - 1.88 - // SpaceCounter like counters 1.89 - // name to recognize "sun.gc.generation.2.space.0.*" 1.90 - { 1.91 - const int space_ordinal = 0; 1.92 - const char* cns = PerfDataManager::name_space(_name_space, "space", 1.93 - space_ordinal); 1.94 - 1.95 - char* space_name_space = NEW_C_HEAP_ARRAY(char, strlen(cns)+1, mtClass); 1.96 - strcpy(space_name_space, cns); 1.97 - 1.98 - const char* cname = PerfDataManager::counter_name(space_name_space, "name"); 1.99 - PerfDataManager::create_string_constant(SUN_GC, cname, name, CHECK); 1.100 - 1.101 - cname = PerfDataManager::counter_name(space_name_space, "maxCapacity"); 1.102 - _max_capacity = PerfDataManager::create_variable(SUN_GC, cname, 1.103 - PerfData::U_Bytes, 1.104 - (jlong)max_capacity, CHECK); 1.105 - 1.106 - cname = PerfDataManager::counter_name(space_name_space, "capacity"); 1.107 - _capacity = PerfDataManager::create_variable(SUN_GC, cname, 1.108 - PerfData::U_Bytes, 1.109 - curr_capacity, CHECK); 1.110 - 1.111 - cname = PerfDataManager::counter_name(space_name_space, "used"); 1.112 - _used = PerfDataManager::create_variable(SUN_GC, 1.113 - cname, 1.114 - PerfData::U_Bytes, 1.115 - used, 1.116 - CHECK); 1.117 - 1.118 - cname = PerfDataManager::counter_name(space_name_space, "initCapacity"); 1.119 - PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes, 1.120 - min_capacity, CHECK); 1.121 - } 1.122 + create_ms_constant(ms, "minCapacity", min_capacity, CHECK); 1.123 + _max_capacity = create_ms_variable(ms, "maxCapacity", max_capacity, CHECK); 1.124 + _capacity = create_ms_variable(ms, "capacity", curr_capacity, CHECK); 1.125 + _used = create_ms_variable(ms, "used", used, CHECK); 1.126 } 1.127 } 1.128 1.129 void MetaspaceCounters::update_capacity() { 1.130 assert(UsePerfData, "Should not be called unless being used"); 1.131 + assert(_capacity != NULL, "Should be initialized"); 1.132 size_t capacity_in_bytes = MetaspaceAux::capacity_in_bytes(); 1.133 _capacity->set_value(capacity_in_bytes); 1.134 } 1.135 1.136 void MetaspaceCounters::update_used() { 1.137 assert(UsePerfData, "Should not be called unless being used"); 1.138 + assert(_used != NULL, "Should be initialized"); 1.139 size_t used_in_bytes = MetaspaceAux::used_in_bytes(); 1.140 _used->set_value(used_in_bytes); 1.141 } 1.142 1.143 void MetaspaceCounters::update_max_capacity() { 1.144 assert(UsePerfData, "Should not be called unless being used"); 1.145 + assert(_max_capacity != NULL, "Should be initialized"); 1.146 size_t reserved_in_bytes = MetaspaceAux::reserved_in_bytes(); 1.147 _max_capacity->set_value(reserved_in_bytes); 1.148 } 1.149 @@ -146,18 +106,19 @@ 1.150 update_used(); 1.151 update_capacity(); 1.152 update_max_capacity(); 1.153 - _current_size->set_value(MetaspaceAux::reserved_in_bytes()); 1.154 } 1.155 } 1.156 1.157 void MetaspaceCounters::initialize_performance_counters() { 1.158 if (UsePerfData) { 1.159 + assert(_metaspace_counters == NULL, "Should only be initialized once"); 1.160 _metaspace_counters = new MetaspaceCounters(); 1.161 } 1.162 } 1.163 1.164 void MetaspaceCounters::update_performance_counters() { 1.165 if (UsePerfData) { 1.166 + assert(_metaspace_counters != NULL, "Should be initialized"); 1.167 _metaspace_counters->update_all(); 1.168 } 1.169 }
2.1 --- a/src/share/vm/memory/metaspaceCounters.hpp Fri Feb 01 17:02:36 2013 -0800 2.2 +++ b/src/share/vm/memory/metaspaceCounters.hpp Mon Mar 04 13:01:24 2013 +0100 2.3 @@ -29,11 +29,9 @@ 2.4 2.5 class MetaspaceCounters: public CHeapObj<mtClass> { 2.6 friend class VMStructs; 2.7 - PerfVariable* _current_size; 2.8 PerfVariable* _capacity; 2.9 PerfVariable* _used; 2.10 PerfVariable* _max_capacity; 2.11 - char* _name_space; 2.12 static MetaspaceCounters* _metaspace_counters; 2.13 void initialize(size_t min_capacity, 2.14 size_t max_capacity,