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 graal-dev
mailing list