United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7112743 G1: Reduce overhead of marking closure during evacuation pauses
JDK-7112743 : G1: Reduce overhead of marking closure during evacuation pauses

Details
Type:
Enhancement
Submit Date:
2011-11-16
Status:
Closed
Updated Date:
2013-10-04
Project Name:
JDK
Resolved Date:
2012-01-20
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
7u4
Fixed Versions:
hs23 (b07)

Related Reports
Backport:
Backport:
Relates:

Sub Tasks

Description
While running a workload that was designed to see how the GC performs when the heap occupancy was at 60% of capacity, there were several *long* evacuation pauses where the major contributor to the duration of the pause was "Other" time.

During the workload run (which was for a 26Gb heap, 18 GC workers), "Other" times of ~1800ms were not uncommon. The crucial pattern was that these lonbg pauses were always seen during marking cycles.

An investigation indicated that the main culprit was the "complete_marking_in_collection_set" closure, and this was confirmed with some changes to the PrintGCDetails output. The reason why this code was taking so long is that it is current purely a serial iteration over the collection set.

Since this code will be going away when the changes foir 6888336 are implemented, it has been decided that a quick fix would be to parallelize the existing serial code.

                                    

Comments
EVALUATION

Parallelize existing serial ConcurrentMark::complete_marking_in_collection_set().
                                     
2011-11-16
SUGGESTED FIX

Parallelize complete_marking_in_collction_set using an abstract gang task. Have each worker thread iterate over the collection set claiming region. If a worker successfully claims a region then execute code similar to the CompleMarkingInCSHRClosure::do_HeapRegion.

The "mark" call in the existing code will have to changed to use "parMark" but the rest can remain relatively unchanged.
                                     
2011-11-16
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/dc467e8b2c5e
                                     
2011-11-30
EVALUATION

http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/dc467e8b2c5e
                                     
2011-12-15
EVALUATION

http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/dc467e8b2c5e
                                     
2012-03-22



Hardware and Software, Engineered to Work Together