8004172: Update jstat counter names to reflect metaspace changes

Mon, 04 Mar 2013 13:01:24 +0100

author
ehelin
date
Mon, 04 Mar 2013 13:01:24 +0100
changeset 4680
0624b9d81255
parent 4679
a252e688abcf
child 4681
27714220e50e

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,

mercurial