-
Notifications
You must be signed in to change notification settings - Fork 767
Disable TLH prefetching for portable AOT code #20027
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
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.
Overall LGTM, minor change requested.
On a cascadelake machine I created two OpenJ9 containers, one with no fix and one with the fix from this PR. |
jenkins test sanity all jdk17 |
I guess that flag is defined on a per-codegen basis..., in OMR no less.. |
Looking at the code, there are many inconsistencies:
|
I will fix the build error on aarch64 in this PR by using the old code. We may want to create a 0.46.1 release with this fix and changing the OMR component will complicate things. In separate PRs (omr and openj9) I will address the inconsistencies above. |
Current code for x86 disables TLH prefething globally for Intel CPUs newer than Broadwell architecture and enables it globally for Broadwell or older CPUs. If a container image is generated on a newer architecture, then TLH prefetch will be off and this information is written into the AOT header for the shared class cache embedded in the container. If that container image is run on an older architecture, the JVM will set TLH prefetch off, and the AOT compatibility check will fail, rendering the embedded AOT code useless. This commit disables TLH prefething for portable AOT code. Signed-off-by: Marius Pirvu <[email protected]>
Testing results here: https://openj9-jenkins.osuosl.org/job/PullRequest-OpenJ9/5947/ |
jenkins test sanity amac,alinux,win64 jdk17 |
jenkins test sanity amac,alinux,win jdk17 |
alinux had 2 failures for JITServer, unrelated to this PR |
Win not running because there's no nodes online, merging. |
These changes will need to be quad-delievered to 0.46.1, 0.47.0 and 0.48 |
I will wait one day for nightly testing to do its thing and tomorrow I'll start delivering this changes to the other branches. |
Please tag me on the 0.46.1 PR |
Current code for x86 disables TLH prefething globally for Intel CPUs newer than Broadwell architecture and enables it globally for Broadwell or older CPUs.
If a container image is generated on a newer architecture, then TLH prefetch will be off and this information is written into the AOT header for the shared class cache embedded in the container. If that container image is run on an older architecture, the JVM will set TLH prefetch off, and the AOT compatibility check will fail, rendering the embedded AOT code useless.
This commit disables TLH prefething for portable AOT code.