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