RFR 9/8u: Print heap changes in phases that actually change heap

Aleksey Shipilev shade at redhat.com
Wed May 10 10:25:11 UTC 2017


Hi,

I think it makes sense to print heap changes only for phases that change heap
occupancy. This means demoting Init-UR, and promoting Conc Reset Bitmaps:

diff -r 4ee5b7c8a8ac src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp	Tue May 09
12:26:31 2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp	Wed May 10
12:24:22 2017 +0200
@@ -244,7 +244,7 @@

   {
-    GCTraceTime(Info, gc) time("Concurrent reset bitmaps", gc_timer,
GCCause::_no_gc);
+    GCTraceTime(Info, gc) time("Concurrent reset bitmaps", gc_timer,
GCCause::_no_gc, true);

diff -r 4ee5b7c8a8ac src/share/vm/gc/shenandoah/vm_operations_shenandoah.cpp
--- a/src/share/vm/gc/shenandoah/vm_operations_shenandoah.cpp	Tue May 09
12:26:31 2017 +0200
+++ b/src/share/vm/gc/shenandoah/vm_operations_shenandoah.cpp	Wed May 10
12:24:22 2017 +0200
@@ -147,7 +147,7 @@
 void VM_ShenandoahInitUpdateRefs::doit() {
   GCIdMark gc_id_mark(_gc_id);
   ShenandoahHeap *sh = ShenandoahHeap::heap();
-  GCTraceTime(Info, gc) time("Pause Init Update Refs", sh->gc_timer(),
GCCause::_no_gc, true);
+  GCTraceTime(Info, gc) time("Pause Init Update Refs", sh->gc_timer(),
GCCause::_no_gc);

Will look like this:

[info][gc] GC(3) Pause Init Mark 0.481ms
[info][gc] GC(3) Concurrent marking 3698M->3704M(4096M) 2.087ms
[info][gc] GC(3) Pause Final Mark 3704M->182M(4096M) 1.778ms
[info][gc] GC(3) Concurrent evacuation  184M->198M(4096M) 1.029ms
[info][gc] GC(3) Pause Init Update Refs 0.019ms
[info][gc] GC(3) Concurrent update references  200M->206M(4096M) 1.760ms
[info][gc] GC(3) Pause Final Update Refs 206M->48M(4096M) 0.409ms
[info][gc] GC(3) Concurrent reset bitmaps 48M->48M(4096M) 0.081ms

The mirror patch goes to 8u.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list