RFR: 8275056: Virtualize G1CardSet containers over heap region [v10]
tschatzl at openjdk.java.net
Mon Nov 15 09:32:07 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.
Thomas Schatzl has updated the pull request incrementally with one additional commit since the last revision:
- all: https://git.openjdk.java.net/jdk/pull/6059/files
- new: https://git.openjdk.java.net/jdk/pull/6059/files/3b124f19..e0cfedd4
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6059&range=09
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6059&range=08-09
Stats: 6 lines in 3 files changed: 0 ins; 0 del; 6 mod
Fetch: git fetch https://git.openjdk.java.net/jdk pull/6059/head:pull/6059
More information about the hotspot-gc-dev