RFR: 8266821: G1: Prefetch cards during merge heap roots phase

Thomas Schatzl tschatzl at openjdk.java.net
Tue May 11 13:15:10 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. 

Testing: tier1-3, lots of tier1-tier8 runs with [JDK-8017163](https://bugs.openjdk.java.net/browse/JDK-8017163).

-------------

Commit messages:
 - Initial version, prefetch remembered set and log buffer merging

Changes: https://git.openjdk.java.net/jdk/pull/3975/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3975&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266821
  Stats: 327 lines in 9 files changed: 302 ins; 4 del; 21 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