RFR(S): 8179953: [ppc] TLABWasteIncrement not loaded correctly

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Mon May 15 10:31:05 UTC 2017


Hi David, 

yes, what you are saying is correct, and  I share your concerns about the
design of JVMOptionsUtils.
Actually I think a test is considered as passed if the VM issues the message
that gc flags arecontradictory.  Thus, if you run with GCType=ParallelGC those 
flags that set G1GC explicitly are not properly tested. This is what first 
happened with my fix as we test with default settings which is G1.
And here I didn't consider that I might change test behavior for the other
flags.  But if this raises new errors, they should be addressed anyways.

Best regards,
  Goetz.


> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: Montag, 15. Mai 2017 06:25
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; hotspot-runtime-
> dev at openjdk.java.net
> Subject: Re: RFR(S): 8179953: [ppc] TLABWasteIncrement not loaded correctly
> 
> Hi Goetz,
> 
> On 12/05/2017 4:45 PM, Lindenmaier, Goetz wrote:
> > Hi David,
> >
> > the broken code is protected by
> >    if (allow_shared_alloc) {
> > which evaluates to true with ParallelGC but not with G1GC.
> > It might be true with other GCs, too, but the design of
> > JVMOptionsUtils:addNameDependency() is quite simple,
> > and I just did it as for other flags.
> > I could put in more logic into that case there, like
> >    if (GCType == G1GC || GCTyep == ... ) {
> >          option.addPrepend("-XX:+UseParallelGC");
> >    }
> > enumerating all GCs that don't support TLABWastIncrement.
> > But I thought one test case for the flag is fine.  The way it is
> > we missed the error, so I would like to fix the test.
> 
> So if I understand correctly you just want to test use of
> TLABWasteIncrement, and you know ParallelGC uses it, so you added
> -XX:+UseParallelGC to the test options. Okay I get that part.
Yes.
 
> However the more I look at JVMOptionsUtils.java the less I understand
> how it expects things to work. I don't find addNameDependency simple,
> but confused! It looks for things like G1* and so adds UseG1GC, but
> completely ignores that GCType may already be set - but that works
> because AFAICS when it finds a G1* option in the existing set of
> options, it has to be that G1GC is already the current GC type -
> otherwise the test would fail - no?
> 
> Looking at the history of this code it never set the GC so would use the
> default, unless addNameDependency explicitly set one. That worked fine.
> Then 8144578 took issue with the fact the test only ran with the default
> GC and so introduced GCType to run the test using the same GC as was
> used to launch the main test. But AFAICS that completely overlooked the
> fact that addNameDependency might set an explicit GC! Mea culpa as I was
> one of the reviewers of that change and it was obviously incomplete! :(
> It also seem there are mails missing from the archives as you find now
> mail from me here:
> 
> http://mail.openjdk.java.net/pipermail/hotspot-dev/2016-January/021390.html
> 
> BTW in that review it refers to TLABWasteIncrement as a "non-dedicated
> gc flag". That suggests to me that testing of this flag was expected to
> be GC agnostic. ??
> 
> Anyway the question is, what is the right/best way to reconcile the use
> of GCType with explicit setting of GC selection flags? Your fix is one
> way. Another option would be to clear GCType when requiring a specifc
> GC. Not sure either way is significantly better - pros and cons to both.
> 
> My concern is whether this change may have an unexpected side-effects
> given that I don't see how it can have been working correctly in the
> first place.
> 
> Unfortunately the primary author of that code is no longer around.
> 
> David
> 
> 
> > Yes, in JVMOption I must exclude setting G1GC else I get
> > an error claiming that two different GCs are set.
> >
> > Best regards,
> >   Goetz.
> >
> >
> >
> >
> >> -----Original Message-----
> >> From: David Holmes [mailto:david.holmes at oracle.com]
> >> Sent: Wednesday, May 10, 2017 5:19 AM
> >> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; hotspot-runtime-
> >> dev at openjdk.java.net
> >> Subject: Re: RFR(S): 8179953: [ppc] TLABWasteIncrement not loaded
> >> correctly
> >>
> >> Hi Goetz,
> >>
> >> On 10/05/2017 12:56 AM, Lindenmaier, Goetz wrote:
> >>> Hi,
> >>>
> >>> Please review this change.  As I fix the test, I please need a sponsor.
> >>> http://cr.openjdk.java.net/~goetz/wr17/8179953-ppc_flag/webrev.01/
> >>
> >> I'm unclear on the test changes. It isn't obvious to me that
> >> TLABWasteIncrement is a ParallelGC only flag. By adding that as an
> >> additional flag you then had to exclude adding the GCType (if any GC
> >> selector is given) to avoid conflicting options - is that right?
> >>
> >> Thanks,
> >> David
> >>
> >>> On ppc, the mentioned flag is loaded as a 16 bit immediate, while it can
> >> have
> >>> bigger values.
> >>> I also adapt TestOptionWithRanges, which did not show the bug because
> >>> the flag has no effect with G1.
> >>>
> >>> Best regards,
> >>>   Goetz.
> >>>
> >>>


More information about the hotspot-runtime-dev mailing list