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.

To download the current JDK release, click here.
JDK 6
6 b40Fixed
Related Reports
Relates :  
Relates :  
Description
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
09-03-2005