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

Fri, 13 Apr 2012 01:59:38 +0200

author
brutisso
date
Fri, 13 Apr 2012 01:59:38 +0200
changeset 3710
5c86f8211d1e
parent 3691
2a0172480595
child 3714
f7a8920427a6
permissions
-rw-r--r--

7160728: Introduce an extra logging level for G1 logging
Summary: Added log levels "fine", "finer" and "finest". Let PrintGC map to "fine" and PrintGCDetails map to "finer". Separated out the per worker information in the G1 logging to the "finest" level.
Reviewed-by: stefank, jwilhelm, tonyp, johnc

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 \
tonyp@1717 56 diagnostic(bool, G1SummarizeConcMark, false, \
ysr@777 57 "Summarize concurrent mark info") \
ysr@777 58 \
johnc@1186 59 diagnostic(bool, G1SummarizeRSetStats, false, \
ysr@777 60 "Summarize remembered set processing info") \
ysr@777 61 \
tonyp@1319 62 diagnostic(intx, G1SummarizeRSetStatsPeriod, 0, \
tonyp@1319 63 "The period (in number of GCs) at which we will generate " \
tonyp@1319 64 "update buffer processing info " \
tonyp@1319 65 "(0 means do not periodically generate this info); " \
tonyp@1319 66 "it also requires -XX:+G1SummarizeRSetStats") \
tonyp@1319 67 \
tonyp@1717 68 diagnostic(bool, G1TraceConcRefinement, false, \
ysr@777 69 "Trace G1 concurrent refinement") \
ysr@777 70 \
johnc@2494 71 product(double, G1ConcMarkStepDurationMillis, 10.0, \
johnc@2494 72 "Target duration of individual concurrent marking steps " \
johnc@2494 73 "in milliseconds.") \
johnc@2494 74 \
johnc@2494 75 product(intx, G1RefProcDrainInterval, 10, \
johnc@2494 76 "The number of discovered reference objects to process before " \
johnc@2494 77 "draining concurrent marking work queues.") \
johnc@2494 78 \
johnc@2781 79 experimental(bool, G1UseConcMarkReferenceProcessing, true, \
johnc@2718 80 "If true, enable reference discovery during concurrent " \
johnc@2781 81 "marking and reference processing at the end of remark.") \
ysr@777 82 \
tonyp@1717 83 product(intx, G1SATBBufferSize, 1*K, \
ysr@777 84 "Number of entries in an SATB log buffer.") \
ysr@777 85 \
tonyp@1717 86 develop(intx, G1SATBProcessCompletedThreshold, 20, \
ysr@777 87 "Number of completed buffers that triggers log processing.") \
ysr@777 88 \
tonyp@2469 89 product(uintx, G1SATBBufferEnqueueingThresholdPercent, 60, \
tonyp@2469 90 "Before enqueueing them, each mutator thread tries to do some " \
tonyp@2469 91 "filtering on the SATB buffers it generates. If post-filtering " \
tonyp@2469 92 "the percentage of retained entries is over this threshold " \
tonyp@2469 93 "the buffer will be enqueued for processing. A value of 0 " \
tonyp@2469 94 "specifies that mutator threads should not do such filtering.") \
tonyp@2469 95 \
ysr@777 96 develop(intx, G1ExtraRegionSurvRate, 33, \
ysr@777 97 "If the young survival rate is S, and there's room left in " \
ysr@777 98 "to-space, we will allow regions whose survival rate is up to " \
ysr@777 99 "S + (1 - S)*X, where X is this parameter (as a fraction.)") \
ysr@777 100 \
ysr@777 101 develop(intx, G1InitYoungSurvRatio, 50, \
ysr@777 102 "Expected Survival Rate for newly allocated bytes") \
ysr@777 103 \
ysr@777 104 develop(bool, G1SATBPrintStubs, false, \
ysr@777 105 "If true, print generated stubs for the SATB barrier") \
ysr@777 106 \
tonyp@1717 107 experimental(intx, G1ExpandByPercentOfAvailable, 20, \
ysr@777 108 "When expanding, % of uncommitted space to claim.") \
ysr@777 109 \
ysr@777 110 develop(bool, G1RSBarrierRegionFilter, true, \
ysr@777 111 "If true, generate region filtering code in RS barrier") \
ysr@777 112 \
ysr@777 113 develop(bool, G1RSBarrierNullFilter, true, \
ysr@777 114 "If true, generate null-pointer filtering code in RS barrier") \
ysr@777 115 \
iveresov@1051 116 develop(bool, G1DeferredRSUpdate, true, \
iveresov@1051 117 "If true, use deferred RS updates") \
iveresov@1051 118 \
ysr@777 119 develop(bool, G1RSLogCheckCardTable, false, \
ysr@777 120 "If true, verify that no dirty cards remain after RS log " \
ysr@777 121 "processing.") \
ysr@777 122 \
ysr@777 123 develop(bool, G1RSCountHisto, false, \
ysr@777 124 "If true, print a histogram of RS occupancies after each pause") \
ysr@777 125 \
tonyp@3121 126 diagnostic(bool, G1PrintRegionLivenessInfo, false, \
tonyp@3121 127 "Prints the liveness information for all regions in the heap " \
tonyp@3121 128 "at the end of a marking cycle.") \
ysr@777 129 \
ysr@777 130 develop(bool, G1PrintParCleanupStats, false, \
ysr@777 131 "When true, print extra stats about parallel cleanup.") \
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@3358 290 develop(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@3415 294 develop(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 \
tonyp@3667 298 develop(uintx, G1OldCSetRegionLiveThresholdPercent, 90, \
tonyp@3539 299 "Threshold for regions to be added to the collection set. " \
tonyp@3539 300 "Regions with more live bytes that 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 \
tonyp@3539 309 develop(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, \
brutisso@3710 314 "Log level for G1 logging: fine, finer, finest")
ysr@777 315
ysr@785 316 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 317
stefank@2314 318 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP

mercurial