RFR: 8337709: Use allocated states for chunking large array processing

Kim Barrett kbarrett at openjdk.org
Fri Aug 2 19:41:03 UTC 2024


Please review this change to the G1 young/mixed collector to use allocated
states to encode partial array task chunking.

States are allocated from per-worker-thread arena+free-list pairs, and
released to the free-list for the worker that completed use.  They are
refcounted to track the number of refering tasks.

Various other approaches (such as a single arena+FreeListAllocator) were
tested, but found to have worse performance, though in some cases fewer
allocations.  The per-worker arena+free-list pair was the only option that
didn't show a regression compared to the previous PartialArrayScanTask
approach on a stress test.

In addition to the changes to ScannerTask to support the new
PartialArrayState, it temporarily continues to support PartialArrayScanTask.
This is because ParallelGC will continue to use the latter until it is changed
to use PartialArrayState. The intent is to update ParallelGC in a followup CR.

Testing:
mach5 tier1-5
G1 performance suite

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

Commit messages:
 - G1 young update
 - add PartialArrayState
 - move chunk size inside stepper

Changes: https://git.openjdk.org/jdk/pull/20445/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20445&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8337709
  Stats: 501 lines in 9 files changed: 356 ins; 57 del; 88 mod
  Patch: https://git.openjdk.org/jdk/pull/20445.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20445/head:pull/20445

PR: https://git.openjdk.org/jdk/pull/20445


More information about the hotspot-gc-dev mailing list