RFR: 8349927: Waiting for compiler termination delays shutdown for 10+ ms

Aleksey Shipilev shade at openjdk.org
Wed Feb 12 19:17:19 UTC 2025


See bug for extended description. This PR reworks the shutdown waiting mechanism in three ways: 
 1. Use exponential backoff with very small wait time at the start, to catch compiler threads earlier.
 2. Avoid timed-wait on Monitor, when a sleep would suffice.
 3. Track the time accurately, so we are not at the mercy of sleep/wait accuracy.

I originally found this issue when studying Leyden performance, but it affects mainline in the same way. For example, JavacBenchApp from Leyden shows we consistently save ~10ms of round-trip time:


Benchmark 1: build/linux-x86_64-server-release/images/jdk/bin/java -Xmx512m -Xms512m -XX:+UseParallelGC -cp JavacBenchApp.jar JavacBenchApp 1 1

# Before
  Time (mean ± σ):     495.4 ms ±   2.4 ms    [User: 1321.2 ms, System: 110.4 ms]
  Range (min … max):   489.8 ms … 502.6 ms    100 runs

# After
  Time (mean ± σ):     485.4 ms ±   2.7 ms    [User: 1318.9 ms, System: 110.3 ms]
  Range (min … max):   479.8 ms … 494.3 ms    100 runs


Additional testing:
 - [ ] Linux x86_64 server fastdebug, `tier1`
 - [ ] Linux AArch64 server fastdebug, `all`

-------------

Commit messages:
 - Fix

Changes: https://git.openjdk.org/jdk/pull/23593/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23593&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8349927
  Stats: 31 lines in 1 file changed: 15 ins; 4 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/23593.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23593/head:pull/23593

PR: https://git.openjdk.org/jdk/pull/23593


More information about the hotspot-runtime-dev mailing list