src/hotspot/os/linux/os_perf_linux.cpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 54470 14986fb09d9a
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
   501   _counters.nProcs = os::active_processor_count();
   501   _counters.nProcs = os::active_processor_count();
   502   _counters.cpus = NULL;
   502   _counters.cpus = NULL;
   503 }
   503 }
   504 
   504 
   505 bool CPUPerformanceInterface::CPUPerformance::initialize() {
   505 bool CPUPerformanceInterface::CPUPerformance::initialize() {
   506   size_t tick_array_size = (_counters.nProcs +1) * sizeof(os::Linux::CPUPerfTicks);
   506   size_t array_entry_count = _counters.nProcs + 1;
   507   _counters.cpus = (os::Linux::CPUPerfTicks*)NEW_C_HEAP_ARRAY(char, tick_array_size, mtInternal);
   507   _counters.cpus = NEW_C_HEAP_ARRAY(os::Linux::CPUPerfTicks, array_entry_count, mtInternal);
   508   if (NULL == _counters.cpus) {
   508   memset(_counters.cpus, 0, array_entry_count * sizeof(*_counters.cpus));
   509     return false;
       
   510   }
       
   511   memset(_counters.cpus, 0, tick_array_size);
       
   512 
   509 
   513   // For the CPU load total
   510   // For the CPU load total
   514   os::Linux::get_tick_information(&_counters.cpus[_counters.nProcs], -1);
   511   os::Linux::get_tick_information(&_counters.cpus[_counters.nProcs], -1);
   515 
   512 
   516   // For each CPU
   513   // For each CPU
   593   _impl = NULL;
   590   _impl = NULL;
   594 }
   591 }
   595 
   592 
   596 bool CPUPerformanceInterface::initialize() {
   593 bool CPUPerformanceInterface::initialize() {
   597   _impl = new CPUPerformanceInterface::CPUPerformance();
   594   _impl = new CPUPerformanceInterface::CPUPerformance();
   598   return NULL == _impl ? false : _impl->initialize();
   595   return _impl->initialize();
   599 }
   596 }
   600 
   597 
   601 CPUPerformanceInterface::~CPUPerformanceInterface() {
   598 CPUPerformanceInterface::~CPUPerformanceInterface() {
   602   if (_impl != NULL) {
   599   if (_impl != NULL) {
   603     delete _impl;
   600     delete _impl;
   746     while (fread(&dummy, 1, 1, fp) == 1) {
   743     while (fread(&dummy, 1, 1, fp) == 1) {
   747       size++;
   744       size++;
   748     }
   745     }
   749     if (size > 0) {
   746     if (size > 0) {
   750       cmdline = NEW_C_HEAP_ARRAY(char, size + 1, mtInternal);
   747       cmdline = NEW_C_HEAP_ARRAY(char, size + 1, mtInternal);
   751       if (cmdline != NULL) {
   748       cmdline[0] = '\0';
   752         cmdline[0] = '\0';
   749       if (fseek(fp, 0, SEEK_SET) == 0) {
   753         if (fseek(fp, 0, SEEK_SET) == 0) {
   750         if (fread(cmdline, 1, size, fp) == size) {
   754           if (fread(cmdline, 1, size, fp) == size) {
   751           // the file has the arguments separated by '\0',
   755             // the file has the arguments separated by '\0',
   752           // so we translate '\0' to ' '
   756             // so we translate '\0' to ' '
   753           for (size_t i = 0; i < size; i++) {
   757             for (size_t i = 0; i < size; i++) {
   754             if (cmdline[i] == '\0') {
   758               if (cmdline[i] == '\0') {
   755               cmdline[i] = ' ';
   759                 cmdline[i] = ' ';
       
   760               }
       
   761             }
   756             }
   762             cmdline[size] = '\0';
       
   763           }
   757           }
       
   758           cmdline[size] = '\0';
   764         }
   759         }
   765       }
   760       }
   766     }
   761     }
   767     fclose(fp);
   762     fclose(fp);
   768   }
   763   }
   852   _iterator = NULL;
   847   _iterator = NULL;
   853 }
   848 }
   854 
   849 
   855 bool SystemProcessInterface::SystemProcesses::initialize() {
   850 bool SystemProcessInterface::SystemProcesses::initialize() {
   856   _iterator = new SystemProcessInterface::SystemProcesses::ProcessIterator();
   851   _iterator = new SystemProcessInterface::SystemProcesses::ProcessIterator();
   857   return NULL == _iterator ? false : _iterator->initialize();
   852   return _iterator->initialize();
   858 }
   853 }
   859 
   854 
   860 SystemProcessInterface::SystemProcesses::~SystemProcesses() {
   855 SystemProcessInterface::SystemProcesses::~SystemProcesses() {
   861   if (_iterator != NULL) {
   856   if (_iterator != NULL) {
   862     delete _iterator;
   857     delete _iterator;
   899   _impl = NULL;
   894   _impl = NULL;
   900 }
   895 }
   901 
   896 
   902 bool SystemProcessInterface::initialize() {
   897 bool SystemProcessInterface::initialize() {
   903   _impl = new SystemProcessInterface::SystemProcesses();
   898   _impl = new SystemProcessInterface::SystemProcesses();
   904   return NULL == _impl ? false : _impl->initialize();
   899   return _impl->initialize();
   905 }
   900 }
   906 
   901 
   907 SystemProcessInterface::~SystemProcessInterface() {
   902 SystemProcessInterface::~SystemProcessInterface() {
   908   if (_impl != NULL) {
   903   if (_impl != NULL) {
   909     delete _impl;
   904     delete _impl;
   914   _cpu_info = NULL;
   909   _cpu_info = NULL;
   915 }
   910 }
   916 
   911 
   917 bool CPUInformationInterface::initialize() {
   912 bool CPUInformationInterface::initialize() {
   918   _cpu_info = new CPUInformation();
   913   _cpu_info = new CPUInformation();
   919   if (NULL == _cpu_info) {
       
   920     return false;
       
   921   }
       
   922   _cpu_info->set_number_of_hardware_threads(VM_Version_Ext::number_of_threads());
   914   _cpu_info->set_number_of_hardware_threads(VM_Version_Ext::number_of_threads());
   923   _cpu_info->set_number_of_cores(VM_Version_Ext::number_of_cores());
   915   _cpu_info->set_number_of_cores(VM_Version_Ext::number_of_cores());
   924   _cpu_info->set_number_of_sockets(VM_Version_Ext::number_of_sockets());
   916   _cpu_info->set_number_of_sockets(VM_Version_Ext::number_of_sockets());
   925   _cpu_info->set_cpu_name(VM_Version_Ext::cpu_name());
   917   _cpu_info->set_cpu_name(VM_Version_Ext::cpu_name());
   926   _cpu_info->set_cpu_description(VM_Version_Ext::cpu_description());
   918   _cpu_info->set_cpu_description(VM_Version_Ext::cpu_description());
   927 
       
   928   return true;
   919   return true;
   929 }
   920 }
   930 
   921 
   931 CPUInformationInterface::~CPUInformationInterface() {
   922 CPUInformationInterface::~CPUInformationInterface() {
   932   if (_cpu_info != NULL) {
   923   if (_cpu_info != NULL) {
  1036   }
  1027   }
  1037 }
  1028 }
  1038 
  1029 
  1039 bool NetworkPerformanceInterface::initialize() {
  1030 bool NetworkPerformanceInterface::initialize() {
  1040   _impl = new NetworkPerformanceInterface::NetworkPerformance();
  1031   _impl = new NetworkPerformanceInterface::NetworkPerformance();
  1041   return _impl != NULL && _impl->initialize();
  1032   return _impl->initialize();
  1042 }
  1033 }
  1043 
  1034 
  1044 int NetworkPerformanceInterface::network_utilization(NetworkInterface** network_interfaces) const {
  1035 int NetworkPerformanceInterface::network_utilization(NetworkInterface** network_interfaces) const {
  1045   return _impl->network_utilization(network_interfaces);
  1036   return _impl->network_utilization(network_interfaces);
  1046 }
  1037 }