< prev index next >

src/hotspot/share/gc/z/zStat.hpp

Print this page




  35 class ZPage;
  36 class ZStatSampler;
  37 class ZStatSamplerHistory;
  38 struct ZStatCounterData;
  39 struct ZStatSamplerData;
  40 
  41 //
  42 // Stat unit printers
  43 //
  44 typedef void (*ZStatUnitPrinter)(LogTargetHandle log, const ZStatSampler&, const ZStatSamplerHistory&);
  45 
  46 void ZStatUnitTime(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  47 void ZStatUnitBytes(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  48 void ZStatUnitThreads(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  49 void ZStatUnitBytesPerSecond(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  50 void ZStatUnitOpsPerSecond(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  51 
  52 //
  53 // Stat value
  54 //
  55 class ZStatValue VALUE_OBJ_CLASS_SPEC {
  56 private:
  57   static uintptr_t _base;
  58   static uint32_t  _cpu_offset;
  59 
  60   const char* const _group;
  61   const char* const _name;
  62   const uint32_t    _id;
  63   const uint32_t    _offset;
  64 
  65 protected:
  66   ZStatValue(const char* group,
  67              const char* name,
  68              uint32_t id,
  69              uint32_t size);
  70 
  71   template <typename T> T* get_cpu_local(uint32_t cpu) const;
  72 
  73 public:
  74   static void initialize();
  75 


 141                ZStatUnitPrinter printer);
 142 
 143   ZStatCounterData* get() const;
 144   void sample_and_reset() const;
 145 };
 146 
 147 //
 148 // Stat unsampled counter
 149 //
 150 class ZStatUnsampledCounter : public ZStatIterableValue<ZStatUnsampledCounter> {
 151 public:
 152   ZStatUnsampledCounter(const char* name);
 153 
 154   ZStatCounterData* get() const;
 155   ZStatCounterData collect_and_reset() const;
 156 };
 157 
 158 //
 159 // Stat MMU (Mimimum Mutator Utilization)
 160 //
 161 class ZStatMMUPause VALUE_OBJ_CLASS_SPEC {
 162 private:
 163   double _start;
 164   double _end;
 165 
 166 public:
 167   ZStatMMUPause();
 168   ZStatMMUPause(const Ticks& start, const Ticks& end);
 169 
 170   double end() const;
 171   double overlap(double start, double end) const;
 172 };
 173 
 174 class ZStatMMU VALUE_OBJ_CLASS_SPEC {
 175 private:
 176   static size_t        _next;
 177   static size_t        _npauses;
 178   static ZStatMMUPause _pauses[200]; // Record the last 200 pauses
 179 
 180   static double _mmu_2ms;
 181   static double _mmu_5ms;
 182   static double _mmu_10ms;
 183   static double _mmu_20ms;
 184   static double _mmu_50ms;
 185   static double _mmu_100ms;
 186 
 187   static const ZStatMMUPause& pause(size_t index);
 188   static double calculate_mmu(double time_slice);
 189 
 190 public:
 191   static void register_pause(const Ticks& start, const Ticks& end);
 192 
 193   static void print();
 194 };
 195 
 196 //
 197 // Stat phases
 198 //
 199 class ZStatPhase VALUE_OBJ_CLASS_SPEC {
 200 private:
 201   static ConcurrentGCTimer _timer;
 202 
 203 protected:
 204   const ZStatSampler _sampler;
 205 
 206   ZStatPhase(const char* group, const char* name);
 207 
 208   void log_start(LogTargetHandle log, bool thread = false) const;
 209   void log_end(LogTargetHandle log, const Tickspan& duration, bool thread = false) const;
 210 
 211 public:
 212   static ConcurrentGCTimer* timer();
 213 
 214   const char* name() const;
 215 
 216   virtual void register_start(const Ticks& start) const = 0;
 217   virtual void register_end(const Ticks& start, const Ticks& end) const = 0;
 218 };
 219 




  35 class ZPage;
  36 class ZStatSampler;
  37 class ZStatSamplerHistory;
  38 struct ZStatCounterData;
  39 struct ZStatSamplerData;
  40 
  41 //
  42 // Stat unit printers
  43 //
  44 typedef void (*ZStatUnitPrinter)(LogTargetHandle log, const ZStatSampler&, const ZStatSamplerHistory&);
  45 
  46 void ZStatUnitTime(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  47 void ZStatUnitBytes(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  48 void ZStatUnitThreads(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  49 void ZStatUnitBytesPerSecond(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  50 void ZStatUnitOpsPerSecond(LogTargetHandle log, const ZStatSampler& sampler, const ZStatSamplerHistory& history);
  51 
  52 //
  53 // Stat value
  54 //
  55 class ZStatValue {
  56 private:
  57   static uintptr_t _base;
  58   static uint32_t  _cpu_offset;
  59 
  60   const char* const _group;
  61   const char* const _name;
  62   const uint32_t    _id;
  63   const uint32_t    _offset;
  64 
  65 protected:
  66   ZStatValue(const char* group,
  67              const char* name,
  68              uint32_t id,
  69              uint32_t size);
  70 
  71   template <typename T> T* get_cpu_local(uint32_t cpu) const;
  72 
  73 public:
  74   static void initialize();
  75 


 141                ZStatUnitPrinter printer);
 142 
 143   ZStatCounterData* get() const;
 144   void sample_and_reset() const;
 145 };
 146 
 147 //
 148 // Stat unsampled counter
 149 //
 150 class ZStatUnsampledCounter : public ZStatIterableValue<ZStatUnsampledCounter> {
 151 public:
 152   ZStatUnsampledCounter(const char* name);
 153 
 154   ZStatCounterData* get() const;
 155   ZStatCounterData collect_and_reset() const;
 156 };
 157 
 158 //
 159 // Stat MMU (Mimimum Mutator Utilization)
 160 //
 161 class ZStatMMUPause {
 162 private:
 163   double _start;
 164   double _end;
 165 
 166 public:
 167   ZStatMMUPause();
 168   ZStatMMUPause(const Ticks& start, const Ticks& end);
 169 
 170   double end() const;
 171   double overlap(double start, double end) const;
 172 };
 173 
 174 class ZStatMMU {
 175 private:
 176   static size_t        _next;
 177   static size_t        _npauses;
 178   static ZStatMMUPause _pauses[200]; // Record the last 200 pauses
 179 
 180   static double _mmu_2ms;
 181   static double _mmu_5ms;
 182   static double _mmu_10ms;
 183   static double _mmu_20ms;
 184   static double _mmu_50ms;
 185   static double _mmu_100ms;
 186 
 187   static const ZStatMMUPause& pause(size_t index);
 188   static double calculate_mmu(double time_slice);
 189 
 190 public:
 191   static void register_pause(const Ticks& start, const Ticks& end);
 192 
 193   static void print();
 194 };
 195 
 196 //
 197 // Stat phases
 198 //
 199 class ZStatPhase {
 200 private:
 201   static ConcurrentGCTimer _timer;
 202 
 203 protected:
 204   const ZStatSampler _sampler;
 205 
 206   ZStatPhase(const char* group, const char* name);
 207 
 208   void log_start(LogTargetHandle log, bool thread = false) const;
 209   void log_end(LogTargetHandle log, const Tickspan& duration, bool thread = false) const;
 210 
 211 public:
 212   static ConcurrentGCTimer* timer();
 213 
 214   const char* name() const;
 215 
 216   virtual void register_start(const Ticks& start) const = 0;
 217   virtual void register_end(const Ticks& start, const Ticks& end) const = 0;
 218 };
 219 


< prev index next >