RFR: 8350285: Shenandoah: Regression caused by ShenandoahLock under extreme contention [v2]
duke
duke at openjdk.org
Fri Feb 21 16:34:54 UTC 2025
On Wed, 19 Feb 2025 22:49:22 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:
>> We have noticed there is significant regression in at-safepoint time with recent changes made to ShenandoahLock, more specifically this [PR](https://github.com/openjdk/jdk/pull/19570), a local reproducer was written to reproduce the issue, here is the top N at-safepoint time in `ns` comparison:
>>
>> Tip:
>>
>> 94069776
>> 50993550
>> 49321667
>> 33903446
>> 32291313
>> 30587810
>> 27759958
>> 25080997
>> 24657404
>> 23874338
>>
>> Tip + reverting [PR](https://github.com/openjdk/jdk/pull/19570)
>>
>> 58428998
>> 44410618
>> 30788370
>> 20636942
>> 15986465
>> 15307468
>> 9686426
>> 9432094
>> 7473938
>> 6854014
>>
>> Note: command line for the test:
>>
>> java -Xms256m -Xmx256m -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:-ShenandoahPacing -XX:-UseTLAB -Xlog:gc -Xlog:safepoint ~/Alloc.java | grep -Po "At safepoint: \d+ ns" | grep -Po "\d+" | sort -nr
>>
>>
>> With further digging, we found the real problem is more runnable threads after the [PR](https://github.com/openjdk/jdk/pull/19570) causes longer time for VM_Thread to call `futex(FUTEX_WAKE_PRIVATE)` to disarm wait barrier when leaving safepoint. Fixing in the issue in VM_Thread benefits other GCs as well but it is more complicated(see the details here https://bugs.openjdk.org/browse/JDK-8350324).
>> With some tweaks in ShenandoahLock, we could mitigate the regression caused by [PR](https://github.com/openjdk/jdk/pull/19570), also improve the long tails of at-saftpoint time by more than 10x, here is the result from the same test with this changes of this PR:
>>
>>
>> 1890706
>> 1222180
>> 1042758
>> 853157
>> 792057
>> 785697
>> 780627
>> 757817
>> 740607
>> 736646
>> 725727
>> 725596
>> 724106
>>
>>
>> ### Other test
>> - [x] `make test TEST=hotspot_gc_shenandoah`
>> - [x] Tier 2
>
> Xiaolong Peng has updated the pull request incrementally with one additional commit since the last revision:
>
> Address review comments
@pengxiaolong
Your change (at version 68e1b985b939dba0f4dc12a71901bb063769c1f1) is now ready to be sponsored by a Committer.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23701#issuecomment-2675015842
More information about the shenandoah-dev
mailing list