RFR(M/L): 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Thomas Schatzl
thomas.schatzl at oracle.com
Tue Apr 9 16:07:40 UTC 2013
Hi,
On Mon, 2013-04-08 at 11:14 -0700, John Cuthbertson wrote:
> Hi Everyone,
>
> I've synched up this webrev up with the latest changes in hotspot-gc and
> made one additional refactoring change that was suggested offline. The
> new webrev is at:
>
> http://cr.openjdk.java.net/~johnc/7176479/webrev.2/
>
> I'd like to use this webrev as the basis of some other refactoring work
> I'd like to do in RSet updating and this will make it easier.
Could you make the two new globals unsigned (e.g. "uintx")? I do not see
a reason to even indicate the user that they may have negative values. I
saw the bounds check in the initialization code.
Minor: G1CardCounts::add_card_count() returns an int, while it cannot be
< 0. The count table elements are of type jbyte too (but then again it's
all private).
> > The new approach effectively undoes the previous mechanism and
> > re-simplifies the card counts table.
> >
> > Summary of Changes:
> > The hot card cache and card counts table have been moved from the
> > concurrent refinement code into their own files.
Good!
> >
> > The hot card cache can now exist independently of whether the counts
> > table exists. In this case refining a card once adds it to the hot
> > card cache, i.e. all cards are treated as 'hot'.
G1CardCounts::add_card_count() seems to return zero in this case, i.e.
not hot?
In G1CardCounts::resize() the code checks whether _card_counts == 0
(note that _card_counts is a pointer, so maybe the code should compare
to NULL instead), and in this method the code uses
_committed_max_card_num. Maybe extract this into a predicate
has_count_table() and use it uniformly?
Same in G1CardCounts::clear() and the destructor.
The asserts checking the consistency of _cards_counts,
_committed_max_card_num, and G1ConcRSHotCardLimit can then be moved
there instead of repeating them.
I don't consider checking G1ConcRSHotCardLimit important here because
the vm would not even start up when this is set wrongly.
> > Testing:
> > GC Test suite with MaxTenuringThreshold=0 (to increase the amount of
> > refinement) and a low IHOP value (to force cleanups).
> > SPECjbb2005 with a 1.5TB heap size and 256GB young size,
> > MaxTenuringThreshold=0 and a low IHOP value (1%). The systems team are
> > continuing to test with very large heaps.
Any idea about performance differences or efficiency of the hot card
cache? (Maybe you mentioned that already).
Thomas
More information about the hotspot-gc-dev
mailing list