-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
[GR-54752] Very slow warmup with Graal Compiler JIT (in a Netty-based application) #9115
Comments
thank you @guilgaly for your report. Depending on a particular workload warmup can be faster/slower with different JITs - there are many things that influence it. Without having looked into the workload in detail the differences you are seeing are large enough to potentially indicate a bug on our side. We will have a look and get back to you. @rmosaner can you have a look at the reproducer? BTW: did you also try native image (https://www.graalvm.org/latest/reference-manual/native-image/) ? |
I will have a look. |
@davleopo We haven't. We're not there yet at Gatling. Our focus with GraalVM for now is Truffle/GraalJS. |
@slandelle thanks for the clarification. If you ever get around trying it out and you encounter any problems let us know. In the meantime we will have a look at your reproducer at get back to you, thanks. |
Describe the issue
Running the Gatling load testing tool (which relies heavily on Netty internally) on GraalVM CE, we have noticed very slow warmups compared to running with the traditionnal C2 JIT compiler (with the warmup period taking 5 times as long or more).
We also observe this with a simplified use case built directly with Netty. We are particularly interested in GraalVM because of Truffle, but our reproducer here is purely in Java.
Are these long warmup times to be expected at the moment with the Graal JIT compiler or would you consider there is something specific going on here? Are there plans for improvements? Are there tuning options we should investigate?
Steps to reproduce the issue
We have a simplified reproducer here: https://github.com/gatling/bug-report-graal-compiler-warmup
It runs a simple HTTP server and client (both based on Netty) in the same process. The client opens n connections, performs the same HTTP request over and over again on each connection, and logs the total throughput every quarter of a second.
Results of our tests can be seen here (with the data also converted to more readable graphs in the HTML files): https://github.com/gatling/bug-report-graal-compiler-warmup/tree/main/test-results/2024-06-11. They all run on the same machine, using either Azul Zulu (so with the usual C2 JIT compiler), GraalVM CE, or Oracle GraalVM. The stable throughput after the warm-up period is quite comparable, but the warm-up times are very different:
Describe GraalVM and your environment:
More details
Please don't hesitate to let us know if we can provide usefull additional test data, try out different tuning options, etc.
The text was updated successfully, but these errors were encountered: