-
Notifications
You must be signed in to change notification settings - Fork 528
Conversation
Without waiting for next libuv pass Fix for potential regression in aspnet#363 due to bug fix.
…rk' into current-combo
Here are the numbers from wrk when running the plaintext benchmark with and without these changes: Baseline:
After merge (#486):
|
Latency is good, not sure about the stringcache change |
I screwed up the test runs last night 😢 The benchmarks repo still had Kestrel referenced in the sln file, but it had been removed from global.json. I was testing the Kestrel package each time. I'm going to have to rerun all the tests. |
Make sure not debug also ;-) |
Want me to rebase stuffs? |
No need to rebase for now, I just picked a baseline from yesterday. I also verified that the merges yesterday did not degrade performance. The combined changes New results (about a 4% improvement!): Baseline (dff3a4f):
Merged (benaadams/current-combo):
|
And better latency - but prob better leaving the |
I noticed the baseline numbers were changing a bit (maybe because the cpu was heating up?) so I reran this with a 15 second duration. I no longer see the improvement in the RPS numbers, but the latency still looks a bit better on average: Baseline (origin/dev 90ece57):
Merged (benaadams/current-combo):
|
Have you got
Should switch it into |
I ran I also tried forcing collections between work runs. This verifies this PR reduces gen 0 allocations, but otherwise it's pretty inconclusive: Baseline (origin/dev dff3a4f) w/ forced gc between runs:
Benchmark console output:
Merged (benaadams/current-combo) w/ forced gc between runs:
Benchmark console output:
Maybe the next step is to disable dynamic frequency scaling. |
What is the actual hardware platform here? You definitely want to disable C-States in BIOS (or UEFI) on the both ends - if it's one of a few current-gen vendors though, you'll need updates as these settings aren't respected. Related note for others: You also can only trust Task Manager or CPU-Z type readings here as they pull the actual frequency via an Intel C API. WMI cannot be trusted, it lies and we've seen it do such repeatedly. Many things pulling from WMI report max frequency which isn't correct at all. |
@NickCraver Xeon E5-1650 going on what's stated on aspnet/benchmarks |
Aye, I saw the processor which is a good testbed with the 3/3/4/5/6/6 stepping on the 3.2 -> 3.8 clocking (I'm assuming it's actually a v1 Sandy Bridge in play here and not v2 or v3). But, the BIOS controls stepping - so I'd love to see what the test is doing live here. Is it just 1 processor like the README seems to indicate? Is there any L2/L3 thrashing in play from an external process? |
Will do some better analysis on the |
Pre allocs 213,806 objects allocated 13,118,880 bytes allocated
Post allocs "only" 93,754 objects allocated, 5,037,880 bytes allocated
Objects down 56%; memory down 62%
Resuse writes, initalize queues #363
Process cascaded work immediately #427
Trim req/resp streams by a field each #455
Request header StringCache #411
With
Use PooledContextFactory aspnet/Benchmarks#34
Allow feature cache to be updated aspnet/HttpAbstractions#501
/cc @halter73 combo'd