RFR: 8294775: Shenandoah: reduce contention on _threads_in_evac
Nick Gasson
ngasson at openjdk.org
Tue Oct 11 12:36:28 UTC 2022
On Wed, 5 Oct 2022 11:10:29 GMT, Nick Gasson <ngasson at openjdk.org> wrote:
> The idea here is to reduce contention on the shared `_threads_in_evac` counter by splitting its state over multiple independent cache lines. Each thread hashes to one particular counter based on its `Thread*`. This helps improve throughput of concurrent evacuation where many Java threads may be attempting to update this counter on the load barrier slow path.
>
> See this earlier thread for details and SPECjbb results: https://mail.openjdk.org/pipermail/shenandoah-dev/2022-October/017494.html
>
> Also tested `hotspot_gc_shenandoah` on x86 and AArch64.
> Thank you, that is a useful change! I verified performance and it does improve both throughput and latency on several machines (not as much as for you - but I also have not thrown so many CPUs at it.. )
Thanks for testing! The improvement is quite dependent on the machine you're using (the 160-core one is probably an outlier ;-), and there's a marked difference between NUMA and non-NUMA systems.
-------------
PR: https://git.openjdk.org/jdk/pull/10573
More information about the hotspot-gc-dev
mailing list