RFR: 8309390: [JVMCI] improve copying system properties into libgraal
Doug Simon
dnsimon at openjdk.org
Sat Jun 3 11:40:32 UTC 2023
This PR improves the startup time for libgraal by speeding up how `VM.savedProps` is copied into libgraal. This data structure is now serialized to a native buffer directly from C++ and the native buffer is then directly decoded by libgraal.
## Times
The basic benchmarking below shows that this change brings the time for a nop Java app with eager libgraal initialization (2) down to almost the same time as lazy libgraal initialization (1). The latter typically means no libgraal initialization happens as a top tier JIT compilation is never scheduled in such a short running app.
public class Nop {
public static void main(String[] args) {}
}
(1) Baseline (no options):
> for i in (seq 10); java Nop; end
0.05 real 0.04 user 0.01 sys
0.04 real 0.03 user 0.01 sys
0.04 real 0.03 user 0.01 sys
0.04 real 0.03 user 0.01 sys
0.03 real 0.03 user 0.00 sys
0.04 real 0.03 user 0.01 sys
0.04 real 0.03 user 0.00 sys
0.03 real 0.03 user 0.00 sys
0.04 real 0.03 user 0.01 sys
0.03 real 0.03 user 0.00 sys
(2) Eagerly initialize libgraal (with PR):
> for i in (seq 10); /usr/bin/time java -XX:+EagerJVMCI Nop; end
0.06 real 0.04 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
0.05 real 0.03 user 0.01 sys
(3) Eagerly initialize libgraal (without PR):
> for i in (seq 10); /usr/bin/time java -XX:+EagerJVMCI Nop; end
0.11 real 0.08 user 0.02 sys
0.08 real 0.06 user 0.01 sys
0.08 real 0.07 user 0.01 sys
0.10 real 0.07 user 0.01 sys
0.08 real 0.06 user 0.01 sys
0.10 real 0.07 user 0.01 sys
0.08 real 0.07 user 0.01 sys
0.08 real 0.07 user 0.01 sys
0.08 real 0.06 user 0.01 sys
0.08 real 0.06 user 0.01 sys
-------------
Commit messages:
- more efficient copying of system properties into libjvmci
Changes: https://git.openjdk.org/jdk/pull/14291/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14291&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8309390
Stats: 242 lines in 8 files changed: 172 ins; 30 del; 40 mod
Patch: https://git.openjdk.org/jdk/pull/14291.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/14291/head:pull/14291
PR: https://git.openjdk.org/jdk/pull/14291
More information about the hotspot-dev
mailing list