Why is that openJDK19+2 has better performance than OpenJDK 19.0.2 GA

XMLWordPrintable

      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!



            Assignee:
            Viktor Klang
            Reporter:
            Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: