-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
Allow G1 for javac workers. #12598
Allow G1 for javac workers. #12598
Conversation
G1 has a smoother memory profile than parallelGC, which is desirable for workers that users run locally like javac. Unfortunately, completely getting rid of the parallelGC option regresses Java build performance. This is because Turbine does not run as a worker—see https://github.com/bazelbuild/bazel/issues/8006—and G1 seems to do worse than parallelGC for short-lived programs. So, I simply moved the parallelGC option to the Turbine-specific jvm opts. I ran bazel-bench to test the performance this change building //src:bazel_nojdk: ``` metric mean median stddev pval wall: 475.842s ( -0.05%) 474.997s ( -0.09%) 1.203s 0.00000 cpu: 73.063s ( -2.28%) 72.980s ( -2.21%) 1.499s 0.40000 system: 19.427s ( +0.66%) 19.450s ( +1.09%) 0.111s 0.40000 memory: 89.667MB ( -0.74%) 90.000MB ( +0.00%) 0.471MB 0.00000 ```
Benjamin, for your benchmark did you build a new version of java_tools and benchmark with that one? Just changing the code here won't have any immediate effect. |
@comius that's awesome news! |
I tested on one of my machines, which gives a similar result:
|
And on another more powerful machine:
|
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.
This is a nice improvement. Benchmarks on the compact strings effect would be nice, but can be done afterwards.
I did play around with compact strings a bit. I seemed to find a tiny regression—hence the code comment to that effect in this CL—but now I'm thinking a macro benchmark like building Bazel is too noisy to tell. |
Yes, you have to crank up the number of runs in order to reduce the noise. I typically use 20 runs or so. Let's do that separately. |
G1 has a smoother memory profile than parallelGC, which is desirable for workers
that users run locally like javac.
Unfortunately, completely getting rid of the parallelGC option regresses Java
build performance. This is because Turbine does not run as a worker—see
https://github.com/bazelbuild/bazel/issues/8006—and G1 seems to do worse than
parallelGC for short-lived programs. So, I simply moved the parallelGC option to
the Turbine-specific jvm opts.
I ran bazel-bench to test the performance this change building //src:bazel_nojdk: