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 |
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; |
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 } |