RFR: 8324649: Shenandoah: replace implementation of free set [v53]
Kelvin Nilsen
kdnilsen at openjdk.org
Tue Apr 30 17:40:47 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 with a new target base due to a merge or a rebase. The pull request now contains 114 commits:
- Merge remote-tracking branch 'origin/master' into restructure-free-set
- Merge branch 'openjdk:master' into master
- Merge branch 'openjdk:master' into master
- Remove unnecessary call to update_watermark
- Assert progress on find_next and find_prev
- Simplify partition_membership_name by code reuse
- Simplify by combining implemnetations of shrink_interval functions
- Fix NumPartition type
Beautify the code by changing type of NumPartitions and adding Int and
UInt forms of NumPartitions.
- Refinements to support zero-build compiles
- Fix whitespace
- ... and 104 more: https://git.openjdk.org/jdk/compare/a863ef5d...d6e3546c
-------------
Changes: https://git.openjdk.org/jdk/pull/17561/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17561&range=52
Stats: 2523 lines in 8 files changed: 2139 ins; 189 del; 195 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 hotspot-gc-dev
mailing list