Details
-
Bug
-
Status: Resolved
-
P1
-
Resolution: Fixed
-
None
Description
Beam SDK has been supporting Java 11 for a while (I guess the support was introduced here https://issues.apache.org/jira/browse/BEAM-2530). Unfortunately, in Spotify we are still experiencing performance issues when using Beam SDK 2.32, Google Dataflow and Java 11.
Thanks to emilyye and iht, they confirmed JVM 11 is using SerialGC, while Java 8 uses ParallelGC. It sounds like ParallelGC is a good option for high throughput / low latency jobs. For Java11 we'd expect to use G1GC or ParallelGC.
This SO question [1] clarifies that JVM chooses SerialGC when it treats the machine as a "client". It looks like the Java SDK container could benefit from using `-XX:+AlwaysActAsServerClassMachine`. Is that correct?
Let me know if the ticket needs further context or adjustment. (It is my first time creating a ticket here).
[1] https://stackoverflow.com/questions/52474162/why-is-serialgc-chosen-over-g1gc