[8u, 11u] RFR: Shenandoah: enable low-frequency STW class unloading

Thomas Stüfe thomas.stuefe at gmail.com
Tue Jul 21 10:56:26 UTC 2020


Out of curiosity, the GCs induced by bumping against the Metaspace GC
threshold when loading classes would still work and unload stuff?

..Thomas

On Mon, Jul 20, 2020 at 4:21 PM Aleksey Shipilev <shade at redhat.com> wrote:

> Hi,
>
> I think we have gathered enough real world data to consider enabling STW
> class unloading by default,
> but on much lower frequency. The concurrent class unloading is enabled by
> default since JDK 14,
> because we have enough infrastructure there. In 8u and 11u, we don't have
> such luck, and so we can
> only do STW class unloading, which adds to Final Mark time when it
> happens. This is why it was
> disabled in 8u and 11u by default, asking users to explicitly enable it.
>
> There are still good reasons to do it, even with STW:
>   a) String Table cruft accumulates over time;
>   b) CLDG cruft accumulates over time;
>   c) The connection between the two above and the disabled -CUwCM is very
> opaque;
>
> The long-run performance stability would be improved if we accepted a
> longer Final Mark pause every
> once in a while. It seems doing this every 100th cycle is a good spot? In
> many cases I've seen, the
> GC runs a few times per minute, which means we would get the several class
> unloading cycles every
> hour. That should be enough to amortize costs, and also be frequent enough
> to see as regular outlier
> in users' monitoring, if they want to turn it off.
>
> 8u patch:
>
> https://cr.openjdk.java.net/~shade/shenandoah/regular-stw-cu/webrev.01.8u/
>   Passes: hotspot_gc_shenandoah, ad-hoc runs
>
> 11u patch:
>
> https://cr.openjdk.java.net/~shade/shenandoah/regular-stw-cu/webrev.01.11u/
>   Passes: hotspot_gc_shenandoah, tier{1,2} with Shenandoah
>
> Thoughts?
>
> --
> Thanks,
> -Aleksey
>
>


More information about the shenandoah-dev mailing list