6992998: CMSWaitDuration=0 causes hangs with +ExplicitGCInvokesConcurrent

Closed a timing hole during which concurrent full gc requests can be missed. The hole can increase the latency of the response to a full gc request by up to the value of CMSWaitDuration. If CMSWaitDuration=0 is, as currently, interpreted as an unbounded wait, suitable in certain tuning scenarios, the application can potentially hang. Made two obscure tunables, including CMSWaitDuration, manageable.

Reviewed-by: jcoomes, tonyp
This commit is contained in:
Y. Srinivas Ramakrishna 2010-10-21 17:29:24 -07:00
parent 0c660e1f60
commit 554e77efb4
3 changed files with 16 additions and 9 deletions

View file

@ -1585,7 +1585,7 @@ class CommandLineFlags {
"(Temporary, subject to experimentation)" \
"Nominal minimum work per abortable preclean iteration") \
\
product(intx, CMSAbortablePrecleanWaitMillis, 100, \
manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \
"(Temporary, subject to experimentation)" \
" Time that we sleep between iterations when not given" \
" enough work per iteration") \
@ -1677,7 +1677,7 @@ class CommandLineFlags {
product(uintx, CMSWorkQueueDrainThreshold, 10, \
"Don't drain below this size per parallel worker/thief") \
\
product(intx, CMSWaitDuration, 2000, \
manageable(intx, CMSWaitDuration, 2000, \
"Time in milliseconds that CMS thread waits for young GC") \
\
product(bool, CMSYield, true, \