← Back to team overview

openjdk team mailing list archive

[Bug 1902029] [NEW] openjdk-lts 11.0.9+ could include Shenandoah GC on amd64

 

Public bug reported:

In OpenJDK 11.0.9, the Shenandoah GC has been backported from OpenJDK 15, and is considered "Ready for Production". References:
https://wiki.openjdk.java.net/display/shenandoah/Main
https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2020-October/004007.html (11.0.9 release notes)
https://bugs.openjdk.java.net/browse/JDK-8250784 (the backport issue, with pointers to review discussions)

Just like ZGC, it is an optional feature, which must be explicitly enabled at build time. Some vendors enable it already:
https://wiki.openjdk.java.net/display/shenandoah/Main#Main-Releases
For instance, Fedora enables it on x86_64 (amd64), now without any specific patch (prior to 11.0.9, they were shipping the backport patch):
https://src.fedoraproject.org/rpms/java-11-openjdk/blob/master/f/java-11-openjdk.spec

I think Ubuntu should do the same, enable it on amd64 (just like ZGC),
and backport to Bionic/Focal. For some use-cases, Shenandoah has already
proved it brings valuable improvements compared to G1GC, it would be
nice being able to use it on Ubuntu-based containers/systems too.

I will attach an untested patch, just to show what I think is the
required change to debian/rules.

============

> We also need:

> 1) The release of Ubuntu you are using, via 'lsb_release -rd' or
System -> About Ubuntu

$ lsb_release -rd
Description:	Ubuntu 18.04.5 LTS
Release:	18.04

> 2) The version of the package you are using, via 'apt-cache policy
pkgname' or by checking in Software Center

$ apt-cache policy openjdk-11-jre-headless
openjdk-11-jre-headless:
  Installed: 11.0.9+11-0ubuntu1~18.04.1
  Candidate: 11.0.9+11-0ubuntu1~18.04.1
  Version table:
 *** 11.0.9+11-0ubuntu1~18.04.1 500
        500 http://nova.clouds.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
        100 /var/lib/dpkg/status
     10.0.1+10-3ubuntu1 500
        500 http://nova.clouds.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

> 3) What you expected to happen

$ java -XX:+UseShenandoahGC -Xlog:gc -version
[0.004s][info][gc] Heuristics ergonomically sets -XX:+ExplicitGCInvokesConcurrent
[0.004s][info][gc] Heuristics ergonomically sets -XX:+ShenandoahImplicitGCInvokesConcurrent
[0.005s][info][gc] Using Shenandoah
openjdk version "11.0.9" 2020-XX-XX
...

> 4) What happened instead

$ java -XX:+UseShenandoahGC -Xlog:gc -version
Unrecognized VM option 'UseShenandoahGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

** Affects: openjdk-lts (Ubuntu)
     Importance: Undecided
         Status: New

** Patch added: "openjdk-lts_11.0.9+11_enable-shenandoahgc-on-amd64.patch"
   https://bugs.launchpad.net/bugs/1902029/+attachment/5428942/+files/openjdk-lts_11.0.9+11_enable-shenandoahgc-on-amd64.patch

-- 
You received this bug notification because you are a member of OpenJDK,
which is subscribed to openjdk-lts in Ubuntu.
https://bugs.launchpad.net/bugs/1902029

Title:
  openjdk-lts 11.0.9+ could include Shenandoah GC on amd64

Status in openjdk-lts package in Ubuntu:
  New

Bug description:
  In OpenJDK 11.0.9, the Shenandoah GC has been backported from OpenJDK 15, and is considered "Ready for Production". References:
  https://wiki.openjdk.java.net/display/shenandoah/Main
  https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2020-October/004007.html (11.0.9 release notes)
  https://bugs.openjdk.java.net/browse/JDK-8250784 (the backport issue, with pointers to review discussions)

  Just like ZGC, it is an optional feature, which must be explicitly enabled at build time. Some vendors enable it already:
  https://wiki.openjdk.java.net/display/shenandoah/Main#Main-Releases
  For instance, Fedora enables it on x86_64 (amd64), now without any specific patch (prior to 11.0.9, they were shipping the backport patch):
  https://src.fedoraproject.org/rpms/java-11-openjdk/blob/master/f/java-11-openjdk.spec

  I think Ubuntu should do the same, enable it on amd64 (just like ZGC),
  and backport to Bionic/Focal. For some use-cases, Shenandoah has
  already proved it brings valuable improvements compared to G1GC, it
  would be nice being able to use it on Ubuntu-based containers/systems
  too.

  I will attach an untested patch, just to show what I think is the
  required change to debian/rules.

  ============

  > We also need:

  > 1) The release of Ubuntu you are using, via 'lsb_release -rd' or
  System -> About Ubuntu

  $ lsb_release -rd
  Description:	Ubuntu 18.04.5 LTS
  Release:	18.04

  > 2) The version of the package you are using, via 'apt-cache policy
  pkgname' or by checking in Software Center

  $ apt-cache policy openjdk-11-jre-headless
  openjdk-11-jre-headless:
    Installed: 11.0.9+11-0ubuntu1~18.04.1
    Candidate: 11.0.9+11-0ubuntu1~18.04.1
    Version table:
   *** 11.0.9+11-0ubuntu1~18.04.1 500
          500 http://nova.clouds.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
          500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
          100 /var/lib/dpkg/status
       10.0.1+10-3ubuntu1 500
          500 http://nova.clouds.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

  > 3) What you expected to happen

  $ java -XX:+UseShenandoahGC -Xlog:gc -version
  [0.004s][info][gc] Heuristics ergonomically sets -XX:+ExplicitGCInvokesConcurrent
  [0.004s][info][gc] Heuristics ergonomically sets -XX:+ShenandoahImplicitGCInvokesConcurrent
  [0.005s][info][gc] Using Shenandoah
  openjdk version "11.0.9" 2020-XX-XX
  ...

  > 4) What happened instead

  $ java -XX:+UseShenandoahGC -Xlog:gc -version
  Unrecognized VM option 'UseShenandoahGC'
  Error: Could not create the Java Virtual Machine.
  Error: A fatal exception has occurred. Program will exit.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1902029/+subscriptions


Follow ups