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

fix(common/qlog): use BufWriter #2032

Merged
merged 1 commit into from
Aug 8, 2024
Merged

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Aug 2, 2024

Previously, on a neqo-server -> neqo-client transfer with qlog enabled, neqo-client would spend the majority of time writing to the qlog file.

flamegraph-main

Using a BufWriter qlog writing takes less than 3% of CPU time.

flamegraph


Depends on #2031.

Copy link

codecov bot commented Aug 2, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.35%. Comparing base (7cbd776) to head (3bc55e3).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2032      +/-   ##
==========================================
- Coverage   95.36%   95.35%   -0.01%     
==========================================
  Files         112      112              
  Lines       36463    36463              
==========================================
- Hits        34772    34771       -1     
- Misses       1691     1692       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Aug 2, 2024

Failed Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Copy link

github-actions bot commented Aug 2, 2024

Benchmark results

Performance differences relative to 7cbd776.

coalesce_acked_from_zero 1+1 entries: Change within noise threshold.
       time:   [194.08 ns 194.48 ns 194.92 ns]
       change: [+0.3649% +0.9018% +1.4313%] (p = 0.00 < 0.05)

Found 7 outliers among 100 measurements (7.00%)
4 (4.00%) high mild
3 (3.00%) high severe

coalesce_acked_from_zero 3+1 entries: Change within noise threshold.
       time:   [236.37 ns 237.16 ns 237.98 ns]
       change: [+0.9664% +1.3328% +1.7061%] (p = 0.00 < 0.05)

Found 17 outliers among 100 measurements (17.00%)
1 (1.00%) low mild
16 (16.00%) high severe

coalesce_acked_from_zero 10+1 entries: Change within noise threshold.
       time:   [235.67 ns 236.44 ns 237.37 ns]
       change: [+0.4829% +1.1743% +2.3196%] (p = 0.01 < 0.05)

Found 8 outliers among 100 measurements (8.00%)
2 (2.00%) high mild
6 (6.00%) high severe

coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [216.68 ns 216.81 ns 216.97 ns]
       change: [-0.1811% +0.5069% +1.1710%] (p = 0.15 > 0.05)

Found 10 outliers among 100 measurements (10.00%)
4 (4.00%) high mild
6 (6.00%) high severe

RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [120.65 ms 120.82 ms 121.05 ms]
       change: [+0.0750% +0.2521% +0.4526%] (p = 0.00 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe

transfer/pacing-false/varying-seeds: No change in performance detected.
       time:   [40.941 ms 42.973 ms 44.982 ms]
       change: [-4.9448% +1.9217% +9.0063%] (p = 0.58 > 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild

transfer/pacing-true/varying-seeds: No change in performance detected.
       time:   [54.247 ms 57.569 ms 60.862 ms]
       change: [-5.5019% +1.6085% +9.4351%] (p = 0.67 > 0.05)
transfer/pacing-false/same-seed: No change in performance detected.
       time:   [49.163 ms 50.559 ms 51.933 ms]
       change: [-5.0449% -1.1030% +3.0897%] (p = 0.60 > 0.05)
transfer/pacing-true/same-seed: No change in performance detected.
       time:   [71.702 ms 78.377 ms 85.000 ms]
       change: [-6.5813% +4.5571% +17.685%] (p = 0.45 > 0.05)
1-conn/1-100mb-resp (aka. Download)/client: No change in performance detected.
       time:   [171.08 ms 175.65 ms 183.06 ms]
       thrpt:  [546.28 MiB/s 569.31 MiB/s 584.51 MiB/s]
change:
       time:   [-1.4587% +1.4937% +6.3846%] (p = 0.53 > 0.05)
       thrpt:  [-6.0015% -1.4718% +1.4802%]

Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe

1-conn/10_000-parallel-1b-resp (aka. RPS)/client: No change in performance detected.
       time:   [407.92 ms 411.72 ms 415.45 ms]
       thrpt:  [24.070 Kelem/s 24.288 Kelem/s 24.515 Kelem/s]
change:
       time:   [-2.3135% -1.0173% +0.3624%] (p = 0.13 > 0.05)
       thrpt:  [-0.3611% +1.0278% +2.3683%]
1-conn/1-1b-resp (aka. HPS)/client: No change in performance detected.
       time:   [46.062 ms 46.761 ms 47.461 ms]
       thrpt:  [21.070  elem/s 21.385  elem/s 21.710  elem/s]
change:
       time:   [-2.0074% +0.0133% +2.1565%] (p = 0.99 > 0.05)
       thrpt:  [-2.1110% -0.0133% +2.0485%]

Client/server transfer results

Transfer of 33554432 bytes over loopback.

Client Server CC Pacing Mean [ms] Min [ms] Max [ms] Relative
msquic msquic 169.7 ± 88.9 108.9 396.4 1.00
neqo msquic reno on 304.6 ± 73.8 256.3 462.4 1.00
neqo msquic reno 285.8 ± 55.2 248.9 440.9 1.00
neqo msquic cubic on 291.2 ± 60.3 259.6 459.5 1.00
neqo msquic cubic 286.0 ± 60.1 253.6 455.6 1.00
msquic neqo reno on 176.7 ± 80.4 110.7 344.0 1.00
msquic neqo reno 165.4 ± 58.2 108.0 309.2 1.00
msquic neqo cubic on 212.1 ± 66.6 113.2 389.0 1.00
msquic neqo cubic 213.8 ± 61.6 166.3 390.2 1.00
neqo neqo reno on 233.0 ± 88.2 158.4 419.2 1.00
neqo neqo reno 199.1 ± 61.1 151.3 381.5 1.00
neqo neqo cubic on 200.6 ± 70.1 164.5 439.9 1.00
neqo neqo cubic 200.4 ± 58.2 157.2 386.3 1.00

⬇️ Download logs

Copy link

github-actions bot commented Aug 2, 2024

Firefox builds for this PR

The following builds are available for testing. Crossed-out builds did not succeed.

@larseggert
Copy link
Collaborator

@mxinden we can land this and #2031 as soon as that one passes CI.

@mxinden
Copy link
Collaborator Author

mxinden commented Aug 7, 2024

Resolving merge conflicts now.

Instead of writing to a file directly, buffer writes through a `BufWriter`.
@larseggert larseggert added this pull request to the merge queue Aug 8, 2024
Merged via the queue into mozilla:main with commit ca0080e Aug 8, 2024
55 of 56 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants