RFR: Traversal should be reported as concurrent cycle in gc+stats

Roman Kennke rkennke at redhat.com
Tue Mar 20 18:30:37 UTC 2018


Am 20.03.2018 um 18:45 schrieb Aleksey Shipilev:
> Traversal GC would print this in gc+stats:
> 
> [73.539s][info][gc,stats]     0 successful partial concurrent GCs
> [73.539s][info][gc,stats]
> [73.539s][info][gc,stats]     0 successful concurrent GCs
> [73.539s][info][gc,stats]       0 invoked explicitly
> [73.539s][info][gc,stats]
> [73.539s][info][gc,stats]     0 Degenerated GCs
> [73.539s][info][gc,stats]       0 caused by allocation failure
> [73.539s][info][gc,stats]       0 upgraded to Full GC
> [73.539s][info][gc,stats]
> [73.539s][info][gc,stats]     0 Full GCs
> [73.539s][info][gc,stats]       0 invoked explicitly
> [73.539s][info][gc,stats]       0 caused by allocation failure
> [73.539s][info][gc,stats]       0 upgraded from Degenerated GC
> [73.539s][info][gc,stats]
> 
> We miss the report that traversal had finished successfully:
> 
> diff -r eef8fad72696 src/hotspot/share/gc/shenandoah/shenandoahConcurrentThread.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentThread.cpp	Tue Mar 20 16:25:36 2018 +0100
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentThread.cpp	Tue Mar 20 18:43:43 2018 +0100
> @@ -271,6 +271,8 @@
>    if (check_cancellation_or_degen(ShenandoahHeap::_degenerated_traversal)) return;
> 
>    heap->entry_cleanup_bitmaps();
> +
> +  heap->shenandoahPolicy()->record_success_concurrent();
>  }
> 
>  void ShenandoahConcurrentThread::service_concurrent_normal_cycle(GCCause::Cause cause) {
> 
> Thanks,
> -Aleksey
> 
> 

Funny that we found the same thing from two different angles: I added it
(locally) to support adaptive traversal heuristics :-)

Go for it!

Roman



More information about the shenandoah-dev mailing list