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

Thomas Schatzl thomas.schatzl at oracle.com
Mon Aug 29 07:39:20 UTC 2016


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?

Thanks,
  Thomas



More information about the hotspot-gc-dev mailing list