RFR: 8372701: Randomized profile counters [v2]
Andrew Haley
aph at openjdk.org
Thu Nov 27 17:34:50 UTC 2025
On Thu, 27 Nov 2025 17:18:35 GMT, Andrew Haley <aph at openjdk.org> wrote:
>> Please use [this link](https://github.com/openjdk/jdk/pull/28541/files?w=1) to view the files changed.
>>
>> Profile counters scale very badly.
>>
>> The overhead for profiled code isn't too bad with one thread, but as the thread count increases, things go wrong very quickly.
>>
>> For example, here's a benchmark from the OpenJDK test suite, run at TieredLevel 3 with one thread, then three threads:
>>
>>
>> Benchmark (randomized) Mode Cnt Score Error Units
>> InterfaceCalls.test2ndInt5Types false avgt 4 27.468 ± 2.631 ns/op
>> InterfaceCalls.test2ndInt5Types false avgt 4 240.010 ± 6.329 ns/op
>>
>>
>> This slowdown is caused by high memory contention on the profile counters. Not only is this slow, but it can also lose profile counts.
>>
>> This patch is for C1 only. It'd be easy to randomize C1 counters as well in another PR, if anyone thinks it's worth doing.
>
> Andrew Haley has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 52 commits:
>
> - Merge remote-tracking branch 'refs/remotes/origin/JDK-8134940' into JDK-8134940
> - whitespace
> - AArch64
> - Minimize deltas to master
> - Better
> - Inter
> - Cleanup
> - Cleanup
> - Merge master
> - D'oh
> - ... and 42 more: https://git.openjdk.org/jdk/compare/b2f97131...49d52d82
I have only made the back-end changes to AArch64 and x86. The back-end changes are simple to make for other architectures, and will need to be done if this PR is to be merged into mainline.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28541#issuecomment-3586882842
More information about the hotspot-dev
mailing list