-
Notifications
You must be signed in to change notification settings - Fork 323
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
16% startup regression after including GraalPy #8553
Comments
The additional startup time seems to be caused by the JVM boot module layer initialization. To proof that, I have designed an experiment at https://gist.github.com/Akirathan/9c30e10ec525eb09c91c3c94e2c36f40 that repeatedly invokes In other words, if we exclude
|
As noted in https://gist.github.com/Akirathan/9c30e10ec525eb09c91c3c94e2c36f40?permalink_comment_id=4808928#gistcomment-4808928, the total size of all the GraalPy Jars is 201 MB. All the GraalPy Jars that are additionally included are: ['bcpkix-jdk18on-1.76.jar', 'bcprov-jdk18on-1.76.jar', 'bcutil-jdk18on-1.76.jar', 'insight-tool-23.1.0.jar', 'llvm-api-23.1.0.jar', 'python-language-23.1.0.jar', 'python-resources-23.1.0.jar', 'truffle-nfi-23.1.0.jar', 'truffle-nfi-libffi-23.1.0.jar', 'xz-1.9.jar'] How to inspect what does JVM do with these Jars during boot? Please help @JaroslavTulach.
|
Pavel Marek reports a new STANDUP for yesterday (2023-12-27): Progress: - Experimenting and measuring JVM startup
|
Pavel Marek reports a new STANDUP for today (2023-12-28): Progress: - Format also Java sources in
|
Please use --profiling-path option. |
What happens during the startup? I am not sure, but one of the hypothesis is: Python unpacks its resources. If so, then the solution would be somewhere along this copyResources method and the properties it mentions |
I have a strong suspicion that the slowdown happens before the Experiments with -XlogI have decided to do additional experiments with a combination of
are small-modules.txt and big-modules.txt. In these log files, we can see that the JVM loads |
As mentioned in my previous comment, I am running these experiments with just |
The real benchmarks can be executed as: ./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run test/Benchmarks/ Startup If you want to run exactly what "empty_startup" benchmark runs, then do: ./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run test/Benchmarks/src/Startup/Empty_World.enso if you add |
I can confirm this observation. The signed JARs are
org.enso.interpreter.caches.ModuleCache . We already have a task to remove this dependency - #8362.
I have also tried to manually remove signatures from these Jar archives, but failed to do so. I have tried to remove checksum entries from Previously (before #8351), the bouncycastle modules used to be assembled in |
Pavel Marek reports a new STANDUP for today (2024-01-02): Progress: - The cause of the slowdown is most-likely the introduction of signed Jar archives (org.bouncycastle).
|
|
Pavel Marek reports a new STANDUP for today (2024-01-04): Progress: - Investigating another problems with benchmarks in #8668
|
Here is a 3rd ZIP with t.npss file. It runs in 1800ms - e.g. just in the middle of FastAndSlow.zip. Looks like the #8664 fix helped to give us 50% of the time back. We still need to find the next 50%. |
Also reported |
Another startup initialization issue revealed: #8690. It's not related to GraalPy though. |
Pavel Marek reports a new STANDUP for today (2024-01-05): Progress: -
|
The stdlib startup benchmarks indicate startup time regression for:
Startup_empty_startup
- 16%Startup_hello_world_startup
- 12%The regression happened between Dec 1 and Dec 4 with the only two integrations being:
Given the #8432 is only a test change, the slowdown is probably related to #8351. Why? Python isn't used during the startup at all - e.g. there is no reason for it to slow startup down!
The text was updated successfully, but these errors were encountered: