-
Notifications
You must be signed in to change notification settings - Fork 522
Conversation
[Buffer.BlockCopy](https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/vm/comutilnative.cpp#L1451) is memmove; and a larger throughput intrinsic [Array.Copy](https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/classlibnative/bcltype/arraynative.cpp#L895) is 16 byte loop
Rather than resizing the circular buffers as work is added
Resolves aspnet#334
Is only one per write context
Also resolved some slight conflicts |
Now the difference in allocations between ConcurrentQueue and ConcurrentStack are showing; swapping MemoryPool |
8ae1532
to
e26099d
Compare
I setup benchmarks on the Stack Overflow web tier to give us a good idea of what our actual performance will be and @benaadams was kind enough to bundle the changes. Here's current aspnet/dev:
...and here's this branch:
|
d132eb0
to
4ea87d4
Compare
Updating numbers, regression on the memory pool commit (look at latency specifically) and we're hitting 100% CPU on the web server now (didn't get comparison CPU before the rebase/force):
|
I removed a commit is the middle of the chain and rebasing got upset; all the other commits are individually open as PRs and referenced at the top; so will ignore the last two for now :) |
…to socket-memorypool2
…-GetString' into socket-memorypool2
…' into socket-memorypool2
…ocket-memorypool2
…izes' into socket-memorypool2
…o socket-memorypool2
4ea87d4
to
25e87e6
Compare
Stashed the "experi-mental" changes; and just gone for the merges - hopefully back to previous pref... |
Other changes (SocketOutput taking MemoryPool2 inputs) here https://github.com/benaadams/KestrelHttpServer/tree/so-testing-exotic |
Benchmark results from the SmurfLab:
|
Closing this, as testing done |
Don't alloc header names #391
Consume body without allocating or reading #335 (PR has changed)
Reduce GetString allocs and conversions #312 (PR has changed)
ConcurrentStack -> ConcurrentQueue #390
GC.Collect before pinning starts #331
Dispose of MemoryPool2; suppress its finalizers #343
Pre-allocate memory pool #362
Initialize the work queue sizes #363
Precomputed header bytes #367
OnCompleted doesn't need threadpool #380