RFR (XS): 8155917: G1 full gc memory pretouch in free regions causes regressions in SPECjvm2008 scimark.fft, lu, sor, sparse with 9+116 on Linux-x64
Jon Masamitsu
jon.masamitsu at oracle.com
Mon Aug 29 15:35:40 UTC 2016
On 08/29/2016 12:39 AM, Thomas Schatzl wrote:
> Hi all,
>
> On Wed, 2016-08-24 at 09:06 -0700, Jon Masamitsu wrote:
>> On 08/24/2016 12:39 AM, Mikael Gerdin wrote:
>>> Hi Jon,
>>>
>>> On 2016-08-23 20:54, Jon Masamitsu wrote:
>>>> Thomas,
>>>>
>>>> In the original code did you ever see this assertion failing? Or
>>>> would you expect it to sometimes fail?
>>>>
>>>> 308 assert(space->bottom() < end_of_live, "bottom: " PTR_FORMAT "
>>>> should be < end_of_live: " PTR_FORMAT, p2i(space->bottom()),
>>>> p2i(end_of_live));
>>>>
>>>>
>>>> Does the "pretouch" in the description refer to the Prefetch?
>>>>
>>>> 324 // prefetch beyond q
>>>> 325 Prefetch::read(cur_obj, scan_interval);
>>> I think the word pretouch is a bit of a misnomer here since the
>>> core part of the change lies here:
>>> - !oop(space->bottom())->is_gc_marked()) {
>>> + (bottom == end_of_live || !oop(bottom)->is_gc_marked())) {
> I renamed the title of the CR to: "Memory access in free regions during
> G1 full gc causes regressions in SPECjvm2008 scimark.fft,lu,sor,sparse
> with 9+116 on Linux-x64"
>
> Maybe this makes the issue a bit more clear.
>
> Thanks Mikael to clarify this.
>
>>> We short-cut the dereferencing of space->bottom() if bottom is
>>> end_of_live (because the region is then emtpy)
>>> If the entire region was never paged in or has been paged out at
>>> some point then touching the empty object at space->bottom() to
>>> read its mark word would force the OS to allocate a backing page
>>> for it.
>> Mikael,
>>
>> I missed the point of this change. Thanks for helping
>> me make sense of it.
> does that mean this change can be considered reviewed by you?
Yes. Looks good. Sorry for not being more explicit.
Jon
>
> Thanks,
> Thomas
More information about the hotspot-gc-dev
mailing list