[External] : Re: ReplayCompiles as non-develop switch ?
dean.long at oracle.com
dean.long at oracle.com
Fri Aug 19 01:22:21 UTC 2022
This does sounds like a useful feature. I was surprised to find out
while investigating JDK-8291665 that compiler node limits don't seem to
be enforced in product builds.
dl
On 8/18/22 2:43 AM, Thomas Stüfe wrote:
> (offlist)
>
> Just wanted your opinion on something.
>
> I prepared https://github.com/openjdk/jdk/pull/9891
> <https://github.com/openjdk/jdk/pull/9891>, which adds NMT malloc limits
> (VM will fatal out if more than x was allocated), and these limits can
> also be category-specific. That way one could call the VM with
> -XX:MallocLimit=compiler:250M and if the compiler malloc load - which is
> typically mostly Arena - hits 250M we get a fatal error and a replay
> file. Note it won't count code heap since that is mmap.
>
> I originally did this to simplify analysis in situations like
> https://bugs.openjdk.org/browse/JDK-8291665
> <https://bugs.openjdk.org/browse/JDK-8291665>, where we have a release
> VM and the compiler arena balloons. But we also could use this for other
> things.
>
> 1) for automatic memory bounds checks on all compiler jtreg tests. If we
> can agree on what a reasonable upper ceiling would be for Compiler
> malloc usage, then we could set this limit for all tests wholesale. If
> we have a case where a compiler test uses too much memory, we now get a
> test error. Of course, in cases where a compiler loop causes an unbound
> memory raise we get a test error today too, just faster and possibly
> without OOM kill.
>
> 2) We also could use it as replacement of the -XX:CiCrashAt mechanism,
> at least in parts of the tests: set compile arena very low and start
> compiler, you get an assert and a replay file.
>
> What do you think, is this worthwhile? (especially (1))
>
> Cheers, Thomas
>
>
> On Wed, Aug 17, 2022 at 8:04 PM Vladimir Kozlov
> <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>
> On 8/16/22 9:01 PM, Thomas Stüfe wrote:
> > On Tue, Aug 16, 2022 at 9:00 PM Vladimir Kozlov
> <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>
> <mailto:vladimir.kozlov at oracle.com
> <mailto:vladimir.kozlov at oracle.com>>> wrote:
> >
> > On 8/16/22 10:05 AM, Thomas Stüfe wrote:
> > > Hi,
> > >
> > > Is there a particular reason why ReplayCompiles needs to
> be a develop switch? Or was it just not considered useful
> > > without asserts?
> >
> > It replays compilation which we want to debug in debug VM.
> Why do you want it be `product` flag?
> >
> > We have DumpReplayDataOnError product flag to dump compiler
> replay data from product VM:
> >
> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/compiler/compiler_globals.hpp#L331
> <https://github.com/openjdk/jdk/blob/master/src/hotspot/share/compiler/compiler_globals.hpp#L331>
> >
> <https://urldefense.com/v3/__https://github.com/openjdk/jdk/blob/master/src/hotspot/share/compiler/compiler_globals.hpp*L331__;Iw!!ACWV5N9M2RV99hQ!JRgjhoZKOMvpjeekz0FN5_oc8OR6PZp-lDqLr7W_AEpu5wV0xtVtbCvvgD_XWCIeoqN88QPk0i9nNBU6w2OexzZiW4G-$ <https://urldefense.com/v3/__https://github.com/openjdk/jdk/blob/master/src/hotspot/share/compiler/compiler_globals.hpp*L331__;Iw!!ACWV5N9M2RV99hQ!JRgjhoZKOMvpjeekz0FN5_oc8OR6PZp-lDqLr7W_AEpu5wV0xtVtbCvvgD_XWCIeoqN88QPk0i9nNBU6w2OexzZiW4G-$>>
> >
> >
> > Hi Vladimir,
> >
> > to reproduce a compiler error in a release VM.
> >
> > - to experiment what its effect is on a VM that was actually
> shipped to customers, without using a debug VM and
> > switching tens of asserts off. E.g., in the case of
> https://bugs.openjdk.org/browse/JDK-8291665
> <https://bugs.openjdk.org/browse/JDK-8291665>
> > <https://bugs.openjdk.org/browse/JDK-8291665
> <https://bugs.openjdk.org/browse/JDK-8291665>>, how steep and how
> quickly RSS raises, and whether the raise limits itself
> > or is infinite.
> > - to see whether a certain build of a shipped VM is actually
> affected by a certain bug. Not every bug surfaces in every
> > build.
> >
> > None of that are very hard reasons, and these situations are
> rare. But they do occur, and it would be a bit more
> > convenient to have this switch.
>
> So you want it for verification purpose and not for debugging an
> issue. We did not consider it when implemented.
> I agree it could be useful and it is not hard to convert
> ReplayCompiles to diagnostic flag.
> It will increase VM size but not much.
>
> File RFE.
>
> Thanks,
> Vladimir K
>
> >
> > Cheers, Thomas
> >
> >
>
More information about the hotspot-compiler-dev
mailing list