Request for review (s) - 8021809: Partitioning based on eden sampling during allocation not reset correctly

Jon Masamitsu jon.masamitsu at oracle.com
Tue Aug 13 04:00:40 UTC 2013


Ramki,

Thanks.

Jon

On 8/12/2013 5:28 PM, Srinivas Ramakrishna wrote:
> Reviewed. Looks good to me.
>
> (Btw 8022817 isn't yet visible on bugs.sun.com.)
>
> --Ramki
>
>
> ysr1729
>
> On Aug 12, 2013, at 11:19, Jon Masamitsu <jon.masamitsu at oracle.com> wrote:
>
>> I'm reinstating this request as is.
>>
>> The observed failure which caused me to withdraw this is
>> due to a different bug 8022817.  The fix for 8022817 will
>> be reviewed separately.
>>
>> Thanks.
>>
>> Jon
>>
>> On 7/30/13 3:52 PM, Jon Masamitsu wrote:
>>> The partitioning of eden for parallel CMS initial mark and remark
>>> depends of the setting of _eden_chunk_index to correctly reflect
>>> the occupancy of eden.  For example if _eden_chunk_index is 3,
>>> then  eden should be dividable into 3 chunks, each chunk
>>> available for parallel processing.  In particular after a young
>>> gen collection when eden is empty, the broken code depends on
>>> _eden_chunk_index being 0.  The resetting of _eden_chunk_index
>>> is done in the gc_epilogue() of the CMS gen.  When
>>>
>>> 1) a System.gc() is called
>>>
>>> and
>>>
>>> 2) UseCMSCompactAtFullCollection is set to false
>>>
>>> the CMS generation tells GenCollectedHeap that CMS
>>> does not collect the young gen.  So the young gen is
>>> collected first and then the CMS gen is collected.  In
>>> this case the CMS gen gc_epilogue() is not called
>>> after the young gen collection and _eden_chunk_index
>>> is not cleared.  The gc_epilogue() methods are called after the
>>> completion of the collection (after the CMS gen is
>>> collected).  This is the expected behavior for when the
>>> gc_epilogue() is called.
>>>
>>> This fix adds a guard that checks if eden is empty,
>>> skipping eden processing if it is.
>>>
>>> http://cr.openjdk.java.net/~jmasa/8021809/webrev.00/




More information about the hotspot-gc-dev mailing list