OpenJDK 12-dev fastdebug for X86: Native memory allocation (malloc) failed to allocate 3276800 bytes for CodeCache: no room for Interpreter
Leslie Zhai
zhaixiang at loongson.cn
Mon Sep 17 09:58:34 UTC 2018
Hi Erik,
Thanks for your response!
在 2018年09月17日 17:19, Erik Österlund 写道:
> Hi Leslie,
>
> InterpreterCodeSize is a VM-private variable. I recommend not changing
> it unless you added lots of interpreter code that causes you to run
> into the assert suggesting you need more memory, in at least one
> configuration. This value needs to be at least large enough to fit the
> interpreter in all supported configurations, and then yet a bit longer
> for headroom so we don't have to update it every time somebody makes a
> change to the interpreter interpreter code.
>
I need to find out the root cause why need much larger
`InterpreterCodeSize` than X86, but my sincere thanks will goto Volker
owing to *no* more waste in the CodeCache after applied his patch:
http://mail.openjdk.java.net/pipermail/jdk8u-dev/2018-September/007847.html
> Obviously, if you set the value too high, you will exhaust your code
> cache, unless you add memory to the -XX:ReservedCodeCacheSize to
> accommodate for that. The particular test you are running is running
> with a very small code cache size, so it does not come as a surprise
> that you exhaust it by making the interpreter code reservation very large.
I can feel what Albert feel :)
http://mail.openjdk.java.net/pipermail/jdk8u-dev/2018-September/007839.html
>
>
> I would suggest sending follow-up questions regarding the interpreter
> to hotspot-runtime-dev, and not jdk-dev to reduce noise on this list.
Sorry for my wrong posting!
>
> Hope this explanation helps.
>
> /Erik
>
> On 2018-09-17 09:52, Leslie Zhai wrote:
>> Hi Erik,
>>
>> I want to verify JDK-8199417 with OpenJDK 12-dev fastdebug for X86:
>>
>> http://mail.openjdk.java.net/pipermail/jdk8u-dev/2018-September/007839.html
>>
>>
>> $ hg log | head
>>
>> changeset: 51761:5f868838bc5f
>> tag: tip
>> user: weijun
>> date: Mon Sep 17 14:52:44 2018 +0800
>> summary: 8210736: jdk/javax/xml/crypto/dsig/GenerationTests.java
>> slow on linux
>>
>> $ ./configure --with-debug-level=fastdebug
>> --with-boot-jdk=/home/xiangzhai/jdk-10.0.2 --disable-warnings-as-errors
>>
>> Then *deliberately* changed `InterpreterCodeSize` too big, for
>> example 800K:
>>
>> diff -r 5f868838bc5f
>> src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp
>> --- a/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp Mon
>> Sep 17 14:52:44 2018 +0800
>> +++ b/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp Mon
>> Sep 17 15:43:09 2018 +0800
>> @@ -57,8 +57,12 @@
>> // Run with +PrintInterpreter to get the VM to print out the size.
>> // Max size with JVMTI
>> #ifdef AMD64
>> +#ifdef PRODUCT
>> int TemplateInterpreter::InterpreterCodeSize = JVMCI_ONLY(268)
>> NOT_JVMCI(256) * 1024;
>> #else
>> +int TemplateInterpreter::InterpreterCodeSize = 800 * 1024;
>> +#endif
>> +#else
>> int TemplateInterpreter::InterpreterCodeSize = 224 * 1024;
>> #endif // AMD64
>>
>>
>> $ make CONF=fastdebug images
>>
>> $ jtreg -vmoptions:"-XX:+UnlockDiagnosticVMOptions
>> -XX:+PrintInterpreter" -dir:/home/xiangzhai/jdk/test/hotspot/jtreg
>> -verbose:all -a -ignore:quiet -timeoutFactor:5 -agentvm
>> -testjdk:/home/xiangzhai/jdk/build/linux-x86_64-normal-server-fastdebug/jdk
>> compiler/startup/SmallCodeCacheStartup.java
>>
>> STDOUT:
>> Command line:
>> [/home/xiangzhai/jdk/build/linux-x86_64-normal-server-fastdebug/jdk/bin/java
>> -cp
>> /home/xiangzhai/JTwork/classes/compiler/startup/SmallCodeCacheStartup.d:/home/xiangzhai/jdk/test/hotspot/jtreg/compiler/startup:/home/xiangzhai/JTwork/classes/test/lib:/home/xiangzhai/jtreg/lib/javatest.jar:/home/xiangzhai/jtreg/lib/jtreg.jar
>> -XX:ReservedCodeCacheSize=3m -XX:CICompilerCount=64 -Xcomp -version ]
>> STDERR:
>> stdout: [[0.014s][warning][codecache] CodeCache is full. Compiler
>> has been disabled.
>> [0.015s][warning][codecache] Try increasing the code cache size using
>> -XX:ReservedCodeCacheSize=
>> CodeCache: size=3072Kb used=32Kb max_used=33Kb free=3039Kb
>> bounds [0x00007f99c2e6f000, 0x00007f99c316f000, 0x00007f99c316f000]
>> total_blobs=7 nmethods=0 adapters=0
>> compilation: disabled (not enough contiguous free space left)
>> stopped_count=1, restarted_count=0
>> full_count=0
>> #
>> # There is insufficient memory for the Java Runtime Environment to
>> continue.
>> # Native memory allocation (malloc) failed to allocate 3276800 bytes
>> for CodeCache: no room for Interpreter
>>
>> ----- 8< -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< ---
>>
>> So there is the upper limit value for `InterpreterCodeSize`? Is it
>> able to workaround MIN(quadrupled, MAX_VALUE) for debug builds in
>> order to accommodate for the additional debugging code?
>>
>> Please give me some suggestions, thanks a lot!
>>
>> Thanks,
>>
>> Leslie Zhai
>>
>>
>
More information about the hotspot-runtime-dev
mailing list