-
Notifications
You must be signed in to change notification settings - Fork 722
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
Serving cached AOT methods at the JITServer and loading them at the client #14017
Serving cached AOT methods at the JITServer and loading them at the client #14017
Conversation
In order to store AOT methods at the server and load them at the client, we need a functional local SCC and the AOT compiler. If either the SCC or the AOT compiler is not used, disable the JITServer AOT cache option. Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
@mpirvu This PR is ready for review. |
Added AOT cache statistics. |
48f90a7
to
b25ef0f
Compare
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. Please see the inline comments/questions.
jenkins compile all jdk8 |
Since ROMClass sharing is beneficial in the same scenarios as the AOT cache (multiple client JVMs), it should be enabled by default. Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
This commit adds the code to serve serialized methods from the JITServer AOT cache in response to AOT compilation requests and load these methods at the client after deserializing them and storing in the local SCC. If the AOT deserialization or load fails, the next attempt to compile the method will bypass the JITServer AOT cache. AOT serialization record IDs newly added to the client's cache during deserialization are sent to the server with subsequent compilation requests and are saved in the client session at the server. Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
The printing of statistics can be enabled by setting the environment variable TR_PrintJITServerAOTCacheStats. Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
Signed-off-by: Alexey Khrabrov <khrabrov@cs.toronto.edu>
b25ef0f
to
003497a
Compare
I've addressed the comments. The 32-bit Windows build in the tests https://openj9-jenkins.osuosl.org/job/PullRequest-OpenJ9/1255/ is failing with an error unrelated to this PR: https://openj9-jenkins.osuosl.org/job/Build_JDK8_x86-32_windows_Personal/132/
The aix build seems to be stuck. |
jenkins test sanity xlinuxjit zlinuxjit jdk11 |
jenkins test sanity xlinuxjit,zlinuxjit jdk11 |
I reverted the problematic PR causing the win32 build failure last night. |
https://openj9-jenkins.osuosl.org/job/PullRequest-OpenJ9/1257/
|
jenkins test sanity xlinuxjit jdk11 |
Even though the the test on xlinux appears as aborted; https://openj9-jenkins.osuosl.org/job/PullRequest-OpenJ9/1259/ |
This PR completes the minimal implementation of caching compiled code at JITServer. It adds the code to serve serialized methods from the JITServer AOT cache and load them at the client.