RFR: Reinstate single-threaded reference processing

Roman Kennke rkennke at redhat.com
Tue Oct 16 14:44:32 UTC 2018


Back in August I proposed to get rid of the single-threaded
reference-processing path because the oom-scope in VMThread would
deadlock with the oom-scope in workers. I discussed the required RP
changes upstream:

http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2018-October/023516.html

And it has been pointed out that this is only a half-solution and may
show bad behaviour because RP would attempt to balance queues for
1-threaded execution which is not needed.

The problem only exists in traversal (conc-mark does not evac). We can
work around it differently by moving the oom-scope into the KeepAlive
and Drain closures:

http://cr.openjdk.java.net/~rkennke/redo-1thread-refproc/webrev.00/

This reverts the remaining upstream change in RP. It may pose a slight
performance issue in 1-threaded keep-alive-closure, but it appears that
if there were lots of work to do there, it would not go 1-threaded to
begin with.

Testing: tier3_gc_shenandoah

Ok?

Roman



More information about the shenandoah-dev mailing list