-
Notifications
You must be signed in to change notification settings - Fork 131
8350285: Shenandoah: Regression caused by ShenandoahLock under extreme contention #1933
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
8350285: Shenandoah: Regression caused by ShenandoahLock under extreme contention #1933
Conversation
👋 Welcome back dtmhuang! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
This backport pull request has now been updated with issue from the original commit. |
|
/approval request for backport of JDK-8350285 Shenandoah: Regression caused by ShenandoahLock under extreme contention Motivation: Without this change, ShenandoahLock has some performance regression Risk: Low, since change has been present in tip since February, 2025. Ran GHA Sanity Checks, and tier 1 and tier 2 tests locally. Patch is clean. |
Hi @dtmhuang |
Sure! The original fix had code to reproduce the bug:
I ran this on the command line with Running this without the fix gives at-safepoint times
Running with the backported fix gives at-safepoint times
|
Hi @dtmhuang |
Backport for ShenandoahLock performance regression issue. The fix involves sleeping for a very short duration every 3 yields, with the number of yields picked through manual testing.
Clean backport, ran GHA sanity checks and locally tested
tier1
,tier2
, andhotspot_gc_shenandoah
.test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java
sometimes fails locally, but it also sometimes failed before the backport.test/jdk/java/nio/channels/DatagramChannel/SendReceiveMaxSize.java
fails locally, but it also fails locally before the backport.Progress
Issue
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk21u-dev.git pull/1933/head:pull/1933
$ git checkout pull/1933
Update a local copy of the PR:
$ git checkout pull/1933
$ git pull https://git.openjdk.org/jdk21u-dev.git pull/1933/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 1933
View PR using the GUI difftool:
$ git pr show -t 1933
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk21u-dev/pull/1933.diff
Using Webrev
Link to Webrev Comment