annotate src/share/vm/gc_implementation/g1/g1_globals.hpp @ 3275:5c86f8211d1e

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