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

feat: Allow running parallel transfer benchmarks #1928

Closed
wants to merge 3 commits into from

Conversation

larseggert
Copy link
Collaborator

By randomizing the port used for a bench. There is still a small chance for a collision, but seems acceptable.

By randomizing the port used for a bench. There is still a small
chance for a collision, but seems acceptable.
Copy link

github-actions bot commented Jun 17, 2024

Firefox builds for this PR

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

Copy link

github-actions bot commented Jun 17, 2024

Failed Interop Tests

QUIC Interop Runner, client vs. server

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

@@ -20,7 +20,8 @@ fn transfer(c: &mut Criterion) {
neqo_common::log::init(Some(log::LevelFilter::Off));
neqo_crypto::init_db(PathBuf::from_str("../test-fixture/db").unwrap()).unwrap();

let done_sender = spawn_server();
let port = 49151 + (rand::random::<u16>() % 16384);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we use neqo-crypto here? It doesn't seem to have a clean way to return randomized types, just u8?

Copy link

codecov bot commented Jun 17, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 94.82%. Comparing base (6664452) to head (b03f010).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1928   +/-   ##
=======================================
  Coverage   94.82%   94.82%           
=======================================
  Files         110      110           
  Lines       35792    35792           
=======================================
  Hits        33938    33938           
  Misses       1854     1854           

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

Copy link

Benchmark results

Performance differences relative to 6664452.

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [196.78 ns 197.51 ns 198.56 ns]
       change: [-0.2088% +0.4191% +1.3858%] (p = 0.36 > 0.05)
Found 17 outliers among 100 measurements (17.00%)
  7 (7.00%) high mild
  10 (10.00%) high severe
coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [238.92 ns 239.73 ns 240.54 ns]
       change: [-0.3174% +0.1125% +0.5175%] (p = 0.59 > 0.05)
Found 18 outliers among 100 measurements (18.00%)
  12 (12.00%) high mild
  6 (6.00%) high severe
coalesce_acked_from_zero 10+1 entries: Change within noise threshold.
       time:   [237.42 ns 238.41 ns 239.52 ns]
       change: [+0.1697% +0.6985% +1.3026%] (p = 0.01 < 0.05)
Found 10 outliers among 100 measurements (10.00%)
  10 (10.00%) high severe
coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [216.15 ns 216.30 ns 216.47 ns]
       change: [-4.8684% -1.5903% +0.4282%] (p = 0.38 > 0.05)
Found 13 outliers among 100 measurements (13.00%)
  5 (5.00%) high mild
  8 (8.00%) high severe
RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [119.57 ms 119.73 ms 119.98 ms]
       change: [+0.3022% +0.4625% +0.6768%] (p = 0.00 < 0.05)
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
transfer/Run multiple transfers with varying seeds: No change in performance detected.
       time:   [119.82 ms 120.09 ms 120.36 ms]
       thrpt:  [33.233 MiB/s 33.308 MiB/s 33.384 MiB/s]
change:
       time:   [-0.2439% +0.0963% +0.4498%] (p = 0.58 > 0.05)
       thrpt:  [-0.4478% -0.0962% +0.2445%]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
transfer/Run multiple transfers with the same seed: Change within noise threshold.
       time:   [120.53 ms 120.72 ms 120.92 ms]
       thrpt:  [33.080 MiB/s 33.134 MiB/s 33.186 MiB/s]
change:
       time:   [+0.1633% +0.3680% +0.5772%] (p = 0.00 < 0.05)
       thrpt:  [-0.5739% -0.3667% -0.1630%]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
1-conn/1-100mb-resp (aka. Download)/client: No change in performance detected.
       time:   [1.1028 s 1.1319 s 1.1596 s]
       thrpt:  [86.236 MiB/s 88.344 MiB/s 90.682 MiB/s]
change:
       time:   [-4.0277% -0.6115% +2.4658%] (p = 0.73 > 0.05)
       thrpt:  [-2.4065% +0.6152% +4.1967%]

1-conn/10_000-parallel-1b-resp (aka. RPS)/client
time: [391.58 ms 394.59 ms 397.57 ms]
thrpt: [25.153 Kelem/s 25.343 Kelem/s 25.537 Kelem/s]
change:
time: [-0.7979% +0.3055% +1.3882%] (p = 0.58 > 0.05)
thrpt: [-1.3692% -0.3046% +0.8043%]
No change in performance detected.

1-conn/1-1b-resp (aka. HPS)/client: No change in performance detected.
       time:   [41.766 ms 41.897 ms 42.047 ms]
       thrpt:  [23.783  elem/s 23.868  elem/s 23.943  elem/s]
change:
       time:   [-0.7282% -0.2213% +0.2747%] (p = 0.39 > 0.05)
       thrpt:  [-0.2740% +0.2217% +0.7335%]
Found 32 outliers among 100 measurements (32.00%)
  20 (20.00%) low severe
  2 (2.00%) low mild
  1 (1.00%) high mild
  9 (9.00%) high severe

Client/server transfer results

Transfer of 33554432 bytes over loopback.

Client Server CC Pacing Mean [ms] Min [ms] Max [ms] Relative
msquic msquic 148.3 ± 32.6 100.5 225.1 1.00
neqo msquic reno on 267.0 ± 12.6 253.8 297.4 1.00
neqo msquic reno 273.1 ± 13.9 251.9 290.7 1.00
neqo msquic cubic on 271.7 ± 11.8 254.2 286.6 1.00
neqo msquic cubic 276.7 ± 10.2 259.2 290.8 1.00
msquic neqo reno on 922.3 ± 14.9 909.9 959.8 1.00
msquic neqo reno 912.2 ± 11.8 901.6 934.3 1.00
msquic neqo cubic on 902.6 ± 13.4 884.4 928.0 1.00
msquic neqo cubic 883.1 ± 11.3 873.0 907.0 1.00
neqo neqo reno on 915.2 ± 12.2 894.9 933.0 1.00
neqo neqo reno 934.7 ± 24.6 899.9 986.2 1.00
neqo neqo cubic on 892.9 ± 8.0 885.0 905.4 1.00
neqo neqo cubic 883.3 ± 12.9 871.9 916.5 1.00

⬇️ Download logs

@larseggert
Copy link
Collaborator Author

Closing this. It was useful while debugging a spurious failure, but it's often more/also useful to have predictable ports for tcpdumping.

@larseggert larseggert closed this Jul 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant