< prev index next >

src/hotspot/os/aix/os_perf_aix.cpp

Print this page

426  private:
427   CPUPerfCounters _counters;
428 
429   int cpu_load(int which_logical_cpu, double* cpu_load);
430   int context_switch_rate(double* rate);
431   int cpu_load_total_process(double* cpu_load);
432   int cpu_loads_process(double* pjvmUserLoad, double* pjvmKernelLoad, double* psystemTotalLoad);
433 
434  public:
435   CPUPerformance();
436   bool initialize();
437   ~CPUPerformance();
438 };
439 
440 CPUPerformanceInterface::CPUPerformance::CPUPerformance() {
441   _counters.nProcs = os::active_processor_count();
442   _counters.cpus = NULL;
443 }
444 
445 bool CPUPerformanceInterface::CPUPerformance::initialize() {
446   size_t tick_array_size = (_counters.nProcs +1) * sizeof(CPUPerfTicks);
447   _counters.cpus = (CPUPerfTicks*)NEW_C_HEAP_ARRAY(char, tick_array_size, mtInternal);
448   if (NULL == _counters.cpus) {
449     return false;
450   }
451   memset(_counters.cpus, 0, tick_array_size);
452 
453   // For the CPU load total
454   get_total_ticks(-1, &_counters.cpus[_counters.nProcs]);
455 
456   // For each CPU
457   for (int i = 0; i < _counters.nProcs; i++) {
458     get_total_ticks(i, &_counters.cpus[i]);
459   }
460   // For JVM load
461   get_jvm_ticks(&_counters.jvmTicks);
462 
463   // initialize context switch system
464   // the double is only for init
465   double init_ctx_switch_rate;
466   perf_context_switch_rate(&init_ctx_switch_rate);
467 
468   return true;
469 }
470 
471 CPUPerformanceInterface::CPUPerformance::~CPUPerformance() {

426  private:
427   CPUPerfCounters _counters;
428 
429   int cpu_load(int which_logical_cpu, double* cpu_load);
430   int context_switch_rate(double* rate);
431   int cpu_load_total_process(double* cpu_load);
432   int cpu_loads_process(double* pjvmUserLoad, double* pjvmKernelLoad, double* psystemTotalLoad);
433 
434  public:
435   CPUPerformance();
436   bool initialize();
437   ~CPUPerformance();
438 };
439 
440 CPUPerformanceInterface::CPUPerformance::CPUPerformance() {
441   _counters.nProcs = os::active_processor_count();
442   _counters.cpus = NULL;
443 }
444 
445 bool CPUPerformanceInterface::CPUPerformance::initialize() {
446   size_t array_entry_count = _counters.nProcs + 1;
447   _counters.cpus = NEW_C_HEAP_ARRAY(CPUPerfTicks, array_entry_count, mtInternal);
448   if (NULL == _counters.cpus) {
449     return false;
450   }
451   memset(_counters.cpus, 0, array_entry_count * sizeof(*_counters.cpus));
452 
453   // For the CPU load total
454   get_total_ticks(-1, &_counters.cpus[_counters.nProcs]);
455 
456   // For each CPU
457   for (int i = 0; i < _counters.nProcs; i++) {
458     get_total_ticks(i, &_counters.cpus[i]);
459   }
460   // For JVM load
461   get_jvm_ticks(&_counters.jvmTicks);
462 
463   // initialize context switch system
464   // the double is only for init
465   double init_ctx_switch_rate;
466   perf_context_switch_rate(&init_ctx_switch_rate);
467 
468   return true;
469 }
470 
471 CPUPerformanceInterface::CPUPerformance::~CPUPerformance() {
< prev index next >