8217827: [Graal] Some vmTestbase/nsk/jvmti/ResourceExhausted tests failing

Jean Christophe Beyler jcbeyler at google.com
Sat Mar 23 03:42:55 UTC 2019


For what it's worth Daniil,

Webrev.02 LGTM :-)

I do believe at some point we go seem to go back and forth about JVMCI
testing and what we should do or not. I understand it should be a case by
case in a lot of spots but perhaps we should document somewhere our stance
for JVMCI test-bugs? Just food for thought?

Thanks,
Jc

On Fri, Mar 22, 2019 at 8:26 PM Daniil Titov <daniil.x.titov at oracle.com>
wrote:

> Thank you, Chris!
>
> Please review a new version of the change that makes the test ignored if
> Graal is enabled.
>
> Webrev: http://cr.openjdk.java.net/~dtitov/8217827/webrev.02/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8217827
>
> Best regards,
> Daniil
>
>
>
> On 3/22/19, 7:59 PM, "Chris Plummer" <chris.plummer at oracle.com> wrote:
>
>     Hi Daniil,
>
>     So 8mb is enough to do at least 10,000 iterations and trigger JVMCI
>     initialization, but the amount of memory needed after the System.gc()
> is
>     more than the memory used by the loop (and then freed)? I wonder if
> more
>     compilation is being triggered after the System.gc() call, and that
> uses
>     a lot of memory.
>
>     Also, I'm not comfortable with this concept of considering JVMCI to be
>     initialized. You're making assumptions on the internal state of JVMCI.
>     Other compilations could require other allocations that could end up
>     failing. You also don't know how JVMCI behavior might change in the
>     future, causing this test to fail again. Perhaps it is best not to run
>     these ResourceExhausted tests with JVMCI. Their reliability is dubious
>     enough already.
>
>     thanks,
>
>     Chris
>
>     On 3/22/19 4:02 PM, Daniil Titov wrote:
>     > Hi Chris,
>     >
>     > Addind -XX:+PrintCompilation flag shows that the first compiled
> method is java.lang.Object::<init>.
>     >
>     > Max heap size and parameter for the warmup stage (10K iterations)
> were found a posteriori, to ensure that JVMCI initialization is kicked but
> without throwing OutOfMemoryError.
>     >
>     > The heap increase is required otherwise a second OOME is thrown in
> the main thread after line 75 and in some cases even after line 86. It
> seems as JVMCI eats out all 8Mb of the heap.
>     >
>     >    75         System.gc();
>     >    76         if ( ! Helper.checkResult("creating " + count + "
> objects") )
>     >    77             return Consts.TEST_FAILED;
>     >    78
>     >    79         return Consts.TEST_PASSED;
>     >    80     }
>     >    81
>     >    82     public static void main(String[] args) {
>     >    83         args = nsk.share.jvmti.JVMTITest.commonInit(args);
>     >    84
>     >    85         int result = run(args, System.out);
>     >    86         System.out.println(result == Consts.TEST_PASSED ?
> "TEST PASSED" : "TEST FAILED");
>     >    87         System.exit(result + Consts.JCK_STATUS_BASE);
>     >    88     }
>     >
>     > Best regards,
>     > Daniil
>     >
>     > On 3/22/19, 2:09 PM, "Chris Plummer" <chris.plummer at oracle.com>
> wrote:
>     >
>     >      Hi Daniil,
>     >
>     >      What triggers the JVMCI initialization, what (in general) is
> done during
>     >      the initialization, and how did you come up with the 10k
> iterations and
>     >      a 10s sleep to ensure that initialization is complete?
>     >
>     >      What was the reason for the heap size increase? Does the OOME
> happen
>     >      before 10k iterations if you don't increase the heap size?
>     >
>     >      thanks,
>     >
>     >      Chris
>     >
>     >      On 3/22/19 1:53 PM, Daniil Titov wrote:
>     >      > Please review the change that fixes the failure of the test
> when running with Graal.
>     >      >
>     >      > The problem here is that the test consumes all memory before
> JVMCI runtime is fully initialized. As a result the call to
> JVMCIRuntime::get_HotSpotJVMCIRuntime(CHECK_EXIT)
>     >      > at src/hotspot/share/jvmci/jvmciCompiler.cpp:132 throws
> OutOfmemoryError that is caught by CHECK_EXIT macro that in turn calls
> JVMCICompiler::exit_on_pending_exception that performs vm_exit(-1).
>     >      >
>     >      > The fix increases the maximum heap size the test uses and
> adds a delay to ensure the JVMCI Runtime is fully initialized before
> proceeding with provoking OutOfMemoryError.
>     >      >
>     >      > Before the change  the test failure rate in Mach5 builds was
> about 25% . With this change after 900 rounds in Mach5 no failure was
> detected. The test execution time  with the change is 50 second.
>     >      >
>     >      > Webrev: http://cr.openjdk.java.net/~dtitov/8217827/webrev.01/
>     >      > Bug: https://bugs.openjdk.java.net/browse/JDK-8217827
>     >      >
>     >      > Thanks!
>     >      > --Daniil
>     >      >
>     >      >
>     >
>     >
>     >
>     >
>
>
>
>
>
>

-- 

Thanks,
Jc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20190322/95cf2bcc/attachment-0001.html>


More information about the serviceability-dev mailing list