RFR: 8266821: G1: Prefetch cards during merge heap roots phase [v3]
Thomas Schatzl
tschatzl at openjdk.java.net
Thu May 13 09:00:40 UTC 2021
> Hi all,
>
> can I have reviews for this change that improves performance of the merge heap roots phase in g1?
>
> Merging heap roots (remembered sets and log buffers) into the card table for later scanning to a large degree constitutes random accesses to the card table.
>
> Putting a small prefetch queue between calculating the card table address and inspecting the given card table value decreases merge remembered set time by 20-30% and merge log buffers time by 40-50% (on x64. AArch64 shows similar if not better improvements).
>
> Applications not having a significant amount of either remembered sets or log buffers do not show significant difference.
>
> The cache size constants for arm64 and x86 were derived from testing with a benchmark creating lots of references and log buffers (i.e. BigRamTester). Could not do any corresponding tests on other architectures due to lack of machines.
>
> Testing: tier1-3, lots of tier1-tier8 runs with [JDK-8017163](https://bugs.openjdk.java.net/browse/JDK-8017163).
Thomas Schatzl has updated the pull request incrementally with one additional commit since the last revision:
Apply suggestions from code review
kbarrett review 2
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/3975/files
- new: https://git.openjdk.java.net/jdk/pull/3975/files/288ba6dc..7988dc6c
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3975&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3975&range=01-02
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/3975.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3975/head:pull/3975
PR: https://git.openjdk.java.net/jdk/pull/3975
More information about the hotspot-dev
mailing list