RFR: 8254913: Increase InlineSmallCode default from 2000 to 2500 for x64

Eric Caspole ecaspole at openjdk.java.net
Wed Oct 21 19:34:10 UTC 2020


On Tue, 20 Oct 2020 06:56:44 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> We have seen some specific benefits to increasing InlineSmallCode to 2500 from 2000, and across the whole promo build perf test collection the change is neutral to slightly positive, where the tests are run on modern OCI systems.
>> 
>> Passed tier1 testing, some ad-hoc perf testing and more compiler related parts of the weekly promo performance set.
>> 
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8254913
>> Thanks,
>> Eric
>
> That is OK, looks good then.

The motivation for this change is, among other things, that we discovered a big regression in this micro in 11 vs 8:

https://github.com/openjdk/jdk/blob/master/test/micro/org/openjdk/bench/java/lang/NewInstance.java

jdk1.8.0_271:

Benchmark                                 Mode  Cnt   Score   Error  Units
NewInstance.threeDifferentProtected       avgt    5  61.413 ± 0.078  ns/op
NewInstance.threeDifferentPublic          avgt    5  56.705 ± 0.096  ns/op
NewInstance.threeDifferentPublicConstant  avgt    5  43.316 ± 0.094  ns/op
NewInstance.threeDifferentPublicFinal     avgt    5  56.586 ± 0.140  ns/op
NewInstance.threeSameProtected            avgt    5  46.714 ± 0.045  ns/op
NewInstance.threeSamePublic               avgt    5  44.565 ± 0.058  ns/op

jdk-11.0.9:

Benchmark                                 Mode  Cnt    Score    Error  Units
NewInstance.threeDifferentProtected       avgt    5  851.560 ± 44.299  ns/op
NewInstance.threeDifferentPublic          avgt    5  854.080 ±  7.619  ns/op
NewInstance.threeDifferentPublicConstant  avgt    5  911.749 ± 33.695  ns/op
NewInstance.threeDifferentPublicFinal     avgt    5  830.804 ± 21.219  ns/op
NewInstance.threeSameProtected            avgt    5  785.063 ±  2.580  ns/op
NewInstance.threeSamePublic               avgt    5  792.167 ±  0.538  ns/op

jdk-11.0.9 w/ -XX:InlineSmallCode=2500:

Benchmark                                 Mode  Cnt   Score   Error  Units
NewInstance.threeDifferentProtected       avgt    5  58.091 ± 0.012  ns/op
NewInstance.threeDifferentPublic          avgt    5  55.514 ± 0.062  ns/op
NewInstance.threeDifferentPublicConstant  avgt    5  43.233 ± 0.079  ns/op
NewInstance.threeDifferentPublicFinal     avgt    5  54.955 ± 0.103  ns/op
NewInstance.threeSameProtected            avgt    5  44.216 ± 0.013  ns/op
NewInstance.threeSamePublic               avgt    5  44.214 ± 0.009  ns/op

This carries on into 14, then other fixes in 15 make it go bi-modal where it may or may not get inlined run to run.

Also, increasing InlineSmallCode for x64 to 2500 makes it now equal to ARM64, which we think is sensible.

Here are some results on a recent internal testing build of jdk-16 default vs -XX:InlineSmallCode=2500.
All these results were statistically insignificant.

Name  Pct-Diff
==============
"SPECjvm2008-Compress-G1", 0.889,
"SPECjvm2008-Crypto.aes-G1", 2.884,
"SPECjvm2008-Crypto.rsa-G1", 0.230,
"SPECjvm2008-Crypto.signverify-G1", 0.824,
"SPECjvm2008-Derby-ParGC", 0.878,
"SPECjvm2008-FFT.large-G1", 1.626,
"SPECjvm2008-FFT.small-G1", 2.023,
"SPECjvm2008-LU.large-ParGC", -14.624,
"SPECjvm2008-LU.small-ParGC", -0.633,
"SPECjvm2008-MPEG-ParGC", 0.326,
"SPECjvm2008-MonteCarlo-G1", 3.054,
"SPECjvm2008-MonteCarlo-ZGC", -2.247,
"SPECjvm2008-SOR.large-ParGC", 10.729,
"SPECjvm2008-SOR.small-ParGC", 0.127,
"SPECjvm2008-Serial-ParGC", 0.909,
"SPECjvm2008-Sparse.large-G1", 0.204,
"SPECjvm2008-Sparse.small-G1", 0.594,
"SPECjvm2008-XML.transform-G1", 0.349,
"SPECjvm2008-XML.validation-G1", 0.378,

These tests are run on the generally available OCI BM2.52 platform. See https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm

-------------

PR: https://git.openjdk.java.net/jdk/pull/705


More information about the hotspot-compiler-dev mailing list