|
642 | 642 | initializeJFR(J9JavaVM *vm, BOOLEAN lateInit)
|
643 | 643 | {
|
644 | 644 | PORT_ACCESS_FROM_JAVAVM(vm);
|
| 645 | + OMRPORT_ACCESS_FROM_J9PORT(PORTLIB); |
645 | 646 | jint rc = JNI_ERR;
|
646 | 647 | J9HookInterface **vmHooks = getVMHookInterface(vm);
|
647 | 648 | U_8 *buffer = NULL;
|
@@ -723,7 +724,14 @@ initializeJFR(J9JavaVM *vm, BOOLEAN lateInit)
|
723 | 724 |
|
724 | 725 | vm->jfrState.prevSysCPUTime.timestamp = -1;
|
725 | 726 | vm->jfrState.prevProcTimestamp = -1;
|
726 |
| - vm->jfrState.prevContextSwitchTimestamp = -1; |
| 727 | + |
| 728 | + if (0 == omrsysinfo_get_number_context_switches(&vm->jfrState.prevContextSwitches)) { |
| 729 | + vm->jfrState.prevContextSwitchTimestamp = j9time_nano_time(); |
| 730 | + } else { |
| 731 | + vm->jfrState.prevContextSwitchTimestamp = -1; |
| 732 | + vm->jfrState.prevContextSwitches = 0; |
| 733 | + } |
| 734 | + |
727 | 735 | if (omrthread_monitor_init_with_name(&vm->jfrBufferMutex, 0, "JFR global buffer mutex")) {
|
728 | 736 | goto fail;
|
729 | 737 | }
|
@@ -1017,11 +1025,13 @@ jfrThreadContextSwitchRate(J9VMThread *currentThread)
|
1017 | 1025 |
|
1018 | 1026 | initializeEventFields(currentThread, (J9JFREvent *)jfrEvent, J9JFR_EVENT_TYPE_THREAD_CONTEXT_SWITCH_RATE);
|
1019 | 1027 |
|
1020 |
| - if (-1 == jfrState->prevContextSwitchTimestamp) { |
1021 |
| - jfrEvent->switchRate = 0; |
| 1028 | + if ((-1 == jfrState->prevContextSwitchTimestamp) |
| 1029 | + || (currentTime == jfrState->prevContextSwitchTimestamp) |
| 1030 | + ) { |
| 1031 | + jfrEvent->switchRate = 0.0f; |
1022 | 1032 | } else {
|
1023 | 1033 | int64_t timeDelta = currentTime - jfrState->prevContextSwitchTimestamp;
|
1024 |
| - jfrEvent->switchRate = ((double)(switches - jfrState->prevContextSwitches) / timeDelta) * 1e9; |
| 1034 | + jfrEvent->switchRate = (switches - jfrState->prevContextSwitches) * 1e9f / timeDelta; |
1025 | 1035 | }
|
1026 | 1036 | jfrState->prevContextSwitches = switches;
|
1027 | 1037 | jfrState->prevContextSwitchTimestamp = currentTime;
|
|
0 commit comments