RFR: 8275056: Virtualize G1CardSet containers over heap region [v8]
Thomas Schatzl
tschatzl at openjdk.java.net
Mon Nov 8 15:11:53 UTC 2021
> Hi all,
>
> can I have reviews for this change that virtualizes `G1CardSet` "regions" over a heap region, allowing the use of multiple "`G1CardSet` card regions" across a single heap region?
>
> I.e. `HeapRegionRemSet`, which is the interface to a region's card set, simply uses multiple indexes for the remembered set of a single source heap region if necessary. E.g. on a 128MB region, heap region 0's cards would be stored as (what I call) "card region" indexes 0..3 as appropriate in its `_card_set`.
>
> When retrieving the values, the appropriate retransformation is done (during `HeapRegionRemSet::iterate_for_merge()`).
>
> Assigning `HeapRegionRemSet` to handle all this multiplexing required some move of the `G1CardSet::iterate_for_merge` method to `HeapRegionRemSet`, which is why there are more changes than expected.
>
> One change I would like to have opinions on is storing the amount of card regions per region into `G1CardSetConfiguration`, maybe it is better to put this into `HeapRegionRemSet` - but I did not want to start a `HeapRegionRemSetConfiguration` (maybe also put the cached values introduced in the `split_card` optimization there as well?).
>
> This allows unlimited actual heap region size. Currently set to 512MB (what we would set ergonomically if on a 1 TB heap), but that's just a random number basically.
> Feel free to suggest a different maximum heap region size if any. We could also keep the ergonomics use a smaller heap region size (e.g. 32M as before).
>
> There is also a CSR to look at.
>
> Testing: tier1-5, some perf testing on region sizes up to 512M with slight improvements in specjbb2015 with larger region sizes.
>
> Thanks,
> Thomas
Thomas Schatzl has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains eight commits:
- Merge branch 'master' into 8275056-virtualize-g1cardset-containers2
- ayang review1
- Limit ergonomics to 32m regions
- sjohanss review
- Fix assert after merge - the assert depends on current heap region configuration, so move it to the correct constructor
- Merge branch 'master' into 8275056-virtualize-g1cardset-containers2
- 32 bit compatibility - limit region size to 32M there as before. Fix test.
- Virtual heap regions in remembered sets
-------------
Changes: https://git.openjdk.java.net/jdk/pull/6059/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6059&range=07
Stats: 242 lines in 12 files changed: 148 ins; 68 del; 26 mod
Patch: https://git.openjdk.java.net/jdk/pull/6059.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/6059/head:pull/6059
PR: https://git.openjdk.java.net/jdk/pull/6059
More information about the hotspot-gc-dev
mailing list