JDK-6237967 : CMS: ability to tweak demand forecasting and coalition policy to control fragmentation
Type:Bug
Component:hotspot
Sub-Component:gc
Affected Version:1.4.2_06
Priority:P3
Status:Resolved
Resolution:Fixed
OS:generic
CPU:sparc
Submitted:2005-03-09
Updated:2021-10-05
Resolved:2005-06-08
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
Customer data suggests that the CMS freelist demand forecasting
and coalition policy may not be working too well.
###@###.### 2005-03-09 03:15:56 GMT
Comments
EVALUATION
Customer is unable to test the changes at this time; but
we are putting back this ability into Mustang for now.
###@###.### 2005-05-25 22:07:50 GMT
09-03-2005
WORK AROUND
Using a larger heap and survivor spaces helps, but is not
a (complete) solution to the problem.
###@###.### 2005-03-09 03:15:56 GMT
09-03-2005
SUGGESTED FIX
Event: putback-to
Parent workspace: /net/jano.sfbay/export/disk05/hotspot/ws/main/gc_baseline
(jano.sfbay:/export/disk05/hotspot/ws/main/gc_baseline)
Child workspace: /net/prt-web.sfbay/prt-workspaces/20050525150425.ysr.bugs/workspace
(prt-web:/net/prt-web.sfbay/prt-workspaces/20050525150425.ysr.bugs/workspace)
User: ysr
Comment:
---------------------------------------------------------
Original workspace: neeraja:/net/spot/scratch/ysr/bugs
Submitter: ysr
Archived data: /net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2005/20050525150425.ysr.bugs/
Webrev: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2005/20050525150425.ysr.bugs/workspace/webrevs/webrev-2005.05.26/index.html
http://analemma.sfbay/net/spot/scratch/ysr/bugs/webrev
Fixed 6237967: CMS: ability to tweak demand forecasting and coalition policy to control fragmentation
Changes to allow:
(1) a choice of coalition policies [see FLSCoaescePolicy]
(2) use of a temporal block demand estimate in conjunction
with an inter-sweep duration estimate to come up with
the size of free block inventory to maintain for the
purposes of keeping young gen pauses small and fragmentation
under control
Note that the current code conceptually subsumes the original
implementation as a specific setting of the tunables, viz.
FLSCoalescePolicy=2 CMS_{FLS,Sweep}Weight=100 CMS_{FLS,Sweep}Padding=0
thus exactly recovering the original coalition behaviour.
The details of specific changes are in the sccs comments
in the webrev. While it is possible to restructure and clean
up the code in do*Chunk() especially for specific settings of
coalition policy, I am loathe to make large changes in this
code before realizing actual performance gains from the ability
to tweak these policies (perhaps on-the-fly in an ideal, fully
ergonomic future world).
The default settings for the tunables have not yet been
tuned; such tuning is deferred to later in development.
As part of these changes, some 64-bit'isms in the code
were fixed, as well as a bug in counting the number of
completed sweeps.
Reviewed by: Ross Knippel
Fix Verified: No (no current testing bandwidth at customer)
Verification testing: see above
Other testing:
PRT, refworkload
Files:
update: src/share/vm/includeDB_core
update: src/share/vm/gc_implementation/shared/gcUtil.cpp
update: src/share/vm/gc_implementation/shared/gcUtil.hpp
update: src/share/vm/memory/allocationStats.hpp
update: src/share/vm/memory/binaryTreeDictionary.cpp
update: src/share/vm/memory/binaryTreeDictionary.hpp
update: src/share/vm/memory/compactibleFreeListSpace.cpp
update: src/share/vm/memory/compactibleFreeListSpace.hpp
update: src/share/vm/memory/concurrentMarkSweepGeneration.cpp
update: src/share/vm/memory/concurrentMarkSweepGeneration.hpp
update: src/share/vm/memory/freeBlockDictionary.hpp
update: src/share/vm/memory/freeList.cpp
update: src/share/vm/memory/freeList.hpp
update: src/share/vm/runtime/globals.hpp
Examined files: 3270
Contents Summary:
14 update
3256 no action (unchanged)
###@###.### 2005-05-27 00:24:19 GMT