RFR: Adjust worker threads according to refproc-ergo decisions

Roman Kennke rkennke at redhat.com
Mon Jun 25 12:42:27 UTC 2018


> ...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.

Gaa! Thanks for pointing out.

> Tested before/after myself with Serial, looks fine.

Thank you!

Will push the following patch then, after testing finished.

Roman

# HG changeset patch
# User rkennke
# Date 1529930535 -7200
#      Mon Jun 25 14:42:15 2018 +0200
# Node ID 1fcebfb1122353b96b8a03f0928856e64a2a0ac7
# 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,
+                                    /* do_check = */ false);
     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,
+                                    /* do_check = */ false);
     uint nworkers = _workers->active_workers();
     traversal_gc->task_queues()->reserve(nworkers);
     if (UseShenandoahOWST) {



More information about the shenandoah-dev mailing list