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