-
Notifications
You must be signed in to change notification settings - Fork 516
Remove lock contention in IOQueue #3093
Conversation
785f553 to
33ce433
Compare
|
Both of the windows Jenkins runs failed due to the Sockets functional tests timing out 😟 https://ci3.dot.net/job/aspnet_KestrelHttpServer/job/master/job/windows-Configuration_Release_prtest/117/consoleFull |
|
Are there any benchmarks results for this? I see how in this reduces lock contention in Schedule() when DoWork() is in progress, but it does add a Volatile.Read() in Schedule() and the Volatile.Write() in DoWork() each time DoWork() needs to be restarted. |
Added a PR for 2.2 branch for easy benchmarking #3096
The Arm would have more costs from the |
|
Actually, should be able to drop the lock entirely here |
8c56cdc to
09626a0
Compare
b1df699 to
2ccbccf
Compare
|
Kestrel work has moved to aspnetcore repo, and this repo will be archived. If you're still interested in pursuing this PR, please move it over to aspnetcore. Thanks. |
Currently a lot of contention on the lock
Go through the lock if its not already doing work; otherwise skip the lock.
Submit work to threadpool outside the lock
After contention is much reduced
Also removes QUWIC allocations from the IOQueue on .NET Core 3.0
Resolves: https://github.com/aspnet/KestrelHttpServer/issues/3042