RFR: Disable worker scaling during reference processing in traversal GC
Zhengyu Gu
zgu at redhat.com
Sat Aug 4 00:02:56 UTC 2018
This is not an optimal fix, but we need it to avoid hanging problem with
traversal GC.
Currently, we have an EvacOOMScope to guard against possible
single-threaded reference processing. Unfortunately, if the processing
is multiple-threaded (by workers)this scope can prevent evac-oom from
progressing.
For example, if a worker encounters evac-oom, it will stuck in
wait_for_no_evac_threads() method, caused by this additional scope,
which prevents worker's termination, that keeps above evac-oom scope alive.
This (probably temporary) fix is to disable worker scaling, and only
enables single-threaded evac-oom scope if reference processing is
actually single-threaded.
Webrev:
http://cr.openjdk.java.net/~zgu/shenandoah/disable_rp_processing_worker_scale/webrev.00/
Test:
tier3_gc_shenandoah (fastdebug + release)
Compiler.sunflow where the problem was seen.
Thanks,
-Zhengyu
More information about the shenandoah-dev
mailing list