[12] RFR (XS): 8215548: G1PeriodicGCSystemLoadThreshold needs to be a double

Thomas Schatzl thomas.schatzl at oracle.com
Thu Dec 20 13:18:08 UTC 2018


Hi,

On Wed, 2018-12-19 at 13:16 -0800, sangheon.kim at oracle.com wrote:
> Hi Thomas,
> 
> On 12/19/18 6:58 AM, Thomas Schatzl wrote:
> > Hi,
> > 
> > On Wed, 2018-12-19 at 10:37 +0100, Thomas Schatzl wrote:
> > > Hi all,
> > > 
> > >    can I have reviews for this small change that changes the
> > > G1PeriodicGCSystemLoadThreshold value type from an uintx to a
> > > double?
> > > 
> > > (Manual) Testing by Ruslan from jElastic showed that integers are
> > > too coarse for this value, as typical load values you want to
> > > compare with are ~0.5.
> > > 
> > > Unfortunately this has not been discovered during review; also
> > > testing against a particular load value provided by the OS is
> > > hard, so there has not been a regression test for this particular
> > > flag where this probably would have been found out. :(
> > 
> >    there has been a question about the comparison against 0.0 in
> > g1YoungRemSetSamplingThread.cpp:75, whether this will catch all
> > cases.
> > 
> > Any negative values will be blocked already by the "range"
> > specifier, but there might be unintentional issues with -0.0. I
> > changed the comparison to "> 0.0" to exclude it in any case.
> > 
> > I updated the webrev in place.
> > 
> > > CR:
> > > https://bugs.openjdk.java.net/browse/JDK-8215548
> > > Webrev:
> > > http://cr.openjdk.java.net/~tschatzl/8215548/webrev/
> 
> Looks good as is.

Thanks for your review.

> Just minor things to consider would be:
> 1. The 'range' of G1PeriodicGCSystemLoadThreshold can be much
> smaller than 'max_uintx' as nobody will expect the periodic gc under
> heavy loaded situation. I had same question when this feature was
> being reviewed but I didn't have any suggestion. So as is? :)

As is.

> 2. Since this patch is changing to 'double type' comparison,
> comparison with epsilon would be needed(strictly saying). But
> probably fine in this limited case? Unless
> G1PeriodicGCSystemLoadThreshold is set with really 
> weird value and complain the periodic gc. IIRC, commandline options 
> processing has a buffer limit but wrong comparison still would
> happen within the buffer limit.

- the value we compare against is exactly representable. Even then it
would not really matter. I doubt that any digits more than maybe two
after the decimal point of the value returned by load_avg() are that
meaningful in the first place. The same for the input value - a few
digits are probably reasonable, but the load difference between e.g.
0.5551 and 0.5552 is probably negligible for this application.

- "weird values" are the responsibility of the commandline parsing. :)

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list