> Please use [this link](https://github.com/openjdk/jdk/pull/28541/changes?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. > > One other thing to note is that randomized profile counters degrade very > badly with small decimation ratios. For example, using a ratio of 2 with > `-XX:ProfileCaptureRatio=2` with a single thread results in > > > Benchmark (randomized) Mode Cnt Score Error > Units > InterfaceCalls.test2ndInt5Types false avgt 4 80.147 ± 9.991 > ns/op > > > The problem is that the branch prediction rate drops away very badly, leading > to many mispredictions. It only really makes sense to use higher decimation > ratios, e.g. 64.
Andrew Haley has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 76 commits: - Merge branch 'master' into JDK-8134940 - Cleanup AArch64 - Merge from 903b3fe19596adaeac7cfb0d749b6e83f668f52f - Cleanup - Cleanup - Nice cleanup - Checkpoint - Checkpoint - Merge branch 'JDK-8134940' of https://github.com/theRealAph/jdk into JDK-8134940 - Checkpoint - ... and 66 more: https://git.openjdk.org/jdk/compare/364fd0e3...b997cd07 ------------- Changes: https://git.openjdk.org/jdk/pull/28541/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28541&range=15 Stats: 1262 lines in 45 files changed: 1129 ins; 23 del; 110 mod Patch: https://git.openjdk.org/jdk/pull/28541.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28541/head:pull/28541 PR: https://git.openjdk.org/jdk/pull/28541
