RFR: Shrink tlab to capacity [v2]
Kelvin Nilsen
kdnilsen at openjdk.org
Mon Dec 12 23:17:11 UTC 2022
> 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.
Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
Clarify recursive implementation of allocate_memory_under_lock
(with a comment)
-------------
Changes:
- all: https://git.openjdk.org/shenandoah/pull/180/files
- new: https://git.openjdk.org/shenandoah/pull/180/files/774e07a1..2d5da073
Webrevs:
- full: https://webrevs.openjdk.org/?repo=shenandoah&pr=180&range=01
- incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=180&range=00-01
Stats: 20 lines in 1 file changed: 17 ins; 0 del; 3 mod
Patch: https://git.openjdk.org/shenandoah/pull/180.diff
Fetch: git fetch https://git.openjdk.org/shenandoah pull/180/head:pull/180
PR: https://git.openjdk.org/shenandoah/pull/180
More information about the shenandoah-dev
mailing list