mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 12:04:39 +02:00
6692906: CMS: parallel concurrent marking may be prone to hanging or stalling mutators for periods of time
Inserted missing yield(check)s in closures used during the work-stealing phase of parallel concurrent marking, a missing synchronous yield-request in the cms perm gen allocation path, and a terminator-terminator for the offer_termination invocation that monitors the yield status of the concurrent marking task. Elaborated some documentation comments and made some task queue termination loop flags configurable at start-up to aid debugging in the field. Reviewed-by: jmasa, johnc, poonam
This commit is contained in:
parent
1cdd538ea5
commit
cf2163334f
4 changed files with 97 additions and 34 deletions
|
@ -280,6 +280,10 @@ class CommandLineFlags {
|
|||
// UnlockExperimentalVMOptions flag, which allows the control and
|
||||
// modification of the experimental flags.
|
||||
//
|
||||
// Nota bene: neither diagnostic nor experimental options should be used casually,
|
||||
// and they are not supported on production loads, except under explicit
|
||||
// direction from support engineers.
|
||||
//
|
||||
// manageable flags are writeable external product flags.
|
||||
// They are dynamically writeable through the JDK management interface
|
||||
// (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.
|
||||
|
@ -1809,17 +1813,17 @@ class CommandLineFlags {
|
|||
develop(uintx, PromotionFailureALotInterval, 5, \
|
||||
"Total collections between promotion failures alot") \
|
||||
\
|
||||
develop(intx, WorkStealingSleepMillis, 1, \
|
||||
experimental(intx, WorkStealingSleepMillis, 1, \
|
||||
"Sleep time when sleep is used for yields") \
|
||||
\
|
||||
develop(uintx, WorkStealingYieldsBeforeSleep, 1000, \
|
||||
experimental(uintx, WorkStealingYieldsBeforeSleep, 1000, \
|
||||
"Number of yields before a sleep is done during workstealing") \
|
||||
\
|
||||
develop(uintx, WorkStealingHardSpins, 4096, \
|
||||
experimental(uintx, WorkStealingHardSpins, 4096, \
|
||||
"Number of iterations in a spin loop between checks on " \
|
||||
"time out of hard spin") \
|
||||
\
|
||||
develop(uintx, WorkStealingSpinToYieldRatio, 10, \
|
||||
experimental(uintx, WorkStealingSpinToYieldRatio, 10, \
|
||||
"Ratio of hard spins to calls to yield") \
|
||||
\
|
||||
product(uintx, PreserveMarkStackSize, 1024, \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue