feat(qlog): add CC/performance events#3440
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3440 +/- ##
==========================================
- Coverage 94.27% 94.00% -0.28%
==========================================
Files 125 129 +4
Lines 38177 38671 +494
Branches 38177 38671 +494
==========================================
+ Hits 35991 36351 +360
- Misses 1348 1471 +123
- Partials 838 849 +11
Flags with carried forward coverage won't be shown. Click here to find out more.
|
There was a problem hiding this comment.
Pull request overview
Adds additional qlog instrumentation for congestion control and performance-related lifecycle events in neqo-transport, and wires qlog through PMTUD so MTU changes can be logged.
Changes:
- Extend qlog event generation with
recovery_parameters_set,connection_closed,packets_acked, andmtu_updated, plus richerconnection_state_updated/packet_droppeddata. - Emit the new events from
Connectionstate transitions and ACK processing. - Propagate
Qloginto PMTUD and related components; export CC constants needed for qlog output.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| neqo-transport/src/qlog.rs | Adds new qlog event helpers and conversions (state/close/ACK/MTU/recovery params) and enriches existing events. |
| neqo-transport/src/pmtud.rs | Stores a Qlog handle and emits mtu_updated when PLPMTU changes. |
| neqo-transport/src/path.rs | Keeps a Qlog on Path while still passing it into the sender (clone + store). |
| neqo-transport/src/connection/mod.rs | Emits recovery parameters at start, logs packets acked, logs old/new connection state, and emits connection closed events. |
| neqo-transport/src/cc/mod.rs | Exposes CC constants used by qlog recovery parameter reporting. |
| neqo-transport/src/cc/classic_cc.rs | Passes qlog into PMTUD so MTU updates are logged under the same trace. |
| neqo-common/src/qlog.rs | Changes default streamer importance from Base to Extra. |
- Add `recovery_parameters_set`, `connection_closed`, `packets_acked`, and `mtu_updated` events - Populate `old` state in `connection_state_updated`; add `trigger` and `details` to `packet_dropped`; set `owner` in `connection_tparams_set`
d398081 to
0c55b1c
Compare
Merging this PR will degrade performance by 7.87%
Performance Changes
Comparing |
Failed Interop TestsQUIC Interop Runner, client vs. server, differences relative to
All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
|
Client/server transfer resultsPerformance differences relative to dbbf86a. Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Table above only shows statistically significant changes. See all results below. All resultsTransfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Download data for |
Benchmark resultsSignificant performance differences relative to dbbf86a. transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1504: 💔 Performance has regressed by +1.6963%. time: [203.56 ms 203.95 ms 204.41 ms]
thrpt: [489.22 MiB/s 490.32 MiB/s 491.25 MiB/s]
change:
time: [+1.3204% +1.6963% +2.0731] (p = 0.00 < 0.05)
thrpt: [-2.0310% -1.6680% -1.3032]
Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severestreams/walltime/1000-streams/each-1000-bytes: 💔 Performance has regressed by +1.5690%. time: [44.653 ms 44.706 ms 44.762 ms]
change: [+1.4046% +1.5690% +1.7390] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severeAll resultstransfer/1-conn/1-100mb-resp (aka. Download)/mtu-1504: 💔 Performance has regressed by +1.6963%. time: [203.56 ms 203.95 ms 204.41 ms]
thrpt: [489.22 MiB/s 490.32 MiB/s 491.25 MiB/s]
change:
time: [+1.3204% +1.6963% +2.0731] (p = 0.00 < 0.05)
thrpt: [-2.0310% -1.6680% -1.3032]
Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severetransfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1504: No change in performance detected. time: [284.08 ms 286.13 ms 288.25 ms]
thrpt: [34.692 Kelem/s 34.949 Kelem/s 35.201 Kelem/s]
change:
time: [-1.2470% -0.1939% +0.8868] (p = 0.72 > 0.05)
thrpt: [-0.8790% +0.1943% +1.2628]
No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mildtransfer/1-conn/1-1b-resp (aka. HPS)/mtu-1504: No change in performance detected. time: [38.513 ms 38.638 ms 38.782 ms]
thrpt: [25.785 B/s 25.881 B/s 25.965 B/s]
change:
time: [-0.6598% -0.1645% +0.3239] (p = 0.52 > 0.05)
thrpt: [-0.3229% +0.1648% +0.6642]
No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) high mild
3 (3.00%) high severetransfer/1-conn/1-100mb-req (aka. Upload)/mtu-1504: Change within noise threshold. time: [206.18 ms 206.78 ms 207.57 ms]
thrpt: [481.76 MiB/s 483.61 MiB/s 485.01 MiB/s]
change:
time: [+0.4259% +0.9284% +1.4118] (p = 0.00 < 0.05)
thrpt: [-1.3921% -0.9199% -0.4241]
Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severedecode 4096 bytes, mask ff: No change in performance detected. time: [5.5723 µs 5.5833 µs 5.5966 µs]
change: [-0.1507% +0.0933% +0.3463] (p = 0.48 > 0.05)
No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severedecode 1048576 bytes, mask ff: Change within noise threshold. time: [1.4282 ms 1.4307 ms 1.4332 ms]
change: [+0.0368% +0.2727% +0.5068] (p = 0.02 < 0.05)
Change within noise threshold.decode 4096 bytes, mask 7f: No change in performance detected. time: [8.4504 µs 8.5005 µs 8.5927 µs]
change: [-0.0714% +0.4408% +1.1065] (p = 0.19 > 0.05)
No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
2 (2.00%) high mild
5 (5.00%) high severedecode 1048576 bytes, mask 7f: No change in performance detected. time: [2.1758 ms 2.1790 ms 2.1824 ms]
change: [-0.2573% -0.0547% +0.1417] (p = 0.60 > 0.05)
No change in performance detected.decode 4096 bytes, mask 3f: No change in performance detected. time: [6.9096 µs 6.9183 µs 6.9268 µs]
change: [-0.2549% -0.0234% +0.2067] (p = 0.85 > 0.05)
No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
4 (4.00%) high mild
1 (1.00%) high severedecode 1048576 bytes, mask 3f: No change in performance detected. time: [1.7642 ms 1.7666 ms 1.7692 ms]
change: [-0.2599% -0.0534% +0.1469] (p = 0.60 > 0.05)
No change in performance detected.streams/simulated/1-streams/each-1000-bytes: Change within noise threshold. time: [129.68 ms 129.68 ms 129.69 ms]
thrpt: [7.5302 KiB/s 7.5304 KiB/s 7.5306 KiB/s]
change:
time: [+0.0020% +0.0057% +0.0092] (p = 0.00 < 0.05)
thrpt: [-0.0092% -0.0057% -0.0020]
Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mildstreams/simulated/1000-streams/each-1-bytes: No change in performance detected. time: [2.5362 s 2.5365 s 2.5367 s]
thrpt: [394.21 B/s 394.25 B/s 394.30 B/s]
change:
time: [-0.0167% -0.0003% +0.0149] (p = 0.97 > 0.05)
thrpt: [-0.0149% +0.0003% +0.0167]
No change in performance detected.streams/simulated/1000-streams/each-1000-bytes: No change in performance detected. time: [6.5898 s 6.6002 s 6.6120 s]
thrpt: [147.70 KiB/s 147.96 KiB/s 148.19 KiB/s]
change:
time: [-0.1347% +0.0941% +0.3258] (p = 0.42 > 0.05)
thrpt: [-0.3247% -0.0940% +0.1349]
No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
8 (8.00%) high severestreams/walltime/1-streams/each-1000-bytes: Change within noise threshold. time: [580.56 µs 582.46 µs 584.67 µs]
change: [-1.5455% -0.9760% -0.4504] (p = 0.00 < 0.05)
Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
3 (3.00%) high mild
7 (7.00%) high severestreams/walltime/1000-streams/each-1-bytes: No change in performance detected. time: [12.324 ms 12.343 ms 12.363 ms]
change: [-0.1976% +0.1077% +0.3916] (p = 0.49 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mildstreams/walltime/1000-streams/each-1000-bytes: 💔 Performance has regressed by +1.5690%. time: [44.653 ms 44.706 ms 44.762 ms]
change: [+1.4046% +1.5690% +1.7390] (p = 0.00 < 0.05)
Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severecoalesce_acked_from_zero 1+1 entries: Change within noise threshold. time: [92.124 ns 92.401 ns 92.685 ns]
change: [-1.3997% -0.7841% -0.2429] (p = 0.01 < 0.05)
Change within noise threshold.
Found 12 outliers among 100 measurements (12.00%)
10 (10.00%) high mild
2 (2.00%) high severecoalesce_acked_from_zero 3+1 entries: No change in performance detected. time: [110.53 ns 110.85 ns 111.19 ns]
change: [-0.5135% -0.0968% +0.3089] (p = 0.65 > 0.05)
No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
2 (2.00%) low mild
4 (4.00%) high mild
10 (10.00%) high severecoalesce_acked_from_zero 10+1 entries: No change in performance detected. time: [109.94 ns 110.32 ns 110.78 ns]
change: [-0.7320% -0.1545% +0.3766] (p = 0.61 > 0.05)
No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
6 (6.00%) low severe
3 (3.00%) low mild
1 (1.00%) high mild
6 (6.00%) high severecoalesce_acked_from_zero 1000+1 entries: No change in performance detected. time: [94.383 ns 94.536 ns 94.710 ns]
change: [-0.2976% +0.1632% +0.6691] (p = 0.51 > 0.05)
No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
5 (5.00%) high mild
4 (4.00%) high severeRxStreamOrderer::inbound_frame(): Change within noise threshold. time: [108.38 ms 108.52 ms 108.68 ms]
change: [+0.5365% +0.8284% +1.0700] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severesent::Packets::take_ranges: No change in performance detected. time: [4.5070 µs 4.6055 µs 4.6935 µs]
change: [-3.4490% -0.1935% +3.2240] (p = 0.91 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mildtransfer/simulated/pacing-false/varying-seeds: No change in performance detected. time: [23.941 s 23.941 s 23.941 s]
thrpt: [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/simulated/pacing-true/varying-seeds: No change in performance detected. time: [23.676 s 23.676 s 23.676 s]
thrpt: [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/simulated/pacing-false/same-seed: No change in performance detected. time: [23.941 s 23.941 s 23.941 s]
thrpt: [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/simulated/pacing-true/same-seed: No change in performance detected. time: [23.676 s 23.676 s 23.676 s]
thrpt: [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/walltime/pacing-false/varying-seeds: No change in performance detected. time: [23.197 ms 23.224 ms 23.262 ms]
change: [-0.1192% +0.0181% +0.1858] (p = 0.84 > 0.05)
No change in performance detected.
Found 10 outliers among 100 measurements (10.00%)
3 (3.00%) low mild
6 (6.00%) high mild
1 (1.00%) high severetransfer/walltime/pacing-true/varying-seeds: No change in performance detected. time: [23.560 ms 23.581 ms 23.606 ms]
change: [-0.1111% -0.0118% +0.0992] (p = 0.84 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severetransfer/walltime/pacing-false/same-seed: Change within noise threshold. time: [23.223 ms 23.239 ms 23.256 ms]
change: [-1.7388% -1.6404% -1.5339] (p = 0.00 < 0.05)
Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severetransfer/walltime/pacing-true/same-seed: Change within noise threshold. time: [23.662 ms 23.683 ms 23.704 ms]
change: [-2.1416% -2.0273% -1.9077] (p = 0.00 < 0.05)
Change within noise threshold.Download data for |
recovery_parameters_set,connection_closed,packets_acked, andmtu_updatedeventsoldstate inconnection_state_updated; addtriggeranddetailstopacket_dropped; setownerinconnection_tparams_set