[External] : Re: ReplayCompiles as non-develop switch ?
Thomas Stüfe
thomas.stuefe at gmail.com
Thu Aug 18 09:43:55 UTC 2022
(offlist)
Just wanted your opinion on something.
I prepared 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, 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>
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>> 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://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>, 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
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-compiler-dev/attachments/20220818/47c726bb/attachment.htm>
More information about the hotspot-compiler-dev
mailing list