RFR: 8306774: Make runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java more reliable [v2]

Daniel D. Daugherty dcubed at openjdk.org
Tue Apr 25 20:53:09 UTC 2023


On Tue, 25 Apr 2023 09:28:09 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> As seen in some CI runs, doing `Object.wait(1)` to inflate 10K monitors can take quite a while. One of the test cases implicitly relies on threshold heuristics kicking in before the guaranteed interval of 5 seconds expires. Even if we wait for 1ms for each `wait` call, we only inflate 5K monitors in those 5 seconds. Which is okay for 5s and 10% threshold test, which would fire after about 1K monitors inflated. But we can also stall for longer -- because `wait(1)` is not guaranteed to return in 1ms, subject to locking granularity -- which means we can inflate less that 1K monitors, which would mean the threshold heuristics would not fire.
>> 
>> This fix strengthens the test in two ways: 
>>   1. Uses multiple threads to inflate the monitors, so that we are able to eat the cost of `wait(1)`.
>>   2. Drops the threshold heuristics threshold to minimum value to increase the chances of it firing.
>> 
>> This also makes the test faster.
>> 
>> @dcubed-ojdk, you might want to run this through your CI to see if it fixes the test troubles.
>> 
>> Additional testing:
>>  - [x] Ad-hoc runs of the test, 100 iterations without trouble.
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Parallel inflation instead of relying on hashCode

Looks like a reasonable fix so thumbs up.
I'm testing in Mach5 now.

test/hotspot/jtreg/runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java line 70:

> 68:         private static Thread[] threads;
> 69:         private static Object[] monitors;
> 70:         private static long sink;

Appears to be unused...

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

Marked as reviewed by dcubed (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13634#pullrequestreview-1400728502
PR Review Comment: https://git.openjdk.org/jdk/pull/13634#discussion_r1177035401


More information about the hotspot-runtime-dev mailing list