RFR: Adjust worker threads according to refproc-ergo decisions
Aleksey Shipilev
shade at redhat.com
Mon Jun 25 12:37:17 UTC 2018
On 06/25/2018 02:29 PM, Roman Kennke wrote:
> Updated changeset:
>
> # HG changeset patch
> # User rkennke
> # Date 1529929668 -7200
> # Mon Jun 25 14:27:48 2018 +0200
> # Node ID a06f3b6d1305c952aba126bc553ad203c2ea9d1d
> # Parent 1f5c9cf67f8f00e41056b406de986be3115f0f99
> Adjust worker threads according to refproc-ergo decisions
>
> diff --git
> a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
> b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
> @@ -664,6 +664,9 @@
>
> ShenandoahHeap* heap = ShenandoahHeap::heap();
> ShenandoahConcurrentMark* cm = heap->concurrentMark();
> + ShenandoahPushWorkerScope scope(_workers,
> + ergo_workers,
> + "reference processing");
> uint nworkers = _workers->active_workers();
> cm->task_queues()->reserve(nworkers);
> if (UseShenandoahOWST) {
> diff --git a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
> b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
> @@ -1068,6 +1068,9 @@
>
> ShenandoahHeap* heap = ShenandoahHeap::heap();
> ShenandoahTraversalGC* traversal_gc = heap->traversal_gc();
> + ShenandoahPushWorkerScope scope(_workers,
> + ergo_workers,
> + "reference processing");
> uint nworkers = _workers->active_workers();
> traversal_gc->task_queues()->reserve(nworkers);
> if (UseShenandoahOWST) {
...and you need do_check=false for ShenandoahPushWorkerScope, because it can be the case that
ergo_workers != ParalleGCThreads -- and the check would assert. Other than that, looks good.
Tested before/after myself with Serial, looks fine.
-Aleksey
More information about the shenandoah-dev
mailing list