United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6266735 : intermittent extreme mutator slowdown in jbb runs with ParNew/DefNew

Details
Type:
Bug
Submit Date:
2005-05-06
Status:
Closed
Updated Date:
2011-12-27
Project Name:
JDK
Resolved Date:
2005-08-16
Component:
hotspot
OS:
solaris,generic
Sub-Component:
gc
CPU:
sparc,generic
Priority:
P1
Resolution:
Fixed
Affected Versions:
5.0u4,6
Fixed Versions:

Related Reports
Backport:
Backport:
Duplicate:
Relates:

Sub Tasks

Description
synopsis says it all.

###@###.### 2005-05-06 20:25:06 GMT

                                    

Comments
EVALUATION

see comments section.

###@###.### 2005-05-19 01:22:14 GMT


###@###.### 2005-05-24 00:48:28 GMT
                                     
2005-05-06
SUGGESTED FIX

Please see http://analemma.sfbay/net/spot/scratch/ysr/policy/webrev
###@###.### 2005-05-13 18:17:58 GMT

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/20050608153451.ysr.policy/workspace
                  (prt-web:/net/prt-web.sfbay/prt-workspaces/20050608153451.ysr.policy/workspace)
User:             ysr

Comment:

---------------------------------------------------------

Original workspace:     sr1-unwk-11:/net/spot/scratch/ysr/policy
Submitter:              ysr
Archived data:          /net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2005/20050608153451.ysr.policy/
Webrev:                 http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2005/20050608153451.ysr.policy/workspace/webrevs/webrev-2005.06.08/index.html

Fixed 6266375: intermittent extreme mutator slowdown in jbb runs with ParNew/DefNew

This was a day-one policy bug that was unmasked recently because
of enabling PromotionFailureHandling in Parnew/DefNew. Many thanks
to Brian Doherty for drawing our attention to this problem,
doing several test runs and collecting additional information
to help with the diagnosis, and for verifying the fixes.

There were two problems -- when an incremental collection was
about to fail (because the expected promotion out of the young
gen would exceed the available free space in the old gen):
. we would start allocating slow path (via the runtime with
  the heap lock held) from the survivor space until we
  exhausted the survivor space, and,
. worse, we would then attempt a safepoint for the purpose of
  collecting the old gen, but then decide to allocate space from
  the old gen and skip the collection (we call this very
  slow path allocation).
The above are fine policies if we are truly running out of space
and are trying to limp along in a highly heap-constrained
setting. But they are not OK when all we need to do is a
complete collection in order to empty old gen and start allocating
full speed again.

The fix was to take recourse to allocation out of from space
and from old gen in the slow path when we think we are out of
space, and never do any allocation in the very slow path
(except following a gc).

Details in the webrev:
   http://analemma.sfbay/net/spot/scratch/ysr/policy/webrev

Some further interactions (not new) with resizing policy
and with gc locker induced GC are covered by a separate
bug and will be handled separately.

Reviewed by: Jon Masamitsu

Fix Verified: yes

Verification Testing: 
   jbb2005 with ParNew was run by Brian Doherty
 
Other testing: PRT, refworkload

Files:
update: src/share/vm/includeDB_core
update: src/share/vm/memory/collectorPolicy.cpp
update: src/share/vm/memory/defNewGeneration.cpp
update: src/share/vm/memory/defNewGeneration.hpp
update: src/share/vm/memory/genCollectedHeap.cpp
update: src/share/vm/memory/genCollectedHeap.hpp

Examined files: 3277

Contents Summary:
       6   update
    3271   no action (unchanged)

###@###.### 2005-06-09 22:05:10 GMT
                                     
2005-05-13



Hardware and Software, Engineered to Work Together