refactor: split poll_transmit into per-path and per-space parts#338
refactor: split poll_transmit into per-path and per-space parts#338divagant-martian merged 35 commits intomainfrom
Conversation
|
Documentation for this PR has been generated and is available at: https://n0-computer.github.io/quinn/pr/338/docs/iroh_quinn/ Last updated: 2026-01-26T14:04:13Z |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #338 +/- ##
==========================================
- Coverage 76.90% 76.76% -0.15%
==========================================
Files 81 81
Lines 22828 22907 +79
==========================================
+ Hits 17557 17584 +27
- Misses 5271 5323 +52 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Performance Comparison Report
|
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | N/A | 7572.8 Mbps | N/A | N/A |
| medium-concurrent | N/A | 7581.3 Mbps | N/A | N/A |
| medium-single | N/A | 4236.9 Mbps | N/A | N/A |
| small-concurrent | N/A | 4866.5 Mbps | N/A | N/A |
| small-single | N/A | 4185.0 Mbps | N/A | N/A |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 1410.1 Mbps | 3533.5 Mbps | -60.1% |
| lan | 684.6 Mbps | 796.5 Mbps | -14.0% |
| lossy | 69.8 Mbps | 69.8 Mbps | ~0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 49.9% slower on average
fa271d48a7db763d53f83661443623bca5f14e4c - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5347.4 Mbps | 7544.7 Mbps | -29.1% | 97.2% / 162.0% |
| medium-concurrent | 5388.5 Mbps | 6931.3 Mbps | -22.3% | 95.4% / 111.0% |
| medium-single | 3919.9 Mbps | 5279.0 Mbps | -25.7% | 92.5% / 111.0% |
| small-concurrent | 3808.9 Mbps | 5014.7 Mbps | -24.0% | 95.3% / 114.0% |
| small-single | 3358.5 Mbps | 4299.9 Mbps | -21.9% | 91.0% / 98.4% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2833.2 Mbps | 3881.2 Mbps | -27.0% |
| lan | 768.5 Mbps | 799.7 Mbps | -3.9% |
| lossy | 69.8 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 24.5% slower on average
f7301a8764a12ae5c7c8cf219b2a6d34147b88c4 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5325.4 Mbps | 7789.2 Mbps | -31.6% | 93.4% / 98.1% |
| medium-concurrent | 5353.5 Mbps | 7712.4 Mbps | -30.6% | 95.7% / 111.0% |
| medium-single | 3713.1 Mbps | 4575.2 Mbps | -18.8% | 93.6% / 110.0% |
| small-concurrent | 3854.3 Mbps | 5189.3 Mbps | -25.7% | 96.7% / 113.0% |
| small-single | 3260.3 Mbps | 4659.6 Mbps | -30.0% | 89.1% / 96.9% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2891.1 Mbps | 3605.2 Mbps | -19.8% |
| lan | 768.5 Mbps | 796.4 Mbps | -3.5% |
| lossy | 69.8 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 26.5% slower on average
33b9d34acbfa3140f089a1ed8c919bb52bf77025 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5362.5 Mbps | N/A | N/A | 94.3% / 117.0% |
| medium-concurrent | 5511.3 Mbps | N/A | N/A | 92.9% / 97.7% |
| medium-single | 4041.8 Mbps | N/A | N/A | 90.2% / 97.3% |
| small-concurrent | 3856.8 Mbps | N/A | N/A | 102.3% / 179.0% |
| small-single | 3481.0 Mbps | N/A | N/A | 89.8% / 97.3% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2793.2 Mbps | 3561.8 Mbps | -21.6% |
| lan | 777.3 Mbps | 796.5 Mbps | -2.4% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 17.7% slower on average
6d461ef36fa45ae09cb79753ce2f700e3131728b - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5393.5 Mbps | 7142.6 Mbps | -24.5% | 95.5% / 118.0% |
| medium-concurrent | 5356.0 Mbps | 6824.3 Mbps | -21.5% | 88.9% / 95.8% |
| medium-single | 4049.3 Mbps | 4177.6 Mbps | -3.1% | 88.7% / 96.8% |
| small-concurrent | 3668.1 Mbps | 4874.8 Mbps | -24.8% | 87.9% / 97.9% |
| small-single | 3327.1 Mbps | 4076.9 Mbps | -18.4% | 90.2% / 97.4% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2891.4 Mbps | 3868.9 Mbps | -25.3% |
| lan | 782.4 Mbps | 796.4 Mbps | -1.8% |
| lossy | 69.8 Mbps | 69.8 Mbps | ~0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 19.7% slower on average
b12e786e96eb0d5b32df972572c78b180ae9c65b - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5421.9 Mbps | 8006.5 Mbps | -32.3% | 94.6% / 111.0% |
| medium-concurrent | 5320.5 Mbps | 7898.4 Mbps | -32.6% | 91.9% / 96.9% |
| medium-single | 4140.8 Mbps | 4470.4 Mbps | -7.4% | 95.9% / 112.0% |
| small-concurrent | 3724.7 Mbps | 5100.7 Mbps | -27.0% | 88.8% / 98.1% |
| small-single | 3307.7 Mbps | 4654.8 Mbps | -28.9% | 95.5% / 114.0% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2849.2 Mbps | 3897.3 Mbps | -26.9% |
| lan | 769.7 Mbps | 810.3 Mbps | -5.0% |
| lossy | 69.9 Mbps | 69.8 Mbps | ~0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 26.6% slower on average
7af282faafdbc1008e0c17f9a7a885d39e3f654c - artifacts
No results available
ff91de9c3029db16ce6f1e3f5f45260442b4e29d - artifacts
No results available
08751b8ea7c96c36fa3264d12e8bcfbab085e36f - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5293.7 Mbps | 7600.8 Mbps | -30.4% | 92.5% / 97.2% |
| medium-concurrent | 5433.5 Mbps | 7243.1 Mbps | -25.0% | 93.9% / 117.0% |
| medium-single | 3800.9 Mbps | 4146.4 Mbps | -8.3% | 88.1% / 96.3% |
| small-concurrent | 3829.3 Mbps | 5112.1 Mbps | -25.1% | 94.7% / 121.0% |
| small-single | 3492.2 Mbps | 4391.6 Mbps | -20.5% | 87.0% / 95.7% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2852.7 Mbps | 3659.8 Mbps | -22.1% |
| lan | 782.5 Mbps | 796.4 Mbps | -1.7% |
| lossy | 69.8 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 22.5% slower on average
ae89bc51d1d9faf2861d10bd98f049eb5396a2e3 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5516.6 Mbps | 7908.4 Mbps | -30.2% | 95.8% / 119.0% |
| medium-concurrent | 5501.6 Mbps | 7577.7 Mbps | -27.4% | 91.6% / 97.0% |
| medium-single | 4120.1 Mbps | 4404.0 Mbps | -6.4% | 92.0% / 100.0% |
| small-concurrent | 3792.4 Mbps | 5058.6 Mbps | -25.0% | 89.1% / 98.1% |
| small-single | 3474.5 Mbps | 4518.0 Mbps | -23.1% | 90.9% / 98.2% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2820.3 Mbps | 3603.8 Mbps | -21.7% |
| lan | 782.5 Mbps | 796.4 Mbps | -1.7% |
| lossy | 69.8 Mbps | 69.8 Mbps | ~0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 23.1% slower on average
b8238c46cd46b0c893a5500539233b52ab491851 - artifacts
No results available
3c9d82ca94f623d2a6038f36ea801aca87f8088c - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5307.7 Mbps | 7943.2 Mbps | -33.2% | 90.3% / 96.8% |
| medium-concurrent | 5460.3 Mbps | 7679.4 Mbps | -28.9% | 91.7% / 97.0% |
| medium-single | 3846.9 Mbps | 4470.6 Mbps | -13.9% | 93.3% / 116.0% |
| small-concurrent | 3788.7 Mbps | 5109.0 Mbps | -25.8% | 91.2% / 99.0% |
| small-single | 3480.4 Mbps | 4685.3 Mbps | -25.7% | 93.8% / 120.0% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2897.8 Mbps | 3611.2 Mbps | -19.8% |
| lan | 782.5 Mbps | 796.5 Mbps | -1.8% |
| lossy | 69.9 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 25.3% slower on average
e81119cdfa80b4a063d325b36835352b7b16dac2 - artifacts
No results available
54ffa24b6f636f5ef8e52d2af27a38746a23fbf5 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5403.6 Mbps | 7329.1 Mbps | -26.3% | 94.4% / 111.0% |
| medium-concurrent | 5419.4 Mbps | 6842.9 Mbps | -20.8% | 94.4% / 109.0% |
| medium-single | 3709.3 Mbps | 3911.2 Mbps | -5.2% | 98.6% / 163.0% |
| small-concurrent | 3758.8 Mbps | 5004.7 Mbps | -24.9% | 92.0% / 99.5% |
| small-single | 3357.4 Mbps | 4293.9 Mbps | -21.8% | 95.1% / 114.0% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2864.8 Mbps | 3954.8 Mbps | -27.6% |
| lan | 782.3 Mbps | 807.0 Mbps | -3.1% |
| lossy | 69.8 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 21.2% slower on average
70f27512fa4c8098dc3dadfe2c7c0bb7b55bac15 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5330.9 Mbps | 7473.5 Mbps | -28.7% | 97.3% / 119.0% |
| medium-concurrent | 5391.8 Mbps | 6749.8 Mbps | -20.1% | 96.8% / 122.0% |
| medium-single | 3572.7 Mbps | 3914.6 Mbps | -8.7% | 91.2% / 98.4% |
| small-concurrent | 3701.1 Mbps | 4941.1 Mbps | -25.1% | 96.7% / 122.0% |
| small-single | 3488.8 Mbps | 4324.1 Mbps | -19.3% | 91.0% / 98.1% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 3058.8 Mbps | 3577.0 Mbps | -14.5% |
| lan | 782.4 Mbps | 796.5 Mbps | -1.8% |
| lossy | 69.8 Mbps | 55.9 Mbps | +24.9% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 20.2% slower on average
c8720bc1861ed3210cb096e8a1452169dbca9b36 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5407.5 Mbps | 7867.4 Mbps | -31.3% | 94.7% / 108.0% |
| medium-concurrent | 5416.3 Mbps | 7635.7 Mbps | -29.1% | 93.1% / 98.0% |
| medium-single | 3532.2 Mbps | 4554.3 Mbps | -22.4% | 92.4% / 109.0% |
| small-concurrent | 3698.6 Mbps | 5201.1 Mbps | -28.9% | 91.4% / 99.1% |
| small-single | 3303.1 Mbps | 4738.2 Mbps | -30.3% | 88.3% / 97.2% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2891.0 Mbps | 3687.0 Mbps | -21.6% |
| lan | 782.4 Mbps | 796.4 Mbps | -1.8% |
| lossy | 69.8 Mbps | 55.9 Mbps | +25.0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 27.3% slower on average
45706842d3eac39b8140dc22f298f13e03c9e0b1 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5409.2 Mbps | N/A | N/A | 93.5% / 98.1% |
| medium-concurrent | 5457.0 Mbps | N/A | N/A | 91.5% / 97.2% |
| medium-single | 3782.0 Mbps | N/A | N/A | 91.4% / 100.0% |
| small-concurrent | 3668.6 Mbps | N/A | N/A | 101.5% / 182.0% |
| small-single | 3379.8 Mbps | N/A | N/A | 94.9% / 122.0% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2975.1 Mbps | N/A | N/A |
| lan | 782.5 Mbps | N/A | N/A |
ce19b48e1bf39d6baab714112d4f78db74bf5597 - artifacts
Raw Benchmarks (localhost)
| Scenario | iroh-quinn | upstream | Delta | CPU (avg/max) |
|---|---|---|---|---|
| large-single | 5263.4 Mbps | 7893.8 Mbps | -33.3% | 93.7% / 98.2% |
| medium-concurrent | 5465.4 Mbps | 8050.9 Mbps | -32.1% | 92.0% / 97.4% |
| medium-single | 3803.1 Mbps | 4749.0 Mbps | -19.9% | 94.2% / 121.0% |
| small-concurrent | 3725.8 Mbps | 5341.2 Mbps | -30.2% | 97.8% / 121.0% |
| small-single | 3477.0 Mbps | 4830.9 Mbps | -28.0% | 93.7% / 120.0% |
Netsim Benchmarks (network simulation)
| Condition | iroh-quinn | upstream | Delta |
|---|---|---|---|
| ideal | 2868.7 Mbps | 3723.8 Mbps | -23.0% |
| lan | 769.4 Mbps | 796.5 Mbps | -3.4% |
| lossy | 55.9 Mbps | 55.9 Mbps | ~0% |
| wan | 83.8 Mbps | 83.8 Mbps | ~0% |
Summary
iroh-quinn is 28.2% slower on average
|
Should we merge #339 before doing all of the poll transmit refactors? It might help with all of the |
And collecting some functions together. Split off from #338.
And collecting some functions together. Split off from #338. Co-authored-by: Diva Martínez <26765164+divagant-martian@users.noreply.github.com>
|
once this merges, we should create issues for the todos, to keep track of them |
| } | ||
|
|
||
| /// poll_transmit logic for off-path data. | ||
| fn poll_transmit_off_path( |
There was a problem hiding this comment.
these method names make me happy
Description
This starts to pull the poll_transmit loop apart. Makes it easier to make/follow decisions on some levels. There is now a clean separation between paths and on and off-path packet building.
Surfaces some pre-existing bugs. This PR is not the time to fix them.
Closes #170
Breaking Changes
n/a
Notes & open questions
Follow up work: