Integrated: Shrink tlab to capacity
Kelvin Nilsen
kdnilsen at openjdk.org
Tue Dec 20 21:48:31 UTC 2022
On Fri, 9 Dec 2022 23:23:43 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
> When a TLAB request exceeds the currently available memory within young-gen, the existing behavior is to reject the TLAB request outright. This is recognized as a failed allocation request, which triggers degenerated GC.
>
> This change introduces code to reduce the likelihood that too-large TLAB requests will be issued, and when they are issued, it makes an effort to shrink the TLAB request in order to reduce the need for degenerated GC.
>
> The impact is difficult to measure because this situation is fairly rare. On one Extremem workload, the TLAB-shrinking code is exercised only once during a 16-minute run involving 500 concurrent GCs, a 45 GiB heap, and a 28 GiB young-gen size. The change reduces the degenerated GCs from 6 to 5.
>
> One reason that the remaining 5 degenerated GCs are not addressed by this change is that further work is required to handle a situation in which a requested TLAB is smaller than the available young-gen memory, but available memory is set aside in the evacuation reserve so cannot be provided to a mutator. Future work will address this condition.
This pull request has now been integrated.
Changeset: 9114616c
Author: Kelvin Nilsen <kdnilsen at openjdk.org>
URL: https://git.openjdk.org/shenandoah/commit/9114616c01bdeeddad50bec93869decee90f5a58
Stats: 201 lines in 2 files changed: 88 ins; 39 del; 74 mod
Shrink tlab to capacity
Reviewed-by: ysr, wkemper
-------------
PR: https://git.openjdk.org/shenandoah/pull/180
More information about the shenandoah-dev
mailing list