Integrated: 8242440: use separate, destroyable JavaVM instances per libgraal compiler thread
Doug Simon
dnsimon at openjdk.java.net
Sat Apr 23 06:11:28 UTC 2022
On Fri, 15 Apr 2022 13:29:43 GMT, Doug Simon <dnsimon at openjdk.org> wrote:
> Currently, libgraal runs in a single, permanent JavaVM instance loaded from libjvmcicompiler.so. This poses 2 problems:
>
> 1. The memory used for libgraal is never released, even when the libgraal compiler queues are idle.
> 2. Since all libgraal HotSpot compiler threads share the same SVM heap, libgraal compilation is effectively paused when a GC occurs (SVM currently has a stop the world collector). The more compiler threads there are, the more often this happens.
>
> This PR implements the following solution to these problems:
> 1. Create a new JavaVM instance per libgraal compiler thread (i.e. a separate SVM isolate per thread). This prevents GC in one libgraal thread from impacting another libgraal thread.
> 2. Destroy the JavaVM instances when a libgraal compiler thread becomes idle and create a new one when subsequent compilation requests arrive.
>
> Most of the changes are in JVMCI specific files. The most significant change to shared code is the addition of the `JavaThread:: _libjvmci_runtime` field. This is required as any thread (not just a `CompilerThread`) can be associated with a specific `JVMCIRuntime` object.
This pull request has now been integrated.
Changeset: 357b1b18
Author: Doug Simon <dnsimon at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/357b1b18c20233f16fba872b79237e9459f5ba43
Stats: 1088 lines in 23 files changed: 828 ins; 74 del; 186 mod
8242440: use separate, destroyable JavaVM instances per libgraal compiler thread
Reviewed-by: kvn, thartmann
-------------
PR: https://git.openjdk.java.net/jdk/pull/8262
More information about the hotspot-dev
mailing list