RFR (11u, XXL): Upstream/backport Shenandoah to JDK11u
Roman Kennke
rkennke at redhat.com
Thu Jun 25 11:16:27 UTC 2020
I would like to revive this RFR, I believe we haven't come to a
conclusion yet. I still think it would be very useful to have the
Shenandoah GC included in jdk11u upstream. I have heard from several
vendors who would like to ship Shenandoah, but maintaining the rather
huge Shenandoah backport patch is an absolute no-go.
This is an updated patch that includes numerous bugfixes and
improvements in Shenandoah. It is what Red Hat is going to ship in
their 11.0.8 release.
Full webrev:
https://cr.openjdk.java.net/~rkennke/shenandoah-jdk11u-upstream/webrev.04-all/
Webrev only for shared-code changes:
https://cr.openjdk.java.net/~rkennke/shenandoah-jdk11u-upstream/webrev.04-shared/
Please let me know what you think.
Roman
> On Fri, 2020-01-17 at 18:05 +0100, Roman Kennke wrote:
> Hello,
>
> The Shenandoah GC has been integrated into jdk12 a little over a year
> ago:
>
> http://hg.openjdk.java.net/jdk/jdk/rev/9c18c9d839d3
>
> The Shenandoah team has been maintaining the Shenandoah-enabled
> jdk11u
> downstream repository since the inception of jdk11 under:
>
> http://hg.openjdk.java.net/shenandoah/jdk11
>
> In order to make it more useful and accessible for users, we would
> like
> to make it available in upstream jdk11u. The Shenandoah team at Red
> Hat
> intends to maintain it the same way it had been maintained in
> shenandoah/jdk11, in the course of regular jdk11u maintenance Red Hat
> already does.
>
> Thanks to recent changes in Shenandoah over the last year, we are now
> able to fit the GC interface in jdk11 almost exactly. There are a few
> exceptions though. We tried to follow the following pattern for all
> shared-code changes where it made sense:
>
> #if INCLUDE_SHENANDOAH_GC
> if (UseShenandoahGC) {
> ...
> }
> #endif
>
> This ensures that the Shenandoah-specific changes are cut out of the
> build when building without Shenandoah, and avoid those code paths at
> runtime when running without Shenandoah.
>
> Also, there are a few places where this was not possible or where it
> didn't seem feasible, but we tried to keep them few and obvious.
> Whenever this is the case, we are mirroring as close as possible what
> we
> have in jdk/jdk.
>
> Architecture-wise, Shenandoah runs on x86_64, aarch64, x86_32. Other
> architectures still build fine, and Shenandoah gets automatically
> disabled during configure if not supported. OS-wise, Shenandoah runs
> on
> Linux, Windows, and is known to run on MacOS X and Solaris too.
>
> I wasn't sure which form this should take. I decided to start with
> the
> easiest possible form this could take: a simple patch/webrev and an
> RFR.
> Let me know if you need a JIRA issue or any other formalities to
> track that.
>
> Full webrev:
> https://cr.openjdk.java.net/~rkennke/shenandoah-jdk11u-upstream/webrev.02-all/
>
> Webrev only for shared-code changes:
> https://cr.openjdk.java.net/~rkennke/shenandoah-jdk11u-upstream/webrev.02-shared/
>
> The webrevs are based on and depend on the arraycopy patch proposed
> for
> review here:
>
> https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2020-January/002396.html
>
> Testing:
> The code has been tested many many times, continuously while
> maintaining
> it. It has also served as the basis for RPMs and shipped to
> customers.
> We are running all sorts of tests of the hotspot/jtreg testsuite, in
> particular hotspot_gc_shenandoah, CTW tests, the regular tier* tests,
> several popular benchmarks (specjvm, specjbb on a regular basis), on
> a
> nightly basis.
>
> Please let me know what you think.
>
> Thanks,
> Roman
>
>
>
>
>
>
>
More information about the jdk-updates-dev
mailing list