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