Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8311263

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!



            vklang Viktor Klang
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: