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