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