New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8254913: Increase InlineSmallCode default from 2000 to 2500 for x64 #705
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Hi @ericcaspole, welcome to this OpenJDK project and thanks for contributing! We do not recognize you as Contributor and need to ensure you have signed the Oracle Contributor Agreement (OCA). If you have not signed the OCA, please follow the instructions. Please fill in your GitHub username in the "Username" field of the application. Once you have signed the OCA, please let us know by writing If you already are an OpenJDK Author, Committer or Reviewer, please click here to open a new issue so that we can record that fact. Please use "Add GitHub user ericcaspole" as summary for the issue. If you are contributing this work on behalf of your employer and your employer has signed the OCA, please let us know by writing |
@ericcaspole The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
Do you have any results? Changing defaults without published results makes the process opaque. |
It would be interesting to understand the impact on code cache size as well and see a definition of OCI system so that the other members of the community could check some other HW. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing the global inlining defaults without providing the justifying performance data is not acceptable. @cl4es, please rescind your review if you can, so that change is not integrated by accident.
@ericcaspole This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 107 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
What constitutes a full promotion is proprietary, but I can verify no regressions across at least:
Notable improvements on Renaissance-DecTree (6%), Renaissance-Reactors (5%), Dacapo-lusearch (2%) I agree that some more info about code cache utilization across a more complete range of workloads is a reasonable request, but we've detected no regressions in our sample of footprint tests. I'm sure @ericcaspole won't integrate this without first coming back with more data on this. * not running the broken compiler sub-benchmarks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 jdk-11.0.9: Benchmark Mode Cnt Score Error Units jdk-11.0.9 w/ -XX:InlineSmallCode=2500: Benchmark Mode Cnt Score Error Units 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. Name Pct-Diff"SPECjvm2008-Compress-G1", 0.889, 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 |
Should this be backported to 11 then? |
/integrate |
@ericcaspole Since your change was applied there have been 109 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 85a8949. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good.
I've got ~4% regression after adding Steps to reproduce:
Below are results from my notebook: by defaultwith -XX:InlineSmallCode=2500 |
Mailing list message from eric.caspole at oracle.com on hotspot-compiler-dev: Andriy, On 10/22/20 4:05 AM, Andriy Plokhotnyuk wrote: |
Mailing list message from Andrew Haley on hotspot-compiler-dev: On 21/10/2020 20:45, Azeem Jiva wrote:
Probably not. It's not the sort of thing that should be backported -- |
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
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/705/head:pull/705
$ git checkout pull/705