Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows User Mode Datapath Improvements #3283

Merged
merged 13 commits into from
Dec 13, 2022
Merged

Conversation

nibanks
Copy link
Member

@nibanks nibanks commented Dec 12, 2022

Description

  1. Don't pass IdealProcessor down to send any more. We store that information on the CXPLAT_ROUTE, so the data paths can have implementation-specific logic (most don't use it anyways).
  2. Don't queue sends, but instead send them inline, when not using MAX_THROUGHPUT profile.
  3. Handle receive completions inline instead of queuing to ICOP

Testing

Perf tests

Documentation

N/A

@nibanks
Copy link
Member Author

nibanks commented Dec 13, 2022

Still going to run once more with updated PGO files, but here is a comparison (1 connection latency, schannel):

Main

Run 1: 5770 RPS, Minimum: 100, Maximum: 20423, Percentiles: 50th: 171.000000, 90th: 258.000000, 99th: 269.000000, 99.9th: 285.000000, 99.99th: 1632.000000, 99.999th: 19940.000000, 99.9999th: 20423.000000, Standard Error: 0.312330
Run 2: 4493 RPS, Minimum: 106, Maximum: 21289, Percentiles: 50th: 211.000000, 90th: 263.000000, 99th: 279.000000, 99.9th: 302.000000, 99.99th: 1480.000000, 99.999th: 20367.000000, 99.9999th: 21289.000000, Standard Error: 0.337967
Run 3: 7223 RPS, Minimum: 96, Maximum: 20719, Percentiles: 50th: 100.000000, 90th: 224.000000, 99th: 252.000000, 99.9th: 267.000000, 99.99th: 1580.000000, 99.999th: 17879.000000, 99.9999th: 20719.000000, Standard Error: 0.248681
Run 4: 4456 RPS, Minimum: 104, Maximum: 23098, Percentiles: 50th: 214.000000, 90th: 265.000000, 99th: 279.000000, 99.9th: 303.000000, 99.99th: 1609.000000, 99.999th: 22158.000000, 99.9999th: 23098.000000, Standard Error: 0.381673
Run 5: 4483 RPS, Minimum: 102, Maximum: 23601, Percentiles: 50th: 213.000000, 90th: 266.000000, 99th: 281.000000, 99.9th: 312.000000, 99.99th: 1533.000000, 99.999th: 23019.000000, 99.9999th: 23601.000000, Standard Error: 0.329628

Latest

Run 1: 5537 RPS, Minimum: 79, Maximum: 23268, Percentiles: 50th: 184.000000, 90th: 205.000000, 99th: 221.000000, 99.9th: 248.000000, 99.99th: 467.000000, 99.999th: 22559.000000, 99.9999th: 23268.000000, Standard Error: 0.274392
Run 2: 6084 RPS, Minimum: 77, Maximum: 19950, Percentiles: 50th: 161.000000, 90th: 198.000000, 99th: 213.000000, 99.9th: 229.000000, 99.99th: 1872.000000, 99.999th: 19686.000000, 99.9999th: 19950.000000, Standard Error: 0.282842
Run 3: 6153 RPS, Minimum: 77, Maximum: 19917, Percentiles: 50th: 162.000000, 90th: 197.000000, 99th: 213.000000, 99.9th: 228.000000, 99.99th: 1551.000000, 99.999th: 19621.000000, 99.9999th: 19917.000000, Standard Error: 0.280324
Run 4: 5338 RPS, Minimum: 81, Maximum: 221988, Percentiles: 50th: 185.000000, 90th: 207.000000, 99th: 278.000000, 99.9th: 514.000000, 99.99th: 1658.000000, 99.999th: 22778.000000, 99.9999th: 221988.000000, Standard Error: 1.419820
Run 5: 6309 RPS, Minimum: 77, Maximum: 18999, Percentiles: 50th: 160.000000, 90th: 196.000000, 99th: 212.000000, 99.9th: 227.000000, 99.99th: 1490.000000, 99.999th: 18880.000000, 99.9999th: 18999.000000, Standard Error: 0.268965

@nibanks
Copy link
Member Author

nibanks commented Dec 13, 2022

And 40-connection tests:

Main

Run 1: 84827 RPS, Minimum: 112, Maximum: 50396, Percentiles: 50th: 219.000000, 90th: 301.000000, 99th: 373.000000, 99.9th: 426.000000, 99.99th: 1418.000000, 99.999th: 37542.000000, 99.9999th: 50396.000000, Standard Error: 0.277783
Run 2: 90765 RPS, Minimum: 114, Maximum: 47679, Percentiles: 50th: 201.000000, 90th: 279.000000, 99th: 343.000000, 99.9th: 392.000000, 99.99th: 1617.000000, 99.999th: 36877.000000, 99.9999th: 47679.000000, Standard Error: 0.252419
Run 3: 90028 RPS, Minimum: 108, Maximum: 50738, Percentiles: 50th: 204.000000, 90th: 283.000000, 99th: 344.000000, 99.9th: 390.000000, 99.99th: 1971.000000, 99.999th: 43838.000000, 99.9999th: 50738.000000, Standard Error: 0.285597
Run 4: 90680 RPS, Minimum: 113, Maximum: 50432, Percentiles: 50th: 202.000000, 90th: 281.000000, 99th: 342.000000, 99.9th: 389.000000, 99.99th: 2707.000000, 99.999th: 43312.000000, 99.9999th: 50432.000000, Standard Error: 0.282068
Run 5: 85990 RPS, Minimum: 113, Maximum: 48792, Percentiles: 50th: 215.000000, 90th: 299.000000, 99th: 370.000000, 99.9th: 423.000000, 99.99th: 1426.000000, 99.999th: 36104.000000, 99.9999th: 48792.000000, Standard Error: 0.262707

Latest

Run 1: 135326 RPS, Minimum: 85, Maximum: 58333, Percentiles: 50th: 133.000000, 90th: 167.000000, 99th: 236.000000, 99.9th: 288.000000, 99.99th: 2767.000000, 99.999th: 44659.000000, 99.9999th: 58317.000000, Standard Error: 0.254228
Run 2: 134617 RPS, Minimum: 88, Maximum: 58689, Percentiles: 50th: 134.000000, 90th: 167.000000, 99th: 211.000000, 99.9th: 265.000000, 99.99th: 1927.000000, 99.999th: 51403.000000, 99.9999th: 58667.000000, Standard Error: 0.255121
Run 3: 133887 RPS, Minimum: 82, Maximum: 55474, Percentiles: 50th: 134.000000, 90th: 171.000000, 99th: 233.000000, 99.9th: 277.000000, 99.99th: 2109.000000, 99.999th: 43826.000000, 99.9999th: 54620.000000, Standard Error: 0.233173
Run 4: 123892 RPS, Minimum: 86, Maximum: 56772, Percentiles: 50th: 144.000000, 90th: 196.000000, 99th: 264.000000, 99.9th: 347.000000, 99.99th: 2781.000000, 99.999th: 48590.000000, 99.9999th: 56751.000000, Standard Error: 0.276483
Run 5: 135207 RPS, Minimum: 82, Maximum: 61350, Percentiles: 50th: 131.000000, 90th: 165.000000, 99th: 240.000000, 99.9th: 296.000000, 99.99th: 2660.000000, 99.999th: 45650.000000, 99.9999th: 60482.000000, Standard Error: 0.257065

@nibanks nibanks merged commit ddb5756 into main Dec 13, 2022
@nibanks nibanks deleted the nibanks/dont-queue-sends branch December 13, 2022 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants