Try make IOQueue auto-parallelizing#21873
Conversation
Applies the technique from dotnet/runtime#35330 to IOQueue.
|
This is an experiment for benchmarking. I'm not sure what to expect. |
|
cc @benaadams |
I was thinking about it too :D The other (and most probably a very stupid) idea I had was to try to have a scheduler that in the ctor would use reflection to access the internal field of ThreadPool that stores the work items in a and implement the Again, this is a very dirty idea ;) |
|
@tmds could you provide the modified |
As an experiment it's totally fine. We will not ship that. |
|
@aspnet-hello benchmark |
|
Starting 'Default' pipelined plaintext benchmark with session ID '1279e01068334a1c99e7c62e8b24d597'. This could take up to 30 minutes... |
BaselinePR |
|
TFMS! |
|
@aspnet-hello benchmark |
|
Starting 'Default' pipelined plaintext benchmark with session ID 'f4f99e3ddb614ab3ae381a3270183a8d'. This could take up to 30 minutes... |
BaselinePR |
|
Is there a non-pipelined benchmark that can be triggered? |
@adamsitnik here you to: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll.tar.gz |
|
@aspnet-hello benchmark json |
|
Starting 'json' pipelined plaintext benchmark with session ID '09c904d3d164426f9cfde9da065a433f'. This could take up to 30 minutes... |
BaselinePR |
|
I was looking at the traces and sendmsg is very slow (comparatively); so thought it wasn't a good idea to have the sends on the same queue as the receives (thus blocking them). However, didn't have great success in separating them #21981 |
|
@tmds the results: |
|
On ARM this gives some nice results. On Citrine, regression. |
|
An interesting observation: After we use less CPU. |

Applies the technique from dotnet/runtime#35330 to IOQueue.