Integrated: Change affiliation representation

Kelvin Nilsen kdnilsen at openjdk.org
Wed Nov 16 14:50:05 UTC 2022


On Mon, 14 Nov 2022 21:14:53 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:

> With generational mode of Shenandoah, each region is associated with OLD, YOUNG, or FREE.  During certain marking and update-refs activities, the region affiliation is frequently consulted.  In the original implementation, the region affiliation was stored in a field of the ShenandoahHeapRegion object.  In this code, we maintain a separate array, indexed by region number, to represent the affiliation of each region.  This saves one level of indirection and improves cache locality for looking up the affiliation of each region.
> 
> Measurements show significant improvement in throughput.  One workload that was configured to perform back-to-back old-gen collections was able to increase the frequency of old-gen collections by almost 5 fold.  With a 20-minute Extremem workload using a 48G heap, 20G old-gen, the P95 latency improvement was 0.54% (2.395 ms) and the P99.999 latency improvement was 58.21% (29.195 ms) in comparison to the implementation before this patch.

This pull request has now been integrated.

Changeset: 419a3a2a
Author:    Kelvin Nilsen <kdnilsen at openjdk.org>
URL:       https://git.openjdk.org/shenandoah/commit/419a3a2ab30f92a15a3c7205dfa0f22502ee69e5
Stats:     192 lines in 8 files changed: 143 ins; 33 del; 16 mod

Change affiliation representation

Reviewed-by: ysr, wkemper

-------------

PR: https://git.openjdk.org/shenandoah/pull/170


More information about the shenandoah-dev mailing list