Skip to content

Commit c372bf7

Browse files
authored
Merge pull request #22598 from thallium/jfr
Use omrsysinfo_get_CPU_load() to get system CPU load in JFR CPULoad
2 parents 47b2ad0 + 8aff206 commit c372bf7

File tree

2 files changed

+4
-15
lines changed

2 files changed

+4
-15
lines changed

runtime/oti/j9nonbuilder.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5963,7 +5963,6 @@ typedef struct JFRState {
59635963
BOOLEAN isConstantEventsInitialized;
59645964
BOOLEAN isStarted;
59655965
omrthread_monitor_t isConstantEventsInitializedMutex;
5966-
J9SysinfoCPUTime prevSysCPUTime;
59675966
omrthread_process_time_t prevProcCPUTimes;
59685967
int64_t prevProcTimestamp;
59695968
int64_t prevContextSwitchTimestamp;

runtime/vm/jfr.cpp

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,6 @@ initializeJFR(J9JavaVM *vm, BOOLEAN lateInit)
832832
goto fail;
833833
}
834834

835-
vm->jfrState.prevSysCPUTime.timestamp = -1;
836835
vm->jfrState.prevProcTimestamp = -1;
837836

838837
if (0 == omrsysinfo_get_number_context_switches(&vm->jfrState.prevContextSwitches)) {
@@ -1019,10 +1018,10 @@ jfrCPULoad(J9VMThread *currentThread)
10191018
omrthread_process_time_t currentProcCPUTimes = {0};
10201019
intptr_t processTimeRC = omrthread_get_process_times(&currentProcCPUTimes);
10211020

1022-
J9SysinfoCPUTime currentSysCPUTime = {0};
1023-
intptr_t sysTimeRC = omrsysinfo_get_CPU_utilization(&currentSysCPUTime);
1021+
double systemCPULoad = 0;
1022+
intptr_t systemCPULoadRC = omrsysinfo_get_CPU_load(&systemCPULoad);
10241023

1025-
if ((0 == processTimeRC) && (0 == sysTimeRC)) {
1024+
if ((0 == processTimeRC) && (0 == systemCPULoadRC)) {
10261025
J9JFRCPULoad *jfrEvent = (J9JFRCPULoad *)reserveBuffer(currentThread, sizeof(J9JFRCPULoad));
10271026
if (NULL != jfrEvent) {
10281027
initializeEventFields(currentThread, (J9JFREvent *)jfrEvent, J9JFR_EVENT_TYPE_CPU_LOAD);
@@ -1046,16 +1045,7 @@ jfrCPULoad(J9VMThread *currentThread)
10461045
jfrState->prevProcCPUTimes = currentProcCPUTimes;
10471046
jfrState->prevProcTimestamp = currentTime;
10481047

1049-
if (-1 == jfrState->prevSysCPUTime.timestamp) {
1050-
jfrEvent->machineTotal = 0;
1051-
} else {
1052-
float machineTotal =
1053-
(currentSysCPUTime.cpuTime - jfrState->prevSysCPUTime.cpuTime)
1054-
/ ((float)numberOfCpus
1055-
* (currentSysCPUTime.timestamp - jfrState->prevSysCPUTime.timestamp));
1056-
jfrEvent->machineTotal = OMR_MIN(machineTotal, 1.0f);
1057-
}
1058-
jfrState->prevSysCPUTime = currentSysCPUTime;
1048+
jfrEvent->machineTotal = (float)systemCPULoad;
10591049
}
10601050
}
10611051
}

0 commit comments

Comments
 (0)