United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7011379 G1: overly long concurrent marking cycles
JDK-7011379 : G1: overly long concurrent marking cycles

Details
Type:
Bug
Submit Date:
2011-01-10
Status:
Closed
Updated Date:
2011-04-23
Project Name:
JDK
Resolved Date:
2011-04-23
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs20
Fixed Versions:
hs20 (b07)

Related Reports
Backport:
Backport:

Sub Tasks

Description
While running jbb2005 with G1 on a 16-core UltraSPARC IV+ I noticed that marking cycles would start but never complete. This will cause Full GCs and poor scores.

The reason that is causing this is that the concurrent marking threads cannot keep up by the rate the mutator threads generate SATB buffers and are overwhelmed.

It would be nice to reduce the number of SATB buffers generated by the mutator threads.

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/7e37af9d69ef
                                     
2011-01-19
WORK AROUND

[snip]
                                     
2011-01-19
SUGGESTED FIX

The fix is to introduce a pre-enqueueing step for SATB buffers. The thread that is about to enqueue the buffer it actually iterates over it and filters out entries that are not of intrest to the marking threads (entries that point to already marked objects, entries that point to objects that have been allocated since the marking started, etc.). When a marking thread processes a buffer it skips such entries and processes the rest. What this filtering does is to get rid of most entries that the marking threads will ignore in order to cut down on the number of SATB buffers that are enqueued. At the end of the filtering operation the buffer is re-used if enough entries have been removed, or enqueued if the buffer is still reasonably full (the G1SATBBufferEnqueueingThresholdPercent parameter determines the threshold).
                                     
2011-01-19
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/7e37af9d69ef
                                     
2011-01-21



Hardware and Software, Engineered to Work Together