RFR: 8354560: Exponentially delay subsequent native thread creation in case of EAGAIN [v5]
Fredrik Bredberg
fbredberg at openjdk.org
Mon May 19 07:48:51 UTC 2025
On Thu, 8 May 2025 22:59:51 GMT, Yannik Stradmann <duke at openjdk.org> wrote:
>> This change introduces an exponential backoff when hitting `EAGAIN` during native thread creation in hotspot.
>>
>> In contrast to the current solution, where we retry to create a native thread up to three times in a tight loop, hotspot will will thereby be more kind to an already depleted resource, reduce stress on the kernel and become more robust on systems under high load.
>>
>> The proposed modifications to `os_linux.cpp` have substantially improved system stability in a mid-sized Jenkins cluster and have been in production within our systems over the past three years. I have verbatim ported these to the other platforms, which previously also relied on identical logic.
>
> Yannik Stradmann has updated the pull request incrementally with one additional commit since the last revision:
>
> Remove restrictive scopes
src/hotspot/os/aix/os_aix.cpp line 773:
> 771: }
> 772:
> 773: if (trials_remaining-- <= 0) {
This if statement will break the loop after calling `pthread_create` four times, which is a bit confusing since `trials_remaining` was initialized to three.
If you want to keep the current behavior I'd prefer if you initialize `trials_remaining` to `4` and change the if statement to `if (--trials_remaining <= 0) {`
Don't forget to change all the other instances of this code in other platforms.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24682#discussion_r2095063369
More information about the hotspot-runtime-dev
mailing list