src/share/vm/gc_implementation/g1/g1_globals.hpp

Sat, 06 Oct 2012 01:17:44 -0700

author
johnc
date
Sat, 06 Oct 2012 01:17:44 -0700
changeset 4173
8a5ea0a9ccc4
parent 4016
c9814fadeb38
child 4385
37f7535e5f18
permissions
-rw-r--r--

7127708: G1: change task num types from int to uint in concurrent mark
Summary: Change the type of various task num fields, parameters etc to unsigned and rename them to be more consistent with the other collectors. Code changes were also reviewed by Vitaly Davidovich.
Reviewed-by: johnc
Contributed-by: Kaushik Srenevasan <kaushik@twitter.com>

ysr@777 1 /*
tonyp@3539 2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
ysr@777 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ysr@777 4 *
ysr@777 5 * This code is free software; you can redistribute it and/or modify it
ysr@777 6 * under the terms of the GNU General Public License version 2 only, as
ysr@777 7 * published by the Free Software Foundation.
ysr@777 8 *
ysr@777 9 * This code is distributed in the hope that it will be useful, but WITHOUT
ysr@777 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ysr@777 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ysr@777 12 * version 2 for more details (a copy is included in the LICENSE file that
ysr@777 13 * accompanied this code).
ysr@777 14 *
ysr@777 15 * You should have received a copy of the GNU General Public License version
ysr@777 16 * 2 along with this work; if not, write to the Free Software Foundation,
ysr@777 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ysr@777 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
ysr@777 22 *
ysr@777 23 */
ysr@777 24
stefank@2314 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP
stefank@2314 26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP
stefank@2314 27
stefank@2314 28 #include "runtime/globals.hpp"
ysr@777 29 //
ysr@777 30 // Defines all globals flags used by the garbage-first compiler.
ysr@777 31 //
ysr@777 32
ysr@785 33 #define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw) \
ysr@777 34 \
johnc@1186 35 product(intx, G1ConfidencePercent, 50, \
ysr@777 36 "Confidence level for MMU/pause predictions") \
ysr@777 37 \
tonyp@1319 38 develop(intx, G1MarkingOverheadPercent, 0, \
ysr@777 39 "Overhead of concurrent marking") \
ysr@777 40 \
ysr@777 41 develop(intx, G1MarkingVerboseLevel, 0, \
ysr@777 42 "Level (0-4) of verboseness of the marking code") \
ysr@777 43 \
tonyp@1479 44 develop(bool, G1PrintReachableAtInitialMark, false, \
tonyp@1479 45 "Reachable object dump at the initial mark pause") \
tonyp@1479 46 \
tonyp@1479 47 develop(bool, G1VerifyDuringGCPrintReachable, false, \
tonyp@1479 48 "If conc mark verification fails, dump reachable objects") \
tonyp@1479 49 \
tonyp@1479 50 develop(ccstr, G1PrintReachableBaseFile, NULL, \
tonyp@1479 51 "The base file name for the reachable object dumps") \
ysr@777 52 \
ysr@777 53 develop(bool, G1TraceMarkStackOverflow, false, \
ysr@777 54 "If true, extra debugging code for CM restart for ovflw.") \
ysr@777 55 \
johnc@3891 56 develop(bool, G1TraceHeapRegionRememberedSet, false, \
johnc@3891 57 "Enables heap region remembered set debug logs") \
johnc@3891 58 \
tonyp@1717 59 diagnostic(bool, G1SummarizeConcMark, false, \
ysr@777 60 "Summarize concurrent mark info") \
ysr@777 61 \
johnc@1186 62 diagnostic(bool, G1SummarizeRSetStats, false, \
ysr@777 63 "Summarize remembered set processing info") \
ysr@777 64 \
tonyp@1319 65 diagnostic(intx, G1SummarizeRSetStatsPeriod, 0, \
tonyp@1319 66 "The period (in number of GCs) at which we will generate " \
tonyp@1319 67 "update buffer processing info " \
tonyp@1319 68 "(0 means do not periodically generate this info); " \
tonyp@1319 69 "it also requires -XX:+G1SummarizeRSetStats") \
tonyp@1319 70 \
tonyp@1717 71 diagnostic(bool, G1TraceConcRefinement, false, \
ysr@777 72 "Trace G1 concurrent refinement") \
ysr@777 73 \
johnc@2494 74 product(double, G1ConcMarkStepDurationMillis, 10.0, \
johnc@2494 75 "Target duration of individual concurrent marking steps " \
johnc@2494 76 "in milliseconds.") \
johnc@2494 77 \
johnc@2494 78 product(intx, G1RefProcDrainInterval, 10, \
johnc@2494 79 "The number of discovered reference objects to process before " \
johnc@2494 80 "draining concurrent marking work queues.") \
johnc@2494 81 \
johnc@2781 82 experimental(bool, G1UseConcMarkReferenceProcessing, true, \
johnc@2718 83 "If true, enable reference discovery during concurrent " \
johnc@2781 84 "marking and reference processing at the end of remark.") \
ysr@777 85 \
tonyp@1717 86 product(intx, G1SATBBufferSize, 1*K, \
ysr@777 87 "Number of entries in an SATB log buffer.") \
ysr@777 88 \
tonyp@1717 89 develop(intx, G1SATBProcessCompletedThreshold, 20, \
ysr@777 90 "Number of completed buffers that triggers log processing.") \
ysr@777 91 \
tonyp@2469 92 product(uintx, G1SATBBufferEnqueueingThresholdPercent, 60, \
tonyp@2469 93 "Before enqueueing them, each mutator thread tries to do some " \
tonyp@2469 94 "filtering on the SATB buffers it generates. If post-filtering " \
tonyp@2469 95 "the percentage of retained entries is over this threshold " \
tonyp@2469 96 "the buffer will be enqueued for processing. A value of 0 " \
tonyp@2469 97 "specifies that mutator threads should not do such filtering.") \
tonyp@2469 98 \
ysr@777 99 develop(intx, G1ExtraRegionSurvRate, 33, \
ysr@777 100 "If the young survival rate is S, and there's room left in " \
ysr@777 101 "to-space, we will allow regions whose survival rate is up to " \
ysr@777 102 "S + (1 - S)*X, where X is this parameter (as a fraction.)") \
ysr@777 103 \
ysr@777 104 develop(intx, G1InitYoungSurvRatio, 50, \
ysr@777 105 "Expected Survival Rate for newly allocated bytes") \
ysr@777 106 \
ysr@777 107 develop(bool, G1SATBPrintStubs, false, \
ysr@777 108 "If true, print generated stubs for the SATB barrier") \
ysr@777 109 \
tonyp@1717 110 experimental(intx, G1ExpandByPercentOfAvailable, 20, \
ysr@777 111 "When expanding, % of uncommitted space to claim.") \
ysr@777 112 \
ysr@777 113 develop(bool, G1RSBarrierRegionFilter, true, \
ysr@777 114 "If true, generate region filtering code in RS barrier") \
ysr@777 115 \
ysr@777 116 develop(bool, G1RSBarrierNullFilter, true, \
ysr@777 117 "If true, generate null-pointer filtering code in RS barrier") \
ysr@777 118 \
iveresov@1051 119 develop(bool, G1DeferredRSUpdate, true, \
iveresov@1051 120 "If true, use deferred RS updates") \
iveresov@1051 121 \
ysr@777 122 develop(bool, G1RSLogCheckCardTable, false, \
ysr@777 123 "If true, verify that no dirty cards remain after RS log " \
ysr@777 124 "processing.") \
ysr@777 125 \
ysr@777 126 develop(bool, G1RSCountHisto, false, \
ysr@777 127 "If true, print a histogram of RS occupancies after each pause") \
ysr@777 128 \
tonyp@3121 129 diagnostic(bool, G1PrintRegionLivenessInfo, false, \
tonyp@3121 130 "Prints the liveness information for all regions in the heap " \
tonyp@3121 131 "at the end of a marking cycle.") \
ysr@777 132 \
tonyp@1318 133 product(intx, G1UpdateBufferSize, 256, \
tonyp@1318 134 "Size of an update buffer") \
tonyp@1318 135 \
tonyp@1717 136 product(intx, G1ConcRefinementYellowZone, 0, \
tonyp@1318 137 "Number of enqueued update buffers that will " \
iveresov@1546 138 "trigger concurrent processing. Will be selected ergonomically " \
iveresov@1546 139 "by default.") \
tonyp@1318 140 \
tonyp@1717 141 product(intx, G1ConcRefinementRedZone, 0, \
tonyp@1318 142 "Maximum number of enqueued update buffers before mutator " \
iveresov@1546 143 "threads start processing new ones instead of enqueueing them. " \
iveresov@1546 144 "Will be selected ergonomically by default. Zero will disable " \
iveresov@1546 145 "concurrent processing.") \
iveresov@1546 146 \
tonyp@1717 147 product(intx, G1ConcRefinementGreenZone, 0, \
iveresov@1546 148 "The number of update buffers that are left in the queue by the " \
iveresov@1546 149 "concurrent processing threads. Will be selected ergonomically " \
iveresov@1546 150 "by default.") \
iveresov@1546 151 \
tonyp@1717 152 product(intx, G1ConcRefinementServiceIntervalMillis, 300, \
iveresov@1546 153 "The last concurrent refinement thread wakes up every " \
iveresov@1546 154 "specified number of milliseconds to do miscellaneous work.") \
iveresov@1546 155 \
tonyp@1717 156 product(intx, G1ConcRefinementThresholdStep, 0, \
iveresov@1546 157 "Each time the rset update queue increases by this amount " \
iveresov@1546 158 "activate the next refinement thread if available. " \
iveresov@1546 159 "Will be selected ergonomically by default.") \
iveresov@1546 160 \
tonyp@1717 161 product(intx, G1RSetUpdatingPauseTimePercent, 10, \
iveresov@1546 162 "A target percentage of time that is allowed to be spend on " \
iveresov@1546 163 "process RS update buffers during the collection pause.") \
iveresov@1546 164 \
tonyp@1717 165 product(bool, G1UseAdaptiveConcRefinement, true, \
iveresov@1546 166 "Select green, yellow and red zones adaptively to meet the " \
iveresov@1546 167 "the pause requirements.") \
ysr@777 168 \
ysr@777 169 develop(intx, G1ConcRSLogCacheSize, 10, \
ysr@777 170 "Log base 2 of the length of conc RS hot-card cache.") \
ysr@777 171 \
johnc@1186 172 develop(intx, G1ConcRSHotCardLimit, 4, \
ysr@777 173 "The threshold that defines (>=) a hot card.") \
ysr@777 174 \
johnc@2713 175 develop(intx, G1MaxHotCardCountSizePercent, 25, \
johnc@2713 176 "The maximum size of the hot card count cache as a " \
johnc@2713 177 "percentage of the number of cards for the maximum heap.") \
johnc@2713 178 \
ysr@777 179 develop(bool, G1PrintOopAppls, false, \
ysr@777 180 "When true, print applications of closures to external locs.") \
ysr@777 181 \
iveresov@1696 182 develop(intx, G1RSetRegionEntriesBase, 256, \
iveresov@1696 183 "Max number of regions in a fine-grain table per MB.") \
iveresov@1696 184 \
iveresov@1696 185 product(intx, G1RSetRegionEntries, 0, \
iveresov@1696 186 "Max number of regions for which we keep bitmaps." \
iveresov@1696 187 "Will be set ergonomically by default") \
iveresov@1696 188 \
iveresov@1696 189 develop(intx, G1RSetSparseRegionEntriesBase, 4, \
iveresov@1696 190 "Max number of entries per region in a sparse table " \
iveresov@1696 191 "per MB.") \
iveresov@1696 192 \
iveresov@1696 193 product(intx, G1RSetSparseRegionEntries, 0, \
iveresov@1696 194 "Max number of entries per region in a sparse table." \
iveresov@1696 195 "Will be set ergonomically by default.") \
ysr@777 196 \
ysr@777 197 develop(bool, G1RecordHRRSOops, false, \
ysr@777 198 "When true, record recent calls to rem set operations.") \
ysr@777 199 \
ysr@777 200 develop(bool, G1RecordHRRSEvents, false, \
ysr@777 201 "When true, record recent calls to rem set operations.") \
ysr@777 202 \
ysr@777 203 develop(intx, G1MaxVerifyFailures, -1, \
ysr@777 204 "The maximum number of verification failrues to print. " \
ysr@777 205 "-1 means print all.") \
ysr@777 206 \
ysr@777 207 develop(bool, G1ScrubRemSets, true, \
ysr@777 208 "When true, do RS scrubbing after cleanup.") \
ysr@777 209 \
ysr@777 210 develop(bool, G1RSScrubVerbose, false, \
ysr@777 211 "When true, do RS scrubbing with verbose output.") \
ysr@777 212 \
ysr@777 213 develop(bool, G1YoungSurvRateVerbose, false, \
ysr@777 214 "print out the survival rate of young regions according to age.") \
ysr@777 215 \
ysr@777 216 develop(intx, G1YoungSurvRateNumRegionsSummary, 0, \
ysr@777 217 "the number of regions for which we'll print a surv rate " \
ysr@777 218 "summary.") \
ysr@777 219 \
tonyp@3119 220 product(uintx, G1ReservePercent, 10, \
ysr@777 221 "It determines the minimum reserve we should have in the heap " \
ysr@777 222 "to minimize the probability of promotion failure.") \
ysr@777 223 \
tonyp@1717 224 diagnostic(bool, G1PrintHeapRegions, false, \
ysr@777 225 "If set G1 will print information on which regions are being " \
ysr@777 226 "allocated and which are reclaimed.") \
ysr@777 227 \
ysr@777 228 develop(bool, G1HRRSUseSparseTable, true, \
ysr@777 229 "When true, use sparse table to save space.") \
ysr@777 230 \
ysr@777 231 develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \
ysr@777 232 "Forces flushing of log buffers before verification.") \
ysr@777 233 \
ysr@1522 234 develop(bool, G1FailOnFPError, false, \
ysr@1522 235 "When set, G1 will fail when it encounters an FP 'error', " \
ysr@1522 236 "so as to allow debugging") \
ysr@1522 237 \
tonyp@1377 238 product(uintx, G1HeapRegionSize, 0, \
tonyp@1377 239 "Size of the G1 regions.") \
tonyp@1377 240 \
tonyp@1792 241 experimental(bool, G1UseParallelRSetUpdating, true, \
tonyp@1073 242 "Enables the parallelization of remembered set updating " \
tonyp@1073 243 "during evacuation pauses") \
tonyp@1073 244 \
tonyp@1792 245 experimental(bool, G1UseParallelRSetScanning, true, \
tonyp@1073 246 "Enables the parallelization of remembered set scanning " \
iveresov@1229 247 "during evacuation pauses") \
iveresov@1229 248 \
tonyp@1717 249 product(uintx, G1ConcRefinementThreads, 0, \
iveresov@1229 250 "If non-0 is the number of parallel rem set update threads, " \
johnc@1325 251 "otherwise the value is determined ergonomically.") \
johnc@1325 252 \
johnc@1325 253 develop(intx, G1CardCountCacheExpandThreshold, 16, \
johnc@1325 254 "Expand the card count cache if the number of collisions for " \
apetrusenko@1375 255 "a particular entry exceeds this value.") \
apetrusenko@1375 256 \
apetrusenko@1375 257 develop(bool, G1VerifyCTCleanup, false, \
ysr@1629 258 "Verify card table cleanup.") \
ysr@1629 259 \
iveresov@1696 260 product(uintx, G1RSetScanBlockSize, 64, \
iveresov@1696 261 "Size of a work unit of cards claimed by a worker thread" \
iveresov@1696 262 "during RSet scanning.") \
iveresov@1696 263 \
tonyp@2472 264 develop(uintx, G1SecondaryFreeListAppendLength, 5, \
tonyp@2472 265 "The number of regions we will add to the secondary free list " \
tonyp@2472 266 "at every append operation") \
tonyp@2472 267 \
tonyp@2472 268 develop(bool, G1ConcRegionFreeingVerbose, false, \
tonyp@2472 269 "Enables verboseness during concurrent region freeing") \
tonyp@2472 270 \
tonyp@2472 271 develop(bool, G1StressConcRegionFreeing, false, \
tonyp@2472 272 "It stresses the concurrent region freeing operation") \
tonyp@2472 273 \
tonyp@2472 274 develop(uintx, G1StressConcRegionFreeingDelayMillis, 0, \
tonyp@2472 275 "Artificial delay during concurrent region freeing") \
tonyp@2472 276 \
tonyp@2817 277 develop(uintx, G1DummyRegionsPerGC, 0, \
tonyp@2817 278 "The number of dummy regions G1 will allocate at the end of " \
tonyp@2817 279 "each evacuation pause in order to artificially fill up the " \
tonyp@2817 280 "heap and stress the marking implementation.") \
tonyp@2817 281 \
johnc@2504 282 develop(bool, G1ExitOnExpansionFailure, false, \
johnc@2504 283 "Raise a fatal VM exit out of memory failure in the event " \
tonyp@2848 284 " that heap expansion fails due to running out of swap.") \
tonyp@2848 285 \
tonyp@2848 286 develop(uintx, G1ConcMarkForceOverflow, 0, \
tonyp@2848 287 "The number of times we'll force an overflow during " \
brutisso@3358 288 "concurrent marking") \
brutisso@3358 289 \
brutisso@3999 290 experimental(uintx, G1DefaultMinNewGenPercent, 20, \
brutisso@3358 291 "Percentage (0-100) of the heap size to use as minimum " \
brutisso@3358 292 "young gen size.") \
brutisso@3358 293 \
brutisso@3999 294 experimental(uintx, G1DefaultMaxNewGenPercent, 80, \
brutisso@3358 295 "Percentage (0-100) of the heap size to use as maximum " \
tonyp@3539 296 "young gen size.") \
tonyp@3539 297 \
brutisso@3999 298 experimental(uintx, G1OldCSetRegionLiveThresholdPercent, 90, \
tonyp@3539 299 "Threshold for regions to be added to the collection set. " \
brutisso@3999 300 "Regions with more live bytes than this will not be collected.") \
tonyp@3539 301 \
tonyp@3667 302 product(uintx, G1HeapWastePercent, 5, \
tonyp@3667 303 "Amount of space, expressed as a percentage of the heap size, " \
tonyp@3667 304 "that G1 is willing not to collect to avoid expensive GCs.") \
tonyp@3539 305 \
tonyp@3667 306 product(uintx, G1MixedGCCountTarget, 4, \
tonyp@3667 307 "The target number of mixed GCs after a marking cycle.") \
tonyp@3539 308 \
brutisso@3999 309 experimental(uintx, G1OldCSetRegionThresholdPercent, 10, \
tonyp@3539 310 "An upper bound for the number of old CSet regions expressed " \
brutisso@3710 311 "as a percentage of the heap size.") \
brutisso@3710 312 \
brutisso@3710 313 experimental(ccstr, G1LogLevel, NULL, \
johnc@4016 314 "Log level for G1 logging: fine, finer, finest") \
johnc@4016 315 \
johnc@4016 316 notproduct(bool, G1EvacuationFailureALot, false, \
johnc@4016 317 "Force use of evacuation failure handling during certain " \
johnc@4016 318 "evacuation pauses") \
johnc@4016 319 \
johnc@4016 320 develop(uintx, G1EvacuationFailureALotCount, 1000, \
johnc@4016 321 "Number of successful evacuations between evacuation failures " \
johnc@4016 322 "occurring at object copying") \
johnc@4016 323 \
johnc@4016 324 develop(uintx, G1EvacuationFailureALotInterval, 5, \
johnc@4016 325 "Total collections between forced triggering of evacuation " \
johnc@4016 326 "failures") \
johnc@4016 327 \
johnc@4016 328 develop(bool, G1EvacuationFailureALotDuringConcMark, true, \
johnc@4016 329 "Force use of evacuation failure handling during evacuation " \
johnc@4016 330 "pauses when marking is in progress") \
johnc@4016 331 \
johnc@4016 332 develop(bool, G1EvacuationFailureALotDuringInitialMark, true, \
johnc@4016 333 "Force use of evacuation failure handling during initial mark " \
johnc@4016 334 "evacuation pauses") \
johnc@4016 335 \
johnc@4016 336 develop(bool, G1EvacuationFailureALotDuringYoungGC, true, \
johnc@4016 337 "Force use of evacuation failure handling during young " \
johnc@4016 338 "evacuation pauses") \
johnc@4016 339 \
johnc@4016 340 develop(bool, G1EvacuationFailureALotDuringMixedGC, true, \
johnc@4016 341 "Force use of evacuation failure handling during mixed " \
johnc@4016 342 "evacuation pauses")
ysr@777 343
ysr@785 344 G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)
stefank@2314 345
stefank@2314 346 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP

mercurial