Skip to content

Commit 15bdf92

Browse files
author
William Kemper
committed
8350314: Shenandoah: Capture thread state sync times in GC timings
Backport-of: 01bd7e4
1 parent 19cc626 commit 15bdf92

File tree

6 files changed

+40
-7
lines changed

6 files changed

+40
-7
lines changed

src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,11 @@ void ShenandoahConcurrentGC::op_init_mark() {
689689
if (ShenandoahPacing) {
690690
heap->pacer()->setup_for_mark();
691691
}
692+
693+
{
694+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::init_propagate_gc_state);
695+
heap->propagate_gc_state_to_all_threads();
696+
}
692697
}
693698

694699
void ShenandoahConcurrentGC::op_mark_roots() {
@@ -756,6 +761,11 @@ void ShenandoahConcurrentGC::op_final_mark() {
756761
}
757762
}
758763
}
764+
765+
{
766+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::final_mark_propagate_gc_state);
767+
heap->propagate_gc_state_to_all_threads();
768+
}
759769
}
760770

761771
bool ShenandoahConcurrentGC::has_in_place_promotions(ShenandoahHeap* heap) {
@@ -1153,6 +1163,11 @@ void ShenandoahConcurrentGC::op_final_update_refs() {
11531163
}
11541164

11551165
heap->rebuild_free_set(true /*concurrent*/);
1166+
1167+
{
1168+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::final_update_refs_propagate_gc_state);
1169+
heap->propagate_gc_state_to_all_threads();
1170+
}
11561171
}
11571172

11581173
void ShenandoahConcurrentGC::op_final_roots() {
@@ -1177,6 +1192,11 @@ void ShenandoahConcurrentGC::op_final_roots() {
11771192
if (VerifyAfterGC) {
11781193
Universe::verify();
11791194
}
1195+
1196+
{
1197+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::final_roots_propagate_gc_state);
1198+
heap->propagate_gc_state_to_all_threads();
1199+
}
11801200
}
11811201

11821202
void ShenandoahConcurrentGC::op_cleanup_complete() {

src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ void ShenandoahDegenGC::entry_degenerated() {
8585
heap->set_degenerated_gc_in_progress(true);
8686
op_degenerated();
8787
heap->set_degenerated_gc_in_progress(false);
88+
{
89+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::degen_gc_propagate_gc_state);
90+
heap->propagate_gc_state_to_all_threads();
91+
}
8892
}
8993

9094
void ShenandoahDegenGC::op_degenerated() {

src/hotspot/share/gc/shenandoah/shenandoahFullGC.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ void ShenandoahFullGC::op_full(GCCause::Cause cause) {
129129
// Regardless if progress was made, we record that we completed a "successful" full GC.
130130
heap->global_generation()->heuristics()->record_success_full();
131131
heap->shenandoah_policy()->record_success_full();
132+
133+
{
134+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::full_gc_propagate_gc_state);
135+
heap->propagate_gc_state_to_all_threads();
136+
}
132137
}
133138

134139
void ShenandoahFullGC::do_it(GCCause::Cause gc_cause) {

src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ void ShenandoahOldGC::op_final_mark() {
8080
if (VerifyAfterGC) {
8181
Universe::verify();
8282
}
83+
84+
{
85+
ShenandoahTimingsTracker timing(ShenandoahPhaseTimings::final_mark_propagate_gc_state);
86+
heap->propagate_gc_state_to_all_threads();
87+
}
8388
}
8489
}
8590

src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class outputStream;
5757
f(init_swap_rset, " Swap Remembered Set") \
5858
f(init_transfer_satb, " Transfer Old From SATB") \
5959
f(init_update_region_states, " Update Region States") \
60+
f(init_propagate_gc_state, " Propagate GC State") \
6061
\
6162
f(init_scan_rset, "Concurrent Scan Remembered Set") \
6263
SHENANDOAH_PAR_PHASE_DO(init_scan_rset_, " RS: ", f) \
@@ -70,6 +71,7 @@ class outputStream;
7071
f(final_mark_gross, "Pause Final Mark (G)") \
7172
f(final_mark, "Pause Final Mark (N)") \
7273
f(finish_mark, " Finish Mark") \
74+
f(final_mark_propagate_gc_state, " Propagate GC State") \
7375
SHENANDOAH_PAR_PHASE_DO(finish_mark_, " FM: ", f) \
7476
f(purge, " System Purge") \
7577
SHENANDOAH_PAR_PHASE_DO(purge_cu_par_, " CU: ", f) \
@@ -107,6 +109,7 @@ class outputStream;
107109
f(promote_in_place, "Concurrent Promote Regions") \
108110
f(final_roots_gross, "Pause Final Roots (G)") \
109111
f(final_roots, "Pause Final Roots (N)") \
112+
f(final_roots_propagate_gc_state, " Propagate GC State") \
110113
\
111114
f(init_update_refs_gross, "Pause Init Update Refs (G)") \
112115
f(init_update_refs, "Pause Init Update Refs (N)") \
@@ -121,6 +124,7 @@ class outputStream;
121124
f(final_update_refs_update_region_states, " Update Region States") \
122125
f(final_update_refs_trash_cset, " Trash Collection Set") \
123126
f(final_update_refs_rebuild_freeset, " Rebuild Free Set") \
127+
f(final_update_refs_propagate_gc_state, " Propagate GC State") \
124128
\
125129
f(conc_cleanup_complete, "Concurrent Cleanup") \
126130
f(conc_coalesce_and_fill, "Concurrent Coalesce and Fill") \
@@ -157,6 +161,7 @@ class outputStream;
157161
f(degen_gc_promote_regions, " Degen Promote Regions") \
158162
f(degen_gc_coalesce_and_fill, " Degen Coalesce and Fill") \
159163
SHENANDOAH_PAR_PHASE_DO(degen_coalesce_, " DC&F", f) \
164+
f(degen_gc_propagate_gc_state, " Propagate GC State") \
160165
\
161166
f(full_gc_gross, "Pause Full GC (G)") \
162167
f(full_gc, "Pause Full GC (N)") \
@@ -188,6 +193,7 @@ class outputStream;
188193
f(full_gc_copy_objects_rebuild, " Rebuild Region Sets") \
189194
f(full_gc_reconstruct_remembered_set, " Reconstruct Remembered Set") \
190195
f(full_gc_heapdump_post, " Post Heap Dump") \
196+
f(full_gc_propagate_gc_state, " Propagate GC State") \
191197
\
192198
f(conc_uncommit, "Concurrent Uncommit") \
193199
f(pacing, "Pacing") \

src/hotspot/share/gc/shenandoah/shenandoahVMOperations.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,47 +84,40 @@ void VM_ShenandoahInitMark::doit() {
8484
ShenandoahGCPauseMark mark(_gc_id, "Init Mark", SvcGCMarker::CONCURRENT);
8585
set_active_generation();
8686
_gc->entry_init_mark();
87-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
8887
}
8988

9089
void VM_ShenandoahFinalMarkStartEvac::doit() {
9190
ShenandoahGCPauseMark mark(_gc_id, "Final Mark", SvcGCMarker::CONCURRENT);
9291
set_active_generation();
9392
_gc->entry_final_mark();
94-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
9593
}
9694

9795
void VM_ShenandoahFullGC::doit() {
9896
ShenandoahGCPauseMark mark(_gc_id, "Full GC", SvcGCMarker::FULL);
9997
set_active_generation();
10098
_full_gc->entry_full(_gc_cause);
101-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
10299
}
103100

104101
void VM_ShenandoahDegeneratedGC::doit() {
105102
ShenandoahGCPauseMark mark(_gc_id, "Degenerated GC", SvcGCMarker::CONCURRENT);
106103
set_active_generation();
107104
_gc->entry_degenerated();
108-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
109105
}
110106

111107
void VM_ShenandoahInitUpdateRefs::doit() {
112108
ShenandoahGCPauseMark mark(_gc_id, "Init Update Refs", SvcGCMarker::CONCURRENT);
113109
set_active_generation();
114110
_gc->entry_init_update_refs();
115-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
116111
}
117112

118113
void VM_ShenandoahFinalUpdateRefs::doit() {
119114
ShenandoahGCPauseMark mark(_gc_id, "Final Update Refs", SvcGCMarker::CONCURRENT);
120115
set_active_generation();
121116
_gc->entry_final_update_refs();
122-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
123117
}
124118

125119
void VM_ShenandoahFinalRoots::doit() {
126120
ShenandoahGCPauseMark mark(_gc_id, "Final Roots", SvcGCMarker::CONCURRENT);
127121
set_active_generation();
128122
_gc->entry_final_roots();
129-
ShenandoahHeap::heap()->propagate_gc_state_to_all_threads();
130123
}

0 commit comments

Comments
 (0)