Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6819077
Votes 0
Synopsis G1: first GC thread coming late into the GC
Category hotspot:garbage_collector
Reported Against
Release Fixed hs16(b08), 6u18(b01) (Bug ID:2181938) , 7(b71) (Bug ID:2182195)
State 11-Closed, Unverified, request for enhancement
Priority: 3-Medium
Related Bugs 6817995 , 6819098
Submit Date 18-MAR-2009
Description
We recently tried G1 on a 32GB heap, with a 4GB / 8GB young gen. We noticed that termination times are relatively long (around 30-40ms). The reason for this is that GC worker with id 0 (it's always GC worker with id 0) is late coming into the GC code which results in all the other threads waiting for it during termination. This is clearly a performance bottleneck. We should resolve this.
Posted Date : 2009-03-18 18:24:41.0
Work Around
N/A
Evaluation
Ramki pointed out that it's not necessarily the same OS thread that gets id 0. And given that it's always thread 0 that has the issue we suspect some pathology in the G1 code.
Posted Date : 2009-03-18 19:34:37.0

Well, with a quick glance at the code I think I've found the culprit.

void
HRInto_G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
                                             int worker_i) {
  ...
  if (worker_i == 0) {
    _cg1r->clear_and_record_card_counts();
  }
  ...
Posted Date : 2009-03-18 20:05:33.0

Adding an extra timer to the code and running the 32GB heap application confirmed that the culprit is indeed the one mentioned in the previous Evaluation note. clear_and_record_card_counts() would take more than 60ms on relatively state-of-the-art hardware.
Posted Date : 2009-03-25 21:52:15.0

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/6cb8e9df7174
Posted Date : 2009-08-05 02:48:22.0

http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/6cb8e9df7174
Posted Date : 2009-08-06 03:41:07.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang