Pipelines remove lock from uncontended path#36956
Conversation
b81a2e6 to
85e0b95
Compare
04b1ee2 to
b28a42a
Compare
7f1d835 to
9296864
Compare
|
Interesting, did you managed to get a trace? Json would be interesting to see how things shifted around |
|
Ah, let me add cache seperation |
@benaadams I've just uploaded |
|
The It looks like |
|
@adamsitnik can you collect counters before and after the next run. I want to make sure we’re looking at the right metrics |
cbf8fa0 to
ae6983e
Compare
|
Merged the commits so can try something more easily |
@davidfowl I've re-run the benchmarks against latest changes and included the
the lock contention on Mono machine could most probably lead us to answer why it's not faster than Citrine (cc @stephentoub) |
|
@adamsitnik are we comparing a fixed number of requests using bombardier? Or are we using wrk? |
@davidfowl I am not sure whether bombardier or wrk are used, I am using the following arguments for BenchmarksDriver --connections 512 --self-contained --sdk 5.0.100-preview.6.20272.2 --runtime 5.0.0-preview.6.20272.2 --aspnetcoreversion 5.0.0-preview.5.20255.6 |
Lock contention is reported after any spinning is been done and when it's going to sleep; rather than just raw contention that is resolved after spinning: #37023 (comment) |
|
If you're using version 1 of the benchmark driver and you haven't specified a |
|
Revist post 5.0 |



Simpler version of #36955
Drops the lock for common path through the highlighted code paths for Json TE:
Before
After
Should follow up with more state out to the
PipeOperationStateto avoid cache thrashing, but should be easier to review./cc @halter73 @adamsitnik @stephentoub @davidfowl