RFR: 8343704: Bad GC parallelism with processing Cleaner queues
Aleksey Shipilev
shade at openjdk.org
Tue Nov 12 16:07:48 UTC 2024
See the bug for more discussion and reproducer. This PR replaces the linked list with an `ArrayList` wrapper that manages synchronization, search and replacements effectively. There are possible improvements here, most glaring is parallelism that is currently knee-capped by global synchronization. The synchronization scheme follows what we already have, and I think it is safer to continue with it right now.
I'll put performance data in a separate comment.
Additional testing:
- [x] Original reproducer improves drastically
- [x] New microbenchmark shows no regression on "churning" tests, which covers insertion/removal perf
- [x] New microbenchmark shows improvement on Full GC times (crude, but repeatable), serves as a proxy for reproducer
- [x] `java/lang/ref` tests in release
- [ ] `all` tests in fastdebug
-------------
Commit messages:
- Fix
Changes: https://git.openjdk.org/jdk/pull/22043/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22043&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8343704
Stats: 275 lines in 4 files changed: 205 ins; 58 del; 12 mod
Patch: https://git.openjdk.org/jdk/pull/22043.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22043/head:pull/22043
PR: https://git.openjdk.org/jdk/pull/22043
More information about the core-libs-dev
mailing list