RFR: 8324649: Shenandoah: refactor implementation of free set [v18]
Kelvin Nilsen
kdnilsen at openjdk.org
Sun Mar 3 15:17:08 UTC 2024
> Several objectives:
> 1. Reduce humongous allocation failures by segregating regular regions from humongous regions
> 2. Do not retire regions just because an allocation failed within the region if the memory remaining within the region is large enough to represent a LAB
> 3. Track range of empty regions in addition to range of available regions in order to expedite humongous allocations
> 4. Treat collector reserves as available for Mutator allocations after evacuation completes
> 5. Improve encapsulation so as to enable an OldCollector reserve for future integration of generational Shenandoah
>
> We have compared performance of existing FreeSet implementation with the proposed PR over a broad set of performance workloads and see that the impact is mostly neutral.
>
> Comparing 105235.0 metrics from control, 220638.0 from experiment.
> Compare: 0.589s
> Most impacted benchmarks | Most impacted metrics
> -------------------------------------------------------------------------------------------------------
> Shenandoah/jython | cwr_total
>
>
> Only in experiment | Only in control
> -------------------------------------------------------------------------------------------------------
> crypto.signverify/trigger_failure | crypto.rsa/cmr_thread_roots
> extremem-large-31g/adjust_pointers | scimark.sparse.small/concurrent_thread_roots
> extremem-large-31g/calculate_addresses | xml.transform/concurrent_thread_roots
> crypto.signverify/class_unloading_rendezvous | mpegaudio/concurrent_weak_roots
> serial/cmr_total | crypto.rsa/ctr_thread_roots
>
> Shenandoah
> -------------------------------------------------------------------------------------------------------
> +5.64% jython/cwr_total p=0.00037
> Control: 1.928ms (+/-272.40us) 170
> Test: 2.037ms (+/-322.73us) 344
Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
Revert redundant change from https://github.com/openjdk/jdk/pull/18083
This change was made experimentally in this PR to evaluate whether this
would resolve regressions in GHA tests. When present, this PR passed
all GHA tests. When absent, it does not.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/17561/files
- new: https://git.openjdk.org/jdk/pull/17561/files/a45f976d..25263849
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=17561&range=17
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=17561&range=16-17
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/17561.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/17561/head:pull/17561
PR: https://git.openjdk.org/jdk/pull/17561
More information about the shenandoah-dev
mailing list