-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
20%+ throughput regression in goldilocks scenarios #98021
Comments
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas Issue DetailsSee https://aka.ms/aspnet/nativeaot/benchmarks. Stage2Aot scenario: Stage1GrpcAot scenario: I narrowed this down using crank to: Last good:
First bad:
Here's the RPS numbers I got for the various builds with 3 attempts each:
This puts the regression between builds 24074.3 and 24074.10. That corresponds to this commit range: My suspect is #97227 that did changes to various waits on native AOT. Cc @kouvel @VSadov @sebastienros
|
Fixed by #98867 |
PR dotnet#97227 introduced a tick count masking issue where the stored waiter start time excludes the upper bit from the ushort tick count, but comparisons with it were not doing the appropriate masking. This was leading to a lock convoy on some heavily contended locks once in a while due to waiters incorrectly appearing to have waited for a long time. Fixes dotnet#98021
PR dotnet#97227 introduced a tick count masking issue where the stored waiter start time excludes the upper bit from the ushort tick count, but comparisons with it were not doing the appropriate masking. This was leading to a lock convoy on some heavily contended locks once in a while due to waiters incorrectly appearing to have waited for a long time. Fixes dotnet#98021
PR dotnet#97227 introduced a tick count masking issue where the stored waiter start time excludes the upper bit from the ushort tick count, but comparisons with it were not doing the appropriate masking. This was leading to a lock convoy on some heavily contended locks once in a while due to waiters incorrectly appearing to have waited for a long time. Fixes dotnet#98021
) * Reapply "Add an internal mode to `Lock` to have it use non-alertable waits (#97227)" (#98867) This reverts commit f129701. * Fix Lock's waiter duration computation PR #97227 introduced a tick count masking issue where the stored waiter start time excludes the upper bit from the ushort tick count, but comparisons with it were not doing the appropriate masking. This was leading to a lock convoy on some heavily contended locks once in a while due to waiters incorrectly appearing to have waited for a long time. Fixes #98021 * Fix wraparound issue * Fix recording waiter start time * Use a bit in the _state field instead
See https://aka.ms/aspnet/nativeaot/benchmarks.
Stage2Aot scenario:
Stage1GrpcAot scenario:
I narrowed this down using crank to:
Last good:
First bad:
Here's the RPS numbers I got for the various builds with 3 attempts each:
This puts the regression between builds 24074.3 and 24074.10.
That corresponds to this commit range:
96dd3d1...b47fdea
My suspect is #97227 that did changes to various waits on native AOT. Cc @kouvel @VSadov @sebastienros
The text was updated successfully, but these errors were encountered: