-
Notifications
You must be signed in to change notification settings - Fork 10.4k
Remove the double dispatch on Windows for IO #43449
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
Remove the double dispatch on Windows for IO #43449
Conversation
Are we aiming for RC1 for this? |
Yes. |
OK, can you change the target branch to release/7.0-rc1? |
Is there? 😄 dotnet/runtime#71719 |
Oh snap its gone! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Assuming that this improves benchmarks. Or at least doesn't regress it.
- The windows IO thread pool was replaced with one that dispatches to the thread pool. As a result, we remove the extra thread pool dispatch that we originally had for windows because continuations for IO on windows ran on the same thread that polls for IO.
502bddf
to
0293cb9
Compare
|
Waiting for benchmarks that @davidfowl is collecting. |
/benchmark plaintext aspnet-citrine-win kestrel |
Benchmark started for plaintext on aspnet-citrine-win with kestrel |
plaintext - aspnet-citrine-win
|
Oh good its faster 😄 |
/benchmark json aspnet-citrine-win kestrel |
Is that 5% RPS real? Edit: cool, didn't see your comment when I posted. |
Benchmark started for json on aspnet-citrine-win with kestrel |
json - aspnet-citrine-win
|
/benchmark json plaintext aspnet-citrine-win kestrel |
/benchmark json, plaintext aspnet-citrine-win kestrel |
/benchmark json,plaintext aspnet-citrine-win kestrel |
Benchmark started for json, plaintext on aspnet-citrine-win with kestrel |
json - aspnet-citrine-win
plaintext - aspnet-citrine-win
|
Crank - Pull Request Bot
Benchmarks:
Profiles:
Components:
|
@adityamandaleeka approve? |
The req/s increase is nice. Did you expect a big increase? |
Yes. We did the same for linux a while back. |
Approved for RC1 @adityamandaleeka or @Pilchie (if you're back)❔ |
Approved, this is a good win and getting validation over 2 RCs instead of 1 seems worthwhile. |
@davidfowl, this change will be considered for inclusion in the blog post for the release it'll ship in. Nice work! Please ensure that the original comment in this thread contains a clear explanation of what the change does, why it's important (what problem does it solve?), and, if relevant, include things like code samples and/or performance numbers. This content may not be exactly what goes into the blog post, but it will help the team putting together the announcement. Thanks! |
The windows IO thread pool was replaced with one that dispatches to the thread pool. As a result, we remove the extra thread pool dispatch that we originally had for windows because continuations for IO on windows ran on the same thread that polls for IO.
to the thread pool. As a result, we remove the extra thread pool dispatch
that we originally had for windows because continuations for IO on windows ran on
the same thread that polls for IO.
See dotnet/runtime#64834 for the thread pool changes.
PS: I think we need to adjust this for the old non portable threadpool (there's a flag to go back to the old mode that we should probably respect here as well). This should be in .NET 7.TBD: Perf tests.