comparison src/share/vm/runtime/globals.hpp @ 1145:e018e6884bd8

6631166: CMS: better heuristics when combatting fragmentation Summary: Autonomic per-worker free block cache sizing, tunable coalition policies, fixes to per-size block statistics, retuned gain and bandwidth of some feedback loop filters to allow quicker reactivity to abrupt changes in ambient demand, and other heuristics to reduce fragmentation of the CMS old gen. Also tightened some assertions, including those related to locking. Reviewed-by: jmasa
author ysr
date Wed, 23 Dec 2009 09:23:54 -0800
parents 473cce303f13
children 504830073409
comparison
equal deleted inserted replaced
1111:44f61c24ddab 1145:e018e6884bd8
1353 "we simulate overflow; a smaller number increases frequency") \ 1353 "we simulate overflow; a smaller number increases frequency") \
1354 \ 1354 \
1355 product(uintx, ParGCDesiredObjsFromOverflowList, 20, \ 1355 product(uintx, ParGCDesiredObjsFromOverflowList, 20, \
1356 "The desired number of objects to claim from the overflow list") \ 1356 "The desired number of objects to claim from the overflow list") \
1357 \ 1357 \
1358 product(uintx, CMSParPromoteBlocksToClaim, 50, \ 1358 product(uintx, CMSParPromoteBlocksToClaim, 16, \
1359 "Number of blocks to attempt to claim when refilling CMS LAB for "\ 1359 "Number of blocks to attempt to claim when refilling CMS LAB for "\
1360 "parallel GC.") \ 1360 "parallel GC.") \
1361 \
1362 product(uintx, OldPLABWeight, 50, \
1363 "Percentage (0-100) used to weight the current sample when" \
1364 "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
1365 \
1366 product(bool, ResizeOldPLAB, true, \
1367 "Dynamically resize (old gen) promotion labs") \
1368 \
1369 product(bool, PrintOldPLAB, false, \
1370 "Print (old gen) promotion labs sizing decisions") \
1371 \
1372 product(uintx, CMSOldPLABMin, 16, \
1373 "Min size of CMS gen promotion lab caches per worker per blksize")\
1374 \
1375 product(uintx, CMSOldPLABMax, 1024, \
1376 "Max size of CMS gen promotion lab caches per worker per blksize")\
1377 \
1378 product(uintx, CMSOldPLABNumRefills, 4, \
1379 "Nominal number of refills of CMS gen promotion lab cache" \
1380 " per worker per block size") \
1381 \
1382 product(bool, CMSOldPLABResizeQuicker, false, \
1383 "Whether to react on-the-fly during a scavenge to a sudden" \
1384 " change in block demand rate") \
1385 \
1386 product(uintx, CMSOldPLABToleranceFactor, 4, \
1387 "The tolerance of the phase-change detector for on-the-fly" \
1388 " PLAB resizing during a scavenge") \
1389 \
1390 product(uintx, CMSOldPLABReactivityFactor, 2, \
1391 "The gain in the feedback loop for on-the-fly PLAB resizing" \
1392 " during a scavenge") \
1393 \
1394 product(uintx, CMSOldPLABReactivityCeiling, 10, \
1395 "The clamping of the gain in the feedback loop for on-the-fly" \
1396 " PLAB resizing during a scavenge") \
1361 \ 1397 \
1362 product(bool, AlwaysPreTouch, false, \ 1398 product(bool, AlwaysPreTouch, false, \
1363 "It forces all freshly committed pages to be pre-touched.") \ 1399 "It forces all freshly committed pages to be pre-touched.") \
1364 \ 1400 \
1365 product(bool, CMSUseOldDefaults, false, \ 1401 product(bool, CMSUseOldDefaults, false, \
1398 \ 1434 \
1399 product(uintx, CMSIncrementalOffset, 0, \ 1435 product(uintx, CMSIncrementalOffset, 0, \
1400 "Percentage (0-100) by which the CMS incremental mode duty cycle" \ 1436 "Percentage (0-100) by which the CMS incremental mode duty cycle" \
1401 " is shifted to the right within the period between young GCs") \ 1437 " is shifted to the right within the period between young GCs") \
1402 \ 1438 \
1403 product(uintx, CMSExpAvgFactor, 25, \ 1439 product(uintx, CMSExpAvgFactor, 50, \
1404 "Percentage (0-100) used to weight the current sample when " \ 1440 "Percentage (0-100) used to weight the current sample when" \
1405 "computing exponential averages for CMS statistics") \ 1441 "computing exponential averages for CMS statistics.") \
1406 \ 1442 \
1407 product(uintx, CMS_FLSWeight, 50, \ 1443 product(uintx, CMS_FLSWeight, 75, \
1408 "Percentage (0-100) used to weight the current sample when " \ 1444 "Percentage (0-100) used to weight the current sample when" \
1409 "computing exponentially decating averages for CMS FLS statistics") \ 1445 "computing exponentially decating averages for CMS FLS statistics.") \
1410 \ 1446 \
1411 product(uintx, CMS_FLSPadding, 2, \ 1447 product(uintx, CMS_FLSPadding, 1, \
1412 "The multiple of deviation from mean to use for buffering " \ 1448 "The multiple of deviation from mean to use for buffering" \
1413 "against volatility in free list demand.") \ 1449 "against volatility in free list demand.") \
1414 \ 1450 \
1415 product(uintx, FLSCoalescePolicy, 2, \ 1451 product(uintx, FLSCoalescePolicy, 2, \
1416 "CMS: Aggression level for coalescing, increasing from 0 to 4") \ 1452 "CMS: Aggression level for coalescing, increasing from 0 to 4") \
1417 \ 1453 \
1418 product(uintx, CMS_SweepWeight, 50, \ 1454 product(bool, FLSAlwaysCoalesceLarge, false, \
1455 "CMS: Larger free blocks are always available for coalescing") \
1456 \
1457 product(double, FLSLargestBlockCoalesceProximity, 0.99, \
1458 "CMS: the smaller the percentage the greater the coalition force")\
1459 \
1460 product(double, CMSSmallCoalSurplusPercent, 1.05, \
1461 "CMS: the factor by which to inflate estimated demand of small" \
1462 " block sizes to prevent coalescing with an adjoining block") \
1463 \
1464 product(double, CMSLargeCoalSurplusPercent, 0.95, \
1465 "CMS: the factor by which to inflate estimated demand of large" \
1466 " block sizes to prevent coalescing with an adjoining block") \
1467 \
1468 product(double, CMSSmallSplitSurplusPercent, 1.10, \
1469 "CMS: the factor by which to inflate estimated demand of small" \
1470 " block sizes to prevent splitting to supply demand for smaller" \
1471 " blocks") \
1472 \
1473 product(double, CMSLargeSplitSurplusPercent, 1.00, \
1474 "CMS: the factor by which to inflate estimated demand of large" \
1475 " block sizes to prevent splitting to supply demand for smaller" \
1476 " blocks") \
1477 \
1478 product(bool, CMSExtrapolateSweep, false, \
1479 "CMS: cushion for block demand during sweep") \
1480 \
1481 product(uintx, CMS_SweepWeight, 75, \
1419 "Percentage (0-100) used to weight the current sample when " \ 1482 "Percentage (0-100) used to weight the current sample when " \
1420 "computing exponentially decaying average for inter-sweep " \ 1483 "computing exponentially decaying average for inter-sweep " \
1421 "duration") \ 1484 "duration") \
1422 \ 1485 \
1423 product(uintx, CMS_SweepPadding, 2, \ 1486 product(uintx, CMS_SweepPadding, 1, \
1424 "The multiple of deviation from mean to use for buffering " \ 1487 "The multiple of deviation from mean to use for buffering " \
1425 "against volatility in inter-sweep duration.") \ 1488 "against volatility in inter-sweep duration.") \
1426 \ 1489 \
1427 product(uintx, CMS_SweepTimerThresholdMillis, 10, \ 1490 product(uintx, CMS_SweepTimerThresholdMillis, 10, \
1428 "Skip block flux-rate sampling for an epoch unless inter-sweep " \ 1491 "Skip block flux-rate sampling for an epoch unless inter-sweep " \
1456 develop(intx, CMSDictionaryChoice, 0, \ 1519 develop(intx, CMSDictionaryChoice, 0, \
1457 "Use BinaryTreeDictionary as default in the CMS generation") \ 1520 "Use BinaryTreeDictionary as default in the CMS generation") \
1458 \ 1521 \
1459 product(uintx, CMSIndexedFreeListReplenish, 4, \ 1522 product(uintx, CMSIndexedFreeListReplenish, 4, \
1460 "Replenish and indexed free list with this number of chunks") \ 1523 "Replenish and indexed free list with this number of chunks") \
1524 \
1525 product(bool, CMSReplenishIntermediate, true, \
1526 "Replenish all intermediate free-list caches") \
1527 \
1528 product(bool, CMSSplitIndexedFreeListBlocks, true, \
1529 "When satisfying batched demand, splot blocks from the " \
1530 "IndexedFreeList whose size is a multiple of requested size") \
1461 \ 1531 \
1462 product(bool, CMSLoopWarn, false, \ 1532 product(bool, CMSLoopWarn, false, \
1463 "Warn in case of excessive CMS looping") \ 1533 "Warn in case of excessive CMS looping") \
1464 \ 1534 \
1465 develop(bool, CMSOverflowEarlyRestoration, false, \ 1535 develop(bool, CMSOverflowEarlyRestoration, false, \
1591 \ 1661 \
1592 product(uintx, CMSBitMapYieldQuantum, 10*M, \ 1662 product(uintx, CMSBitMapYieldQuantum, 10*M, \
1593 "Bitmap operations should process at most this many bits" \ 1663 "Bitmap operations should process at most this many bits" \
1594 "between yields") \ 1664 "between yields") \
1595 \ 1665 \
1666 product(bool, CMSDumpAtPromotionFailure, false, \
1667 "Dump useful information about the state of the CMS old " \
1668 " generation upon a promotion failure.") \
1669 \
1670 product(bool, CMSPrintChunksInDump, false, \
1671 "In a dump enabled by CMSDumpAtPromotionFailure, include " \
1672 " more detailed information about the free chunks.") \
1673 \
1674 product(bool, CMSPrintObjectsInDump, false, \
1675 "In a dump enabled by CMSDumpAtPromotionFailure, include " \
1676 " more detailed information about the allocated objects.") \
1677 \
1596 diagnostic(bool, FLSVerifyAllHeapReferences, false, \ 1678 diagnostic(bool, FLSVerifyAllHeapReferences, false, \
1597 "Verify that all refs across the FLS boundary " \ 1679 "Verify that all refs across the FLS boundary " \
1598 " are to valid objects") \ 1680 " are to valid objects") \
1599 \ 1681 \
1600 diagnostic(bool, FLSVerifyLists, false, \ 1682 diagnostic(bool, FLSVerifyLists, false, \
1674 "Enforce ScavengeALot/GCALot at all potential safepoints") \ 1756 "Enforce ScavengeALot/GCALot at all potential safepoints") \
1675 \ 1757 \
1676 product(bool, HandlePromotionFailure, true, \ 1758 product(bool, HandlePromotionFailure, true, \
1677 "The youngest generation collection does not require " \ 1759 "The youngest generation collection does not require " \
1678 "a guarantee of full promotion of all live objects.") \ 1760 "a guarantee of full promotion of all live objects.") \
1761 \
1762 product(bool, PrintPromotionFailure, false, \
1763 "Print additional diagnostic information following " \
1764 " promotion failure") \
1679 \ 1765 \
1680 notproduct(bool, PromotionFailureALot, false, \ 1766 notproduct(bool, PromotionFailureALot, false, \
1681 "Use promotion failure handling on every youngest generation " \ 1767 "Use promotion failure handling on every youngest generation " \
1682 "collection") \ 1768 "collection") \
1683 \ 1769 \