RFR(M) 8043575: Dynamically parallelize reference processing work

sangheon.kim at oracle.com sangheon.kim at oracle.com
Thu May 31 04:43:15 UTC 2018

Hi all,

Could I have some reviews for this patch?

This patch is suggesting ergonomically choosing worker thread count from 
given reference count.
We have ParallelRefProcEnabled command-line option which enables to use 
ALL workers during reference processing however this option has a 
drawback when there's limited number of references. i.e. spends more 
time on thread start-up/tear-down than actual processing time if there 
are less references. And also we use all threads or single thread during 
reference processing which seems less flexible on thread counts. This 
patch calculates the worker counts from dividing reference count by 
ReferencesPerThread(newly added experimental option).
My suggestion for the default value of ReferencePerThread is 1000 as it 
showed good results from some benchmarks.

1. CMS ParNew is excluded from this patch because:
     a) There is a separate CR for CMS (JDK-6938732).
     b) It is tricky to manage switching single <-> MT processing inside 
of ReferenceProcessor class for ParNew. Tony explained quite well about 
the reason here ( 
     c) CMS will be obsoleted in the future so not motivated to fix 
within this patch.
2. JDK-8203951 is the CR for removing temporarily added 
flag(ReferenceProcessor::_has_adjustable_queue from webrev.0) to manage 
ParNew. So the flag should be removed when CMS is obsoleted.
3. Current logic of dividing by ReferencesPerThread would be replaced 
with better implementation. e.g. time measuring implementation etc. But 
I think current approach is simply and good enough.
4. This patch is based on JDK-8204094 and JDK-8204095, both are not yet 
pushed so far.

CR: https://bugs.openjdk.java.net/browse/JDK-8043575
Webrev: http://cr.openjdk.java.net/~sangheki/8043575/webrev.0/
Testing: hs-tier 1~5 with/without ParallelRefProcEnabled

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20180530/0d822285/attachment.html>

More information about the hotspot-gc-dev mailing list