annotate src/share/vm/gc_implementation/g1/g1_globals.hpp @ 2684:4f41766176cf

7084509: G1: fix inconsistencies and mistakes in the young list target length calculations Summary: Fixed inconsistencies and mistakes in the young list target length calculations so that a) the calculated target length is optimal (before, it was not), b) other parameters like max survivor size and max gc locker eden expansion are always consistent with the calculated target length (before, they were not always), and c) the resulting target length was always bound by desired min and max values (before, it was not). Reviewed-by: brutisso, johnc
author tonyp
date Thu, 08 Sep 2011 05:16:49 -0400
parents 4fe626cbf0bf
children 3bddbf0f57d6
rev   line source
ysr@342 1 /*
tonyp@2034 2 * Copyright (c) 2001, 2011, 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"
stefank@1879 29
ysr@342 30 //
ysr@342 31 // Defines all globals flags used by the garbage-first compiler.
ysr@342 32 //
ysr@342 33
ysr@350 34 #define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw) \
ysr@342 35 \
johnc@751 36 product(intx, G1ConfidencePercent, 50, \
ysr@342 37 "Confidence level for MMU/pause predictions") \
ysr@342 38 \
tonyp@884 39 develop(intx, G1MarkingOverheadPercent, 0, \
ysr@342 40 "Overhead of concurrent marking") \
ysr@342 41 \
ysr@342 42 \
johnc@751 43 develop(intx, G1PolicyVerbose, 0, \
ysr@342 44 "The verbosity level on G1 policy decisions") \
ysr@342 45 \
ysr@342 46 develop(intx, G1MarkingVerboseLevel, 0, \
ysr@342 47 "Level (0-4) of verboseness of the marking code") \
ysr@342 48 \
tonyp@1044 49 develop(bool, G1PrintReachableAtInitialMark, false, \
tonyp@1044 50 "Reachable object dump at the initial mark pause") \
tonyp@1044 51 \
tonyp@1044 52 develop(bool, G1VerifyDuringGCPrintReachable, false, \
tonyp@1044 53 "If conc mark verification fails, dump reachable objects") \
tonyp@1044 54 \
tonyp@1044 55 develop(ccstr, G1PrintReachableBaseFile, NULL, \
tonyp@1044 56 "The base file name for the reachable object dumps") \
ysr@342 57 \
ysr@342 58 develop(bool, G1TraceMarkStackOverflow, false, \
ysr@342 59 "If true, extra debugging code for CM restart for ovflw.") \
ysr@342 60 \
ysr@342 61 develop(intx, G1PausesBtwnConcMark, -1, \
ysr@342 62 "If positive, fixed number of pauses between conc markings") \
ysr@342 63 \
tonyp@1282 64 diagnostic(bool, G1SummarizeConcMark, false, \
ysr@342 65 "Summarize concurrent mark info") \
ysr@342 66 \
johnc@751 67 diagnostic(bool, G1SummarizeRSetStats, false, \
ysr@342 68 "Summarize remembered set processing info") \
ysr@342 69 \
tonyp@884 70 diagnostic(intx, G1SummarizeRSetStatsPeriod, 0, \
tonyp@884 71 "The period (in number of GCs) at which we will generate " \
tonyp@884 72 "update buffer processing info " \
tonyp@884 73 "(0 means do not periodically generate this info); " \
tonyp@884 74 "it also requires -XX:+G1SummarizeRSetStats") \
tonyp@884 75 \
tonyp@1282 76 diagnostic(bool, G1TraceConcRefinement, false, \
ysr@342 77 "Trace G1 concurrent refinement") \
ysr@342 78 \
johnc@751 79 product(intx, G1MarkRegionStackSize, 1024 * 1024, \
ysr@342 80 "Size of the region stack for concurrent marking.") \
ysr@342 81 \
johnc@2059 82 product(double, G1ConcMarkStepDurationMillis, 10.0, \
johnc@2059 83 "Target duration of individual concurrent marking steps " \
johnc@2059 84 "in milliseconds.") \
johnc@2059 85 \
johnc@2059 86 product(intx, G1RefProcDrainInterval, 10, \
johnc@2059 87 "The number of discovered reference objects to process before " \
johnc@2059 88 "draining concurrent marking work queues.") \
johnc@2059 89 \
johnc@2346 90 experimental(bool, G1UseConcMarkReferenceProcessing, true, \
johnc@2283 91 "If true, enable reference discovery during concurrent " \
johnc@2346 92 "marking and reference processing at the end of remark.") \
ysr@342 93 \
tonyp@1282 94 product(intx, G1SATBBufferSize, 1*K, \
ysr@342 95 "Number of entries in an SATB log buffer.") \
ysr@342 96 \
tonyp@1282 97 develop(intx, G1SATBProcessCompletedThreshold, 20, \
ysr@342 98 "Number of completed buffers that triggers log processing.") \
ysr@342 99 \
tonyp@2034 100 product(uintx, G1SATBBufferEnqueueingThresholdPercent, 60, \
tonyp@2034 101 "Before enqueueing them, each mutator thread tries to do some " \
tonyp@2034 102 "filtering on the SATB buffers it generates. If post-filtering " \
tonyp@2034 103 "the percentage of retained entries is over this threshold " \
tonyp@2034 104 "the buffer will be enqueued for processing. A value of 0 " \
tonyp@2034 105 "specifies that mutator threads should not do such filtering.") \
tonyp@2034 106 \
ysr@342 107 develop(intx, G1ExtraRegionSurvRate, 33, \
ysr@342 108 "If the young survival rate is S, and there's room left in " \
ysr@342 109 "to-space, we will allow regions whose survival rate is up to " \
ysr@342 110 "S + (1 - S)*X, where X is this parameter (as a fraction.)") \
ysr@342 111 \
ysr@342 112 develop(intx, G1InitYoungSurvRatio, 50, \
ysr@342 113 "Expected Survival Rate for newly allocated bytes") \
ysr@342 114 \
ysr@342 115 develop(bool, G1SATBPrintStubs, false, \
ysr@342 116 "If true, print generated stubs for the SATB barrier") \
ysr@342 117 \
tonyp@1282 118 experimental(intx, G1ExpandByPercentOfAvailable, 20, \
ysr@342 119 "When expanding, % of uncommitted space to claim.") \
ysr@342 120 \
ysr@342 121 develop(bool, G1RSBarrierRegionFilter, true, \
ysr@342 122 "If true, generate region filtering code in RS barrier") \
ysr@342 123 \
ysr@342 124 develop(bool, G1RSBarrierNullFilter, true, \
ysr@342 125 "If true, generate null-pointer filtering code in RS barrier") \
ysr@342 126 \
iveresov@616 127 develop(bool, G1DeferredRSUpdate, true, \
iveresov@616 128 "If true, use deferred RS updates") \
iveresov@616 129 \
ysr@342 130 develop(bool, G1RSLogCheckCardTable, false, \
ysr@342 131 "If true, verify that no dirty cards remain after RS log " \
ysr@342 132 "processing.") \
ysr@342 133 \
ysr@342 134 develop(bool, G1RSCountHisto, false, \
ysr@342 135 "If true, print a histogram of RS occupancies after each pause") \
ysr@342 136 \
tonyp@2282 137 product(bool, G1PrintRegionLivenessInfo, false, \
tonyp@2282 138 "Prints the liveness information for all regions in the heap " \
tonyp@2282 139 "at the end of a marking cycle.") \
ysr@342 140 \
ysr@342 141 develop(bool, G1PrintParCleanupStats, false, \
ysr@342 142 "When true, print extra stats about parallel cleanup.") \
ysr@342 143 \
tonyp@883 144 product(intx, G1UpdateBufferSize, 256, \
tonyp@883 145 "Size of an update buffer") \
tonyp@883 146 \
tonyp@1282 147 product(intx, G1ConcRefinementYellowZone, 0, \
tonyp@883 148 "Number of enqueued update buffers that will " \
iveresov@1111 149 "trigger concurrent processing. Will be selected ergonomically " \
iveresov@1111 150 "by default.") \
tonyp@883 151 \
tonyp@1282 152 product(intx, G1ConcRefinementRedZone, 0, \
tonyp@883 153 "Maximum number of enqueued update buffers before mutator " \
iveresov@1111 154 "threads start processing new ones instead of enqueueing them. " \
iveresov@1111 155 "Will be selected ergonomically by default. Zero will disable " \
iveresov@1111 156 "concurrent processing.") \
iveresov@1111 157 \
tonyp@1282 158 product(intx, G1ConcRefinementGreenZone, 0, \
iveresov@1111 159 "The number of update buffers that are left in the queue by the " \
iveresov@1111 160 "concurrent processing threads. Will be selected ergonomically " \
iveresov@1111 161 "by default.") \
iveresov@1111 162 \
tonyp@1282 163 product(intx, G1ConcRefinementServiceIntervalMillis, 300, \
iveresov@1111 164 "The last concurrent refinement thread wakes up every " \
iveresov@1111 165 "specified number of milliseconds to do miscellaneous work.") \
iveresov@1111 166 \
tonyp@1282 167 product(intx, G1ConcRefinementThresholdStep, 0, \
iveresov@1111 168 "Each time the rset update queue increases by this amount " \
iveresov@1111 169 "activate the next refinement thread if available. " \
iveresov@1111 170 "Will be selected ergonomically by default.") \
iveresov@1111 171 \
tonyp@1282 172 product(intx, G1RSetUpdatingPauseTimePercent, 10, \
iveresov@1111 173 "A target percentage of time that is allowed to be spend on " \
iveresov@1111 174 "process RS update buffers during the collection pause.") \
iveresov@1111 175 \
tonyp@1282 176 product(bool, G1UseAdaptiveConcRefinement, true, \
iveresov@1111 177 "Select green, yellow and red zones adaptively to meet the " \
iveresov@1111 178 "the pause requirements.") \
ysr@342 179 \
ysr@342 180 develop(intx, G1ConcRSLogCacheSize, 10, \
ysr@342 181 "Log base 2 of the length of conc RS hot-card cache.") \
ysr@342 182 \
johnc@751 183 develop(intx, G1ConcRSHotCardLimit, 4, \
ysr@342 184 "The threshold that defines (>=) a hot card.") \
ysr@342 185 \
johnc@2278 186 develop(intx, G1MaxHotCardCountSizePercent, 25, \
johnc@2278 187 "The maximum size of the hot card count cache as a " \
johnc@2278 188 "percentage of the number of cards for the maximum heap.") \
johnc@2278 189 \
ysr@342 190 develop(bool, G1PrintOopAppls, false, \
ysr@342 191 "When true, print applications of closures to external locs.") \
ysr@342 192 \
iveresov@1261 193 develop(intx, G1RSetRegionEntriesBase, 256, \
iveresov@1261 194 "Max number of regions in a fine-grain table per MB.") \
iveresov@1261 195 \
iveresov@1261 196 product(intx, G1RSetRegionEntries, 0, \
iveresov@1261 197 "Max number of regions for which we keep bitmaps." \
iveresov@1261 198 "Will be set ergonomically by default") \
iveresov@1261 199 \
iveresov@1261 200 develop(intx, G1RSetSparseRegionEntriesBase, 4, \
iveresov@1261 201 "Max number of entries per region in a sparse table " \
iveresov@1261 202 "per MB.") \
iveresov@1261 203 \
iveresov@1261 204 product(intx, G1RSetSparseRegionEntries, 0, \
iveresov@1261 205 "Max number of entries per region in a sparse table." \
iveresov@1261 206 "Will be set ergonomically by default.") \
ysr@342 207 \
ysr@342 208 develop(bool, G1RecordHRRSOops, false, \
ysr@342 209 "When true, record recent calls to rem set operations.") \
ysr@342 210 \
ysr@342 211 develop(bool, G1RecordHRRSEvents, false, \
ysr@342 212 "When true, record recent calls to rem set operations.") \
ysr@342 213 \
ysr@342 214 develop(intx, G1MaxVerifyFailures, -1, \
ysr@342 215 "The maximum number of verification failrues to print. " \
ysr@342 216 "-1 means print all.") \
ysr@342 217 \
ysr@342 218 develop(bool, G1ScrubRemSets, true, \
ysr@342 219 "When true, do RS scrubbing after cleanup.") \
ysr@342 220 \
ysr@342 221 develop(bool, G1RSScrubVerbose, false, \
ysr@342 222 "When true, do RS scrubbing with verbose output.") \
ysr@342 223 \
ysr@342 224 develop(bool, G1YoungSurvRateVerbose, false, \
ysr@342 225 "print out the survival rate of young regions according to age.") \
ysr@342 226 \
ysr@342 227 develop(intx, G1YoungSurvRateNumRegionsSummary, 0, \
ysr@342 228 "the number of regions for which we'll print a surv rate " \
ysr@342 229 "summary.") \
ysr@342 230 \
tonyp@2684 231 product(uintx, G1ReservePercent, 10, \
ysr@342 232 "It determines the minimum reserve we should have in the heap " \
ysr@342 233 "to minimize the probability of promotion failure.") \
ysr@342 234 \
tonyp@1282 235 diagnostic(bool, G1PrintHeapRegions, false, \
ysr@342 236 "If set G1 will print information on which regions are being " \
ysr@342 237 "allocated and which are reclaimed.") \
ysr@342 238 \
ysr@342 239 develop(bool, G1HRRSUseSparseTable, true, \
ysr@342 240 "When true, use sparse table to save space.") \
ysr@342 241 \
ysr@342 242 develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \
ysr@342 243 "Forces flushing of log buffers before verification.") \
ysr@342 244 \
ysr@1087 245 develop(bool, G1FailOnFPError, false, \
ysr@1087 246 "When set, G1 will fail when it encounters an FP 'error', " \
ysr@1087 247 "so as to allow debugging") \
ysr@1087 248 \
tonyp@942 249 product(uintx, G1HeapRegionSize, 0, \
tonyp@942 250 "Size of the G1 regions.") \
tonyp@942 251 \
tonyp@1357 252 experimental(bool, G1UseParallelRSetUpdating, true, \
tonyp@638 253 "Enables the parallelization of remembered set updating " \
tonyp@638 254 "during evacuation pauses") \
tonyp@638 255 \
tonyp@1357 256 experimental(bool, G1UseParallelRSetScanning, true, \
tonyp@638 257 "Enables the parallelization of remembered set scanning " \
iveresov@794 258 "during evacuation pauses") \
iveresov@794 259 \
tonyp@1282 260 product(uintx, G1ConcRefinementThreads, 0, \
iveresov@794 261 "If non-0 is the number of parallel rem set update threads, " \
johnc@890 262 "otherwise the value is determined ergonomically.") \
johnc@890 263 \
johnc@890 264 develop(intx, G1CardCountCacheExpandThreshold, 16, \
johnc@890 265 "Expand the card count cache if the number of collisions for " \
apetrusenko@940 266 "a particular entry exceeds this value.") \
apetrusenko@940 267 \
apetrusenko@940 268 develop(bool, G1VerifyCTCleanup, false, \
ysr@1194 269 "Verify card table cleanup.") \
ysr@1194 270 \
iveresov@1261 271 product(uintx, G1RSetScanBlockSize, 64, \
iveresov@1261 272 "Size of a work unit of cards claimed by a worker thread" \
iveresov@1261 273 "during RSet scanning.") \
iveresov@1261 274 \
tonyp@2037 275 develop(uintx, G1SecondaryFreeListAppendLength, 5, \
tonyp@2037 276 "The number of regions we will add to the secondary free list " \
tonyp@2037 277 "at every append operation") \
tonyp@2037 278 \
tonyp@2037 279 develop(bool, G1ConcRegionFreeingVerbose, false, \
tonyp@2037 280 "Enables verboseness during concurrent region freeing") \
tonyp@2037 281 \
tonyp@2037 282 develop(bool, G1StressConcRegionFreeing, false, \
tonyp@2037 283 "It stresses the concurrent region freeing operation") \
tonyp@2037 284 \
tonyp@2037 285 develop(uintx, G1StressConcRegionFreeingDelayMillis, 0, \
tonyp@2037 286 "Artificial delay during concurrent region freeing") \
tonyp@2037 287 \
tonyp@2382 288 develop(uintx, G1DummyRegionsPerGC, 0, \
tonyp@2382 289 "The number of dummy regions G1 will allocate at the end of " \
tonyp@2382 290 "each evacuation pause in order to artificially fill up the " \
tonyp@2382 291 "heap and stress the marking implementation.") \
tonyp@2382 292 \
johnc@2069 293 develop(bool, ReduceInitialCardMarksForG1, false, \
ysr@1194 294 "When ReduceInitialCardMarks is true, this flag setting " \
johnc@2069 295 " controls whether G1 allows the RICM optimization") \
johnc@2069 296 \
johnc@2069 297 develop(bool, G1ExitOnExpansionFailure, false, \
johnc@2069 298 "Raise a fatal VM exit out of memory failure in the event " \
tonyp@2413 299 " that heap expansion fails due to running out of swap.") \
tonyp@2413 300 \
tonyp@2413 301 develop(uintx, G1ConcMarkForceOverflow, 0, \
tonyp@2413 302 "The number of times we'll force an overflow during " \
tonyp@2413 303 "concurrent marking")
ysr@342 304
ysr@350 305 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 306
stefank@1879 307 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1_GLOBALS_HPP