-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Disable single parsing of compiler graphs by default #21018
Conversation
The "Native Tests - Messaging2" issue appears to be unrelated to this PR (and transient). See https://github.com/quarkusio/quarkus/runs/4008277751?check_suite_focus=true for a failure on |
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 514fac4
Full information is available in the Build summary check run. Failures⚙️ JVM Tests - JDK 17 #- Failing: integration-tests/reactive-messaging-rabbitmq
📦 integration-tests/reactive-messaging-rabbitmq✖
⚙️ Native Tests - Messaging2 #- Failing: integration-tests/reactive-messaging-rabbitmq
📦 integration-tests/reactive-messaging-rabbitmq✖
|
For completeness I am pasting here some measurements from compilations of With single parsing enabled
With single parsing disabled
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before integrating this I wanted to get some further clarification:
I'm happy with making -H:-ParseOnce
default, but I'm not totally sure about the need for a higher level configuration option. The native image build step could be improved to deal with -Dquarkus.native.additional-build-args=-H:+ParseOnce
, detect the change of option and apply the one passed in? What's the exact reason behind adding a top level option for this?
If we want to keep the high level option in place, I wonder if the javadoc should mention that the increase is most noticeable in constrained environments. As noted, unconstrained environments do not seem to suffer from same issues.
The reason I added the option is 1) for us to be able to keep testing this, 2) for advanced users to benefit from the faster build times. Ideally I would like it to be marked as "experimental", but AFAIK there is no such option in Quarkus. |
Since we learned the hard way that order of such properties matter... would an advanced user be able to experiment with it by having That way we could avoid the configuration property, which is always nice. |
That would be great, but Quarkus prepends If we really don't want the configuration option, I am OK with parsing |
ah I see. I wonder if we could put it last instead? To really be "advanced" I believe we should allow it to override other flags. Would that work?
I'm not strongly against it; just thinking that it would be nicer if the above suggestion could work - but sure if that gets complicated ignore me :) |
514fac4
to
0574676
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! thanks
Looks good, thx @zakkak! |
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 0574676
Full information is available in the Build summary check run. Failures⚙️ JVM Tests - JDK 17 #- Failing: integration-tests/container-image/maven-invoker-way
📦 integration-tests/container-image/maven-invoker-way✖ ⚙️ Native Tests - Messaging2 #- Failing: integration-tests/reactive-messaging-rabbitmq
📦 integration-tests/reactive-messaging-rabbitmq✖
⚙️ Native Tests - Windows - hibernate-validator #- Failing: integration-tests/hibernate-validator
📦 integration-tests/hibernate-validator✖ |
Hmmm, the windows failure is interesting!
Has anyone seen this before? |
I was not able to reproduce the issue in https://github.com/graalvm/mandrel/actions/runs/1391994314 |
Disable single parsing of compiler graphs till the impact of it on heap usage decreases see oracle/graal#3435 and graalvm/mandrel#304 (comment) quarkusio#19511 didn't take into account runs with constraint memory. Bringing back `-H:-ParseOnce` reduces the heap usage significantly, from 3.9G down to 2.7G in integration-tests/main.
0574676
to
201b9a6
Compare
This workflow status is outdated as a new workflow run has been triggered. Failing Jobs - Building 201b9a6
Full information is available in the Build summary check run. Failures⚙️ Gradle Tests - JDK 11 Windows #- Failing: integration-tests/gradle
📦 integration-tests/gradle✖
⚙️ Native Tests - Windows - hibernate-validator #- Failing: integration-tests/hibernate-validator
📦 integration-tests/hibernate-validator✖ |
Disable single parsing of compiler graphs till the impact of it on heap usage decreases see oracle/graal#3435 and graalvm/mandrel#304 (comment) for more details
#19511 didn't take into account runs with constraint memory and it also measured the max committed heap size instead of the max heap usage. Bringing back
-H:-ParseOnce
reduces the heap usage significantly, from 3.9G down to 2.7G, inintegration-tests/main
.