1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/share/vm/gc_implementation/g1/g1_globals.hpp Thu Jun 05 15:57:56 2008 -0700 1.3 @@ -0,0 +1,287 @@ 1.4 +/* 1.5 + * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved. 1.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.7 + * 1.8 + * This code is free software; you can redistribute it and/or modify it 1.9 + * under the terms of the GNU General Public License version 2 only, as 1.10 + * published by the Free Software Foundation. 1.11 + * 1.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 1.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.15 + * version 2 for more details (a copy is included in the LICENSE file that 1.16 + * accompanied this code). 1.17 + * 1.18 + * You should have received a copy of the GNU General Public License version 1.19 + * 2 along with this work; if not, write to the Free Software Foundation, 1.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.21 + * 1.22 + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 1.23 + * CA 95054 USA or visit www.sun.com if you need additional information or 1.24 + * have any questions. 1.25 + * 1.26 + */ 1.27 + 1.28 +// 1.29 +// Defines all globals flags used by the garbage-first compiler. 1.30 +// 1.31 + 1.32 +#define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct, manageable, product_rw) \ 1.33 + \ 1.34 + product(intx, ParallelGCG1AllocBufferSize, 4*K, \ 1.35 + "Size of parallel G1 allocation buffers in to-space.") \ 1.36 + \ 1.37 + product(intx, G1TimeSliceMS, 500, \ 1.38 + "Time slice for MMU specification") \ 1.39 + \ 1.40 + product(intx, G1MaxPauseTimeMS, 200, \ 1.41 + "Max GC time per MMU time slice") \ 1.42 + \ 1.43 + product(intx, G1ConfidencePerc, 50, \ 1.44 + "Confidence level for MMU/pause predictions") \ 1.45 + \ 1.46 + product(intx, G1MarkingOverheadPerc, 0, \ 1.47 + "Overhead of concurrent marking") \ 1.48 + \ 1.49 + product(bool, G1AccountConcurrentOverhead, false, \ 1.50 + "Whether soft real-time compliance in G1 will take into account" \ 1.51 + "concurrent overhead") \ 1.52 + \ 1.53 + product(intx, G1YoungGenSize, 0, \ 1.54 + "Size of the G1 young generation, 0 is the adaptive policy") \ 1.55 + \ 1.56 + product(bool, G1Gen, true, \ 1.57 + "If true, it will enable the generational G1") \ 1.58 + \ 1.59 + develop(intx, G1GCPct, 10, \ 1.60 + "The desired percent time spent on GC") \ 1.61 + \ 1.62 + product(intx, G1PolicyVerbose, 0, \ 1.63 + "The verbosity level on G1 policy decisions") \ 1.64 + \ 1.65 + develop(bool, G1UseHRIntoRS, true, \ 1.66 + "Determines whether the 'advanced' HR Into rem set is used.") \ 1.67 + \ 1.68 + product(bool, G1VerifyRemSet, false, \ 1.69 + "If true, verify the rem set functioning at each GC") \ 1.70 + \ 1.71 + product(bool, G1VerifyConcMark, false, \ 1.72 + "If true, verify the conc marking code at full GC time") \ 1.73 + \ 1.74 + develop(intx, G1MarkingVerboseLevel, 0, \ 1.75 + "Level (0-4) of verboseness of the marking code") \ 1.76 + \ 1.77 + develop(bool, G1VerifyConcMarkPrintReachable, true, \ 1.78 + "If conc mark verification fails, print reachable objects") \ 1.79 + \ 1.80 + develop(bool, G1TraceMarkStackOverflow, false, \ 1.81 + "If true, extra debugging code for CM restart for ovflw.") \ 1.82 + \ 1.83 + product(bool, G1VerifyMarkingInEvac, false, \ 1.84 + "If true, verify marking info during evacuation") \ 1.85 + \ 1.86 + develop(intx, G1PausesBtwnConcMark, -1, \ 1.87 + "If positive, fixed number of pauses between conc markings") \ 1.88 + \ 1.89 + product(intx, G1EfficiencyPctCausesMark, 80, \ 1.90 + "The cum gc efficiency since mark fall-off that causes " \ 1.91 + "new marking") \ 1.92 + \ 1.93 + product(bool, TraceConcurrentMark, false, \ 1.94 + "Trace concurrent mark") \ 1.95 + \ 1.96 + product(bool, SummarizeG1ConcMark, false, \ 1.97 + "Summarize concurrent mark info") \ 1.98 + \ 1.99 + product(bool, SummarizeG1RSStats, false, \ 1.100 + "Summarize remembered set processing info") \ 1.101 + \ 1.102 + product(bool, SummarizeG1ZFStats, false, \ 1.103 + "Summarize zero-filling info") \ 1.104 + \ 1.105 + product(bool, TraceG1Refine, false, \ 1.106 + "Trace G1 concurrent refinement") \ 1.107 + \ 1.108 + develop(bool, G1ConcMark, true, \ 1.109 + "If true, run concurrent marking for G1") \ 1.110 + \ 1.111 + product(intx, G1CMStackSize, 2 * 1024 * 1024, \ 1.112 + "Size of the mark stack for concurrent marking.") \ 1.113 + \ 1.114 + product(intx, G1CMRegionStackSize, 1024 * 1024, \ 1.115 + "Size of the region stack for concurrent marking.") \ 1.116 + \ 1.117 + develop(bool, G1ConcRefine, true, \ 1.118 + "If true, run concurrent rem set refinement for G1") \ 1.119 + \ 1.120 + develop(intx, G1ConcRefineTargTraversals, 4, \ 1.121 + "Number of concurrent refinement we try to achieve") \ 1.122 + \ 1.123 + develop(intx, G1ConcRefineInitialDelta, 4, \ 1.124 + "Number of heap regions of alloc ahead of starting collection " \ 1.125 + "pause to start concurrent refinement (initially)") \ 1.126 + \ 1.127 + product(bool, G1SmoothConcRefine, true, \ 1.128 + "Attempts to smooth out the overhead of concurrent refinement") \ 1.129 + \ 1.130 + develop(bool, G1ConcZeroFill, true, \ 1.131 + "If true, run concurrent zero-filling thread") \ 1.132 + \ 1.133 + develop(intx, G1ConcZFMaxRegions, 1, \ 1.134 + "Stop zero-filling when # of zf'd regions reaches") \ 1.135 + \ 1.136 + product(intx, G1SteadyStateUsed, 90, \ 1.137 + "If non-0, try to maintain 'used' at this pct (of max)") \ 1.138 + \ 1.139 + product(intx, G1SteadyStateUsedDelta, 30, \ 1.140 + "If G1SteadyStateUsed is non-0, then do pause this number of " \ 1.141 + "of percentage points earlier if no marking is in progress.") \ 1.142 + \ 1.143 + develop(bool, G1SATBBarrierPrintNullPreVals, false, \ 1.144 + "If true, count frac of ptr writes with null pre-vals.") \ 1.145 + \ 1.146 + product(intx, G1SATBLogBufferSize, 1*K, \ 1.147 + "Number of entries in an SATB log buffer.") \ 1.148 + \ 1.149 + product(intx, G1SATBProcessCompletedThreshold, 20, \ 1.150 + "Number of completed buffers that triggers log processing.") \ 1.151 + \ 1.152 + develop(intx, G1ExtraRegionSurvRate, 33, \ 1.153 + "If the young survival rate is S, and there's room left in " \ 1.154 + "to-space, we will allow regions whose survival rate is up to " \ 1.155 + "S + (1 - S)*X, where X is this parameter (as a fraction.)") \ 1.156 + \ 1.157 + develop(intx, G1InitYoungSurvRatio, 50, \ 1.158 + "Expected Survival Rate for newly allocated bytes") \ 1.159 + \ 1.160 + develop(bool, G1SATBPrintStubs, false, \ 1.161 + "If true, print generated stubs for the SATB barrier") \ 1.162 + \ 1.163 + product(intx, G1ExpandByPctOfAvail, 20, \ 1.164 + "When expanding, % of uncommitted space to claim.") \ 1.165 + \ 1.166 + develop(bool, G1RSBarrierRegionFilter, true, \ 1.167 + "If true, generate region filtering code in RS barrier") \ 1.168 + \ 1.169 + develop(bool, G1RSBarrierNullFilter, true, \ 1.170 + "If true, generate null-pointer filtering code in RS barrier") \ 1.171 + \ 1.172 + develop(bool, G1PrintCTFilterStats, false, \ 1.173 + "If true, print stats on RS filtering effectiveness") \ 1.174 + \ 1.175 + develop(bool, G1RSBarrierUseQueue, true, \ 1.176 + "If true, use queueing RS barrier") \ 1.177 + \ 1.178 + develop(bool, G1RSLogCheckCardTable, false, \ 1.179 + "If true, verify that no dirty cards remain after RS log " \ 1.180 + "processing.") \ 1.181 + \ 1.182 + product(intx, G1MinPausesBetweenMarks, 2, \ 1.183 + "Number of inefficient pauses necessary to trigger marking.") \ 1.184 + \ 1.185 + product(intx, G1InefficientPausePct, 80, \ 1.186 + "Threshold of an 'inefficient' pauses (as % of cum efficiency.") \ 1.187 + \ 1.188 + product(intx, G1RSPopLimit, 32768, \ 1.189 + "Limit that defines popularity. Should go away! XXX") \ 1.190 + \ 1.191 + develop(bool, G1RSCountHisto, false, \ 1.192 + "If true, print a histogram of RS occupancies after each pause") \ 1.193 + \ 1.194 + product(intx, G1ObjPopLimit, 256, \ 1.195 + "Limit that defines popularity for an object.") \ 1.196 + \ 1.197 + product(bool, G1TraceFileOverwrite, false, \ 1.198 + "Allow the trace file to be overwritten") \ 1.199 + \ 1.200 + develop(intx, G1PrintRegionLivenessInfo, 0, \ 1.201 + "When > 0, print the occupancies of the <n> best and worst" \ 1.202 + "regions.") \ 1.203 + \ 1.204 + develop(bool, G1TracePopularity, false, \ 1.205 + "When true, provide detailed tracing of popularity.") \ 1.206 + \ 1.207 + product(bool, G1SummarizePopularity, false, \ 1.208 + "When true, provide end-of-run-summarization of popularity.") \ 1.209 + \ 1.210 + product(intx, G1NumPopularRegions, 1, \ 1.211 + "Number of regions reserved to hold popular objects. " \ 1.212 + "Should go away later.") \ 1.213 + \ 1.214 + develop(bool, G1PrintParCleanupStats, false, \ 1.215 + "When true, print extra stats about parallel cleanup.") \ 1.216 + \ 1.217 + product(bool, G1DoAgeCohortChecks, false, \ 1.218 + "When true, check well-formedness of age cohort structures.") \ 1.219 + \ 1.220 + develop(bool, G1DisablePreBarrier, false, \ 1.221 + "Disable generation of pre-barrier (i.e., marking barrier) ") \ 1.222 + \ 1.223 + develop(bool, G1DisablePostBarrier, false, \ 1.224 + "Disable generation of post-barrier (i.e., RS barrier) ") \ 1.225 + \ 1.226 + product(intx, G1DirtyCardQueueMax, 30, \ 1.227 + "Maximum number of completed RS buffers before mutator threads " \ 1.228 + "start processing them.") \ 1.229 + \ 1.230 + develop(intx, G1ConcRSLogCacheSize, 10, \ 1.231 + "Log base 2 of the length of conc RS hot-card cache.") \ 1.232 + \ 1.233 + product(bool, G1ConcRSCountTraversals, false, \ 1.234 + "If true, gather data about the number of times CR traverses " \ 1.235 + "cards ") \ 1.236 + \ 1.237 + product(intx, G1ConcRSHotCardLimit, 4, \ 1.238 + "The threshold that defines (>=) a hot card.") \ 1.239 + \ 1.240 + develop(bool, G1PrintOopAppls, false, \ 1.241 + "When true, print applications of closures to external locs.") \ 1.242 + \ 1.243 + product(intx, G1LogRSRegionEntries, 7, \ 1.244 + "Log_2 of max number of regions for which we keep bitmaps.") \ 1.245 + \ 1.246 + develop(bool, G1RecordHRRSOops, false, \ 1.247 + "When true, record recent calls to rem set operations.") \ 1.248 + \ 1.249 + develop(bool, G1RecordHRRSEvents, false, \ 1.250 + "When true, record recent calls to rem set operations.") \ 1.251 + \ 1.252 + develop(intx, G1MaxVerifyFailures, -1, \ 1.253 + "The maximum number of verification failrues to print. " \ 1.254 + "-1 means print all.") \ 1.255 + \ 1.256 + develop(bool, G1ScrubRemSets, true, \ 1.257 + "When true, do RS scrubbing after cleanup.") \ 1.258 + \ 1.259 + develop(bool, G1RSScrubVerbose, false, \ 1.260 + "When true, do RS scrubbing with verbose output.") \ 1.261 + \ 1.262 + develop(bool, G1YoungSurvRateVerbose, false, \ 1.263 + "print out the survival rate of young regions according to age.") \ 1.264 + \ 1.265 + develop(intx, G1YoungSurvRateNumRegionsSummary, 0, \ 1.266 + "the number of regions for which we'll print a surv rate " \ 1.267 + "summary.") \ 1.268 + \ 1.269 + product(bool, G1UseScanOnlyPrefix, false, \ 1.270 + "It determines whether the system will calculate an optimum " \ 1.271 + "scan-only set.") \ 1.272 + \ 1.273 + product(intx, G1MinReservePerc, 10, \ 1.274 + "It determines the minimum reserve we should have in the heap " \ 1.275 + "to minimize the probability of promotion failure.") \ 1.276 + \ 1.277 + product(bool, G1TraceRegions, false, \ 1.278 + "If set G1 will print information on which regions are being " \ 1.279 + "allocated and which are reclaimed.") \ 1.280 + \ 1.281 + develop(bool, G1HRRSUseSparseTable, true, \ 1.282 + "When true, use sparse table to save space.") \ 1.283 + \ 1.284 + develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \ 1.285 + "Forces flushing of log buffers before verification.") \ 1.286 + \ 1.287 + product(intx, G1MaxSurvivorRegions, 0, \ 1.288 + "The maximum number of survivor regions") 1.289 + 1.290 +G1_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG)