RFR: 8341334: CDS: Parallel relocation [v12]
Ioi Lam
iklam at openjdk.org
Mon Nov 18 18:09:59 UTC 2024
On Sat, 16 Nov 2024 07:13:22 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> In Leyden performance investigations, we have figured that `ArchiveRelocationMode=0` is saving 5..7 ms on HelloWorld startup. Mainline defaults to `ARM=1`, _losing_ as much. `ARM=0` was switched to `ARM=1` with [JDK-8294323](https://github.com/openjdk/jdk/commit/be70bc1c58eaec876aa1ab36eacba90b901ac9b8), which was delivered to JDK 17+ in in Apr 2023.
>>
>> Profiling shows we spend time mem-faulting the memory loading the RO/RW regions, about 15 MB total. 15 MB in 5ms amounts to >4GB/sec, close to the single-threaded limits. I suspect the impact is larger if we relocate larger Metaspace, e.g. after dumping a CDS archive from a large application. There is little we can do to make the actual relocation part faster: the overwhelming majority of samples is on kernel side.
>>
>> This PR implements the infrastructure for fast archive workers, and leverages it to perform parallel core regions relocation. The RW/RO regions this code traverses is large, and we can squeeze more performance by parallelizing it.
>>
>> (I'll put some performance data in the comments)
>>
>> Additional testing:
>> - [x] Linux x86_64 server fastdebug, `runtime/cds`
>> - [ ] Linux AArch64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 23 commits:
>
> - Merge branch 'master' into JDK-8341334-cds-parallel-relocation
> - Make sure archive workers are shutdown
> - Cosmetic changes
> - Shutdown sequence was not exactly correct
> - ArchiveWorkers lifecycle: share it globally
> - Add sanity assert
> - More conservative/eager worker count selection logic
> - Avalanche signaling as well
> - Worker fence is misplaced
> - Rename the flag
> - ... and 13 more: https://git.openjdk.org/jdk/compare/d2e4b511...d073d9ed
Approve again.
-------------
Marked as reviewed by iklam (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/21302#pullrequestreview-2443352833
More information about the hotspot-runtime-dev
mailing list