Skip to content

Commit 9ec4696

Browse files
Xiaolong Pengshipilev
authored andcommitted
8350313: Include timings for leaving safepoint in safepoint logging
Reviewed-by: shade, dholmes
1 parent ec6624b commit 9ec4696

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/hotspot/share/runtime/safepoint.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,8 @@ void SafepointSynchronize::disarm_safepoint() {
468468
// operation has been carried out
469469
void SafepointSynchronize::end() {
470470
assert(Threads_lock->owned_by_self(), "must hold Threads_lock");
471+
SafepointTracing::leave();
472+
471473
EventSafepointEnd event;
472474
assert(Thread::current()->is_VM_thread(), "Only VM thread can execute a safepoint");
473475

@@ -862,6 +864,7 @@ void ThreadSafepointState::handle_polling_page_exception() {
862864

863865
jlong SafepointTracing::_last_safepoint_begin_time_ns = 0;
864866
jlong SafepointTracing::_last_safepoint_sync_time_ns = 0;
867+
jlong SafepointTracing::_last_safepoint_leave_time_ns = 0;
865868
jlong SafepointTracing::_last_safepoint_end_time_ns = 0;
866869
jlong SafepointTracing::_last_app_time_ns = 0;
867870
int SafepointTracing::_nof_threads = 0;
@@ -963,6 +966,10 @@ void SafepointTracing::synchronized(int nof_threads, int nof_running, int traps)
963966
RuntimeService::record_safepoint_synchronized(_last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns);
964967
}
965968

969+
void SafepointTracing::leave() {
970+
_last_safepoint_leave_time_ns = os::javaTimeNanos();
971+
}
972+
966973
void SafepointTracing::end() {
967974
_last_safepoint_end_time_ns = os::javaTimeNanos();
968975

@@ -981,12 +988,14 @@ void SafepointTracing::end() {
981988
"Time since last: " JLONG_FORMAT " ns, "
982989
"Reaching safepoint: " JLONG_FORMAT " ns, "
983990
"At safepoint: " JLONG_FORMAT " ns, "
991+
"Leaving safepoint: " JLONG_FORMAT " ns, "
984992
"Total: " JLONG_FORMAT " ns",
985993
VM_Operation::name(_current_type),
986994
_last_app_time_ns,
987-
_last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns,
988-
_last_safepoint_end_time_ns - _last_safepoint_sync_time_ns,
989-
_last_safepoint_end_time_ns - _last_safepoint_begin_time_ns
995+
_last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns,
996+
_last_safepoint_leave_time_ns - _last_safepoint_sync_time_ns,
997+
_last_safepoint_end_time_ns - _last_safepoint_leave_time_ns,
998+
_last_safepoint_end_time_ns - _last_safepoint_begin_time_ns
990999
);
9911000

9921001
RuntimeService::record_safepoint_end(_last_safepoint_end_time_ns - _last_safepoint_sync_time_ns);

src/hotspot/share/runtime/safepoint.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ class SafepointTracing : public AllStatic {
230230
// Absolute
231231
static jlong _last_safepoint_begin_time_ns;
232232
static jlong _last_safepoint_sync_time_ns;
233+
static jlong _last_safepoint_leave_time_ns;
233234
static jlong _last_safepoint_end_time_ns;
234235

235236
// Relative
@@ -251,6 +252,7 @@ class SafepointTracing : public AllStatic {
251252

252253
static void begin(VM_Operation::VMOp_Type type);
253254
static void synchronized(int nof_threads, int nof_running, int traps);
255+
static void leave();
254256
static void end();
255257

256258
static void statistics_exit_log();

0 commit comments

Comments
 (0)