-
Bug
-
Resolution: Other
-
P4
-
19.0.2
-
generic
-
generic
ADDITIONAL SYSTEM INFORMATION :
OS:
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"
Kernel:
5.15.0-52-generic
CPU:
Intel(R) Xeon(R) Platinum 8480+
Workload:
1. GRPC https://github.com/grpc/grpc.git
* (no branch) 6847e05dbb [Release] Bump version to 1.54.0 (on v1.54.x branch) (#32859)
2. grpc-java https://github.com/grpc/grpc-java
* (HEAD detached at v1.54.0) e988f84d1 Bump version to 1.54.0
3. scenario: java_protobuf_async_unary_qps_unconstrained_insecure
JDK:
openJDK 19+2
https://github.com/openjdk/jdk.git tag:jdk-19+2
openJDK 19.0.2 GA
https://github.com/openjdk/jdk19u.git tag:jdk-19.0.2-ga
A DESCRIPTION OF THE PROBLEM :
1. run grpc-java benchmark scenario: java_protobuf_async_unary_qps_unconstrained_insecure by using openJDK 19+2 and openJDK 19.0.2 GA
2.Fact :
openJDK 19.0.2 GA has the lastest commit on 2022-10-04:
e2a9916a239 2022-10-04 12:41:14 8292969: Bad Thread Utilization in ForkJoinPool
4f5d73f2d41 2022-05-09 11:09:34 8286294: ForkJoinPool.commonPool().close() spins
9583e3657e4 2022-05-07 08:06:16 8284161: Implementation of Virtual Threads (Preview)
00e6c63cd12 2022-05-04 19:24:19 8277090: jsr166 refresh for jdk19
2e542e33b81 2021-10-04 23:14:12 8274349: ForkJoinPool.commonPool() does not work with 1 CPU
but openJDK19+2 lastest commit was on 2021-10-04
2e542e33b81 2021-10-04 23:14:12 8274349: ForkJoinPool.commonPool() does not work with 1 CPU
2072bc77b45 2021-09-28 21:21:53 8274391: Suppress more warnings on non-serializable non-transient instance fields in java.util.concurrent
3. result:
A: open JDK19+2 has better throughput than JDK19.0.2 GA(about 1.28x)
B: in JDK19.0.2 GA, we found False Sharing (mostly in ForkJoinPool.java) , and disappeared in JDK19+2
4. Question:
What are the major differences between the two versions of ForkJoinPool?
Why does the General Availability (GA) version exhibit worse performance than the previous version?
Thanks!
OS:
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"
Kernel:
5.15.0-52-generic
CPU:
Intel(R) Xeon(R) Platinum 8480+
Workload:
1. GRPC https://github.com/grpc/grpc.git
* (no branch) 6847e05dbb [Release] Bump version to 1.54.0 (on v1.54.x branch) (#32859)
2. grpc-java https://github.com/grpc/grpc-java
* (HEAD detached at v1.54.0) e988f84d1 Bump version to 1.54.0
3. scenario: java_protobuf_async_unary_qps_unconstrained_insecure
JDK:
openJDK 19+2
https://github.com/openjdk/jdk.git tag:jdk-19+2
openJDK 19.0.2 GA
https://github.com/openjdk/jdk19u.git tag:jdk-19.0.2-ga
A DESCRIPTION OF THE PROBLEM :
1. run grpc-java benchmark scenario: java_protobuf_async_unary_qps_unconstrained_insecure by using openJDK 19+2 and openJDK 19.0.2 GA
2.Fact :
openJDK 19.0.2 GA has the lastest commit on 2022-10-04:
e2a9916a239 2022-10-04 12:41:14 8292969: Bad Thread Utilization in ForkJoinPool
4f5d73f2d41 2022-05-09 11:09:34 8286294: ForkJoinPool.commonPool().close() spins
9583e3657e4 2022-05-07 08:06:16 8284161: Implementation of Virtual Threads (Preview)
00e6c63cd12 2022-05-04 19:24:19 8277090: jsr166 refresh for jdk19
2e542e33b81 2021-10-04 23:14:12 8274349: ForkJoinPool.commonPool() does not work with 1 CPU
but openJDK19+2 lastest commit was on 2021-10-04
2e542e33b81 2021-10-04 23:14:12 8274349: ForkJoinPool.commonPool() does not work with 1 CPU
2072bc77b45 2021-09-28 21:21:53 8274391: Suppress more warnings on non-serializable non-transient instance fields in java.util.concurrent
3. result:
A: open JDK19+2 has better throughput than JDK19.0.2 GA(about 1.28x)
B: in JDK19.0.2 GA, we found False Sharing (mostly in ForkJoinPool.java) , and disappeared in JDK19+2
4. Question:
What are the major differences between the two versions of ForkJoinPool?
Why does the General Availability (GA) version exhibit worse performance than the previous version?
Thanks!