[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