-
Notifications
You must be signed in to change notification settings - Fork 148
feat(transport/quic_datagrams): expose send queue capacity #3176
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
base: main
Are you sure you want to change the base?
Conversation
Add function `datagram_send_queue_capacity` to `Connection` and `Http3Client`. Before sending a WebTransport or MASQUE connect-udp datagram, users can check how many datagrams can still be queued for sending, thus avoiding datagrams being dropped due to a full send queue. Enables mozilla#2852.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3176 +/- ##
==========================================
- Coverage 93.49% 93.44% -0.06%
==========================================
Files 125 125
Lines 36640 36649 +9
Branches 36640 36649 +9
==========================================
- Hits 34258 34246 -12
- Misses 1537 1558 +21
Partials 845 845
|
CodSpeed Performance ReportMerging #3176 will degrade performances by 8.86%Comparing Summary
Benchmarks breakdown
|
Failed Interop TestsQUIC Interop Runner, client vs. server, differences relative to c2caaa2. All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
|
Contains mozilla/neqo#3176 and mozilla/neqo#3171.
Benchmark resultsPerformance differences relative to 5701207. 1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected. time: [203.72 ms 204.13 ms 204.55 ms]
thrpt: [488.88 MiB/s 489.88 MiB/s 490.86 MiB/s]
change:
time: [-0.1432% +0.1712% +0.4860%] (p = 0.29 > 0.05)
thrpt: [-0.4837% -0.1709% +0.1434%]
1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: Change within noise threshold. time: [279.38 ms 281.20 ms 283.01 ms]
thrpt: [35.335 Kelem/s 35.561 Kelem/s 35.793 Kelem/s]
change:
time: [-1.9182% -1.0247% -0.1103%] (p = 0.03 < 0.05)
thrpt: [+0.1104% +1.0353% +1.9557%]
1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected. time: [38.759 ms 38.954 ms 39.168 ms]
thrpt: [25.531 B/s 25.672 B/s 25.800 B/s]
change:
time: [-0.4876% +0.1816% +0.8768%] (p = 0.59 > 0.05)
thrpt: [-0.8691% -0.1813% +0.4900%]
1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: Change within noise threshold. time: [207.57 ms 207.84 ms 208.13 ms]
thrpt: [480.47 MiB/s 481.13 MiB/s 481.77 MiB/s]
change:
time: [-0.9175% -0.6785% -0.4641%] (p = 0.00 < 0.05)
thrpt: [+0.4662% +0.6831% +0.9260%]
decode 4096 bytes, mask ff: No change in performance detected. time: [11.312 µs 11.343 µs 11.382 µs]
change: [-0.7881% -0.0452% +0.6775%] (p = 0.91 > 0.05)
decode 1048576 bytes, mask ff: No change in performance detected. time: [2.9935 ms 3.0071 ms 3.0246 ms]
change: [-0.4697% +0.1439% +0.7876%] (p = 0.68 > 0.05)
decode 4096 bytes, mask 7f: No change in performance detected. time: [19.575 µs 19.623 µs 19.680 µs]
change: [-0.2214% +0.2868% +0.8801%] (p = 0.32 > 0.05)
decode 1048576 bytes, mask 7f: No change in performance detected. time: [5.0315 ms 5.0565 ms 5.0954 ms]
change: [-0.3650% +0.2315% +0.9861%] (p = 0.57 > 0.05)
decode 4096 bytes, mask 3f: No change in performance detected. time: [6.2081 µs 6.2342 µs 6.2673 µs]
change: [-0.3826% +0.3272% +1.1806%] (p = 0.45 > 0.05)
decode 1048576 bytes, mask 3f: No change in performance detected. time: [1.7580 ms 1.7655 ms 1.7789 ms]
change: [-0.8046% -0.1483% +0.6868%] (p = 0.75 > 0.05)
1-streams/each-1000-bytes/wallclock-time: Change within noise threshold. time: [590.42 µs 594.07 µs 597.90 µs]
change: [+0.7332% +1.4892% +2.2342%] (p = 0.00 < 0.05)
1-streams/each-1000-bytes/simulated-time: No change in performance detected. time: [118.86 ms 119.08 ms 119.30 ms]
thrpt: [8.1861 KiB/s 8.2010 KiB/s 8.2161 KiB/s]
change:
time: [-0.3650% -0.0942% +0.1838%] (p = 0.51 > 0.05)
thrpt: [-0.1835% +0.0943% +0.3663%]
1000-streams/each-1-bytes/wallclock-time: No change in performance detected. time: [12.448 ms 12.491 ms 12.534 ms]
change: [-0.4661% +0.1375% +0.6946%] (p = 0.64 > 0.05)
1000-streams/each-1-bytes/simulated-time: No change in performance detected. time: [2.3321 s 2.3352 s 2.3384 s]
thrpt: [427.65 B/s 428.22 B/s 428.80 B/s]
change:
time: [-0.0251% +0.1793% +0.3799%] (p = 0.09 > 0.05)
thrpt: [-0.3785% -0.1790% +0.0252%]
1000-streams/each-1000-bytes/wallclock-time: No change in performance detected. time: [50.407 ms 50.530 ms 50.655 ms]
change: [-0.7163% -0.3371% +0.0362%] (p = 0.09 > 0.05)
coalesce_acked_from_zero 1+1 entries: No change in performance detected. time: [89.041 ns 89.356 ns 89.667 ns]
change: [-0.1196% +0.2946% +0.7654%] (p = 0.21 > 0.05)
coalesce_acked_from_zero 3+1 entries: No change in performance detected. time: [105.71 ns 106.02 ns 106.34 ns]
change: [-0.5660% -0.1483% +0.2886%] (p = 0.52 > 0.05)
coalesce_acked_from_zero 10+1 entries: No change in performance detected. time: [105.19 ns 105.47 ns 105.83 ns]
change: [-0.4739% -0.0641% +0.3373%] (p = 0.76 > 0.05)
coalesce_acked_from_zero 1000+1 entries: Change within noise threshold. time: [91.732 ns 91.875 ns 92.029 ns]
change: [+0.0010% +0.6122% +1.1261%] (p = 0.02 < 0.05)
RxStreamOrderer::inbound_frame(): Change within noise threshold. time: [109.77 ms 109.96 ms 110.25 ms]
change: [+0.5167% +0.7112% +0.9678%] (p = 0.00 < 0.05)
sent::Packets::take_ranges: No change in performance detected. time: [4.4204 µs 4.5228 µs 4.6354 µs]
change: [-5.9637% -2.0773% +1.4775%] (p = 0.31 > 0.05)
transfer/pacing-false/varying-seeds/wallclock-time/run: Change within noise threshold. time: [25.608 ms 25.643 ms 25.681 ms]
change: [+0.6654% +0.8679% +1.0776%] (p = 0.00 < 0.05)
transfer/pacing-false/varying-seeds/simulated-time/run: No change in performance detected. time: [25.149 s 25.182 s 25.215 s]
thrpt: [162.45 KiB/s 162.66 KiB/s 162.87 KiB/s]
change:
time: [-0.1172% +0.0690% +0.2620%] (p = 0.48 > 0.05)
thrpt: [-0.2613% -0.0690% +0.1174%]
transfer/pacing-true/varying-seeds/wallclock-time/run: Change within noise threshold. time: [26.344 ms 26.405 ms 26.469 ms]
change: [+1.4931% +1.8165% +2.1392%] (p = 0.00 < 0.05)
transfer/pacing-true/varying-seeds/simulated-time/run: No change in performance detected. time: [24.947 s 24.994 s 25.041 s]
thrpt: [163.57 KiB/s 163.88 KiB/s 164.19 KiB/s]
change:
time: [-0.1464% +0.0979% +0.3230%] (p = 0.43 > 0.05)
thrpt: [-0.3220% -0.0978% +0.1466%]
transfer/pacing-false/same-seed/wallclock-time/run: Change within noise threshold. time: [24.909 ms 24.941 ms 24.991 ms]
change: [-0.5246% -0.3612% -0.1493%] (p = 0.00 < 0.05)
transfer/pacing-false/same-seed/simulated-time/run: No change in performance detected. time: [25.234 s 25.234 s 25.234 s]
thrpt: [162.32 KiB/s 162.32 KiB/s 162.32 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000%] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000%]
transfer/pacing-true/same-seed/wallclock-time/run: Change within noise threshold. time: [26.337 ms 26.370 ms 26.420 ms]
change: [+0.8241% +0.9702% +1.1656%] (p = 0.00 < 0.05)
transfer/pacing-true/same-seed/simulated-time/run: No change in performance detected. time: [25.069 s 25.069 s 25.069 s]
thrpt: [163.39 KiB/s 163.39 KiB/s 163.39 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000%] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000%]
Download data for |
Client/server transfer resultsPerformance differences relative to 126b1df. Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Download data for |
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207 - mozilla/neqo#3234
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207 - mozilla/neqo#3234
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207 - mozilla/neqo#3234
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207 - mozilla/neqo#3234
Contains: - mozilla/neqo#3176 - mozilla/neqo#3171 - mozilla/neqo#3207 - mozilla/neqo#3234
Add function
datagram_send_queue_capacitytoConnectionandHttp3Client. Before sending a WebTransport or MASQUE connect-udp datagram, users can check how many datagrams can still be queued for sending, thus avoiding datagrams being dropped due to a full send queue.Enables #2852.