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 _______________________________________________ Mailing list: https://launchpad.net/~openjdk Post to : [email protected] Unsubscribe : https://launchpad.net/~openjdk More help : https://help.launchpad.net/ListHelp

