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: Shuffle the client Initial crypto data #2228

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

larseggert
Copy link
Collaborator

@larseggert larseggert commented Nov 13, 2024

Look for ranges of N or more bytes of graphical ASCII data in data. Create at least one split point at N/2 into the range for each range, multiple ones each N bytes afterwards if the range is long enough. Create data chunks based on those split points. Shuffle the chunks and return them. (N is currently 3.)

CC @martinthomson @dennisjackson

Look for ranges of `N` or more bytes of graphical ASCII data in `data`.
Create at least one split point for each range, multiple ones each `N`
bytes if the range is long enough. Create data chunks based on those
split points. Shuffle the chunks and return them.

CC @martinthomson @dennisjackson
Copy link

github-actions bot commented Nov 13, 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

@larseggert larseggert marked this pull request as ready for review November 14, 2024 14:37
Copy link

codecov bot commented Nov 15, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.39%. Comparing base (68e19fc) to head (89ecaed).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2228      +/-   ##
==========================================
+ Coverage   95.37%   95.39%   +0.02%     
==========================================
  Files         112      112              
  Lines       36563    36726     +163     
==========================================
+ Hits        34872    35035     +163     
  Misses       1691     1691              

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

Copy link

github-actions bot commented Nov 15, 2024

Benchmark results

Performance differences relative to 68e19fc.

coalesce_acked_from_zero 1+1 entries: 💔 Performance has regressed.
       time:   [105.06 ns 105.39 ns 105.72 ns]
       change: [+15.668% +16.427% +17.107%] (p = 0.00 < 0.05)

Found 14 outliers among 100 measurements (14.00%)
10 (10.00%) high mild
4 (4.00%) high severe

coalesce_acked_from_zero 3+1 entries: 💔 Performance has regressed.
       time:   [120.90 ns 121.31 ns 121.74 ns]
       change: [+17.463% +18.175% +18.907%] (p = 0.00 < 0.05)

Found 19 outliers among 100 measurements (19.00%)
2 (2.00%) low mild
3 (3.00%) high mild
14 (14.00%) high severe

coalesce_acked_from_zero 10+1 entries: 💔 Performance has regressed.
       time:   [120.44 ns 120.97 ns 121.69 ns]
       change: [+17.793% +18.396% +19.104%] (p = 0.00 < 0.05)

Found 12 outliers among 100 measurements (12.00%)
1 (1.00%) low severe
3 (3.00%) low mild
2 (2.00%) high mild
6 (6.00%) high severe

coalesce_acked_from_zero 1000+1 entries: 💔 Performance has regressed.
       time:   [100.77 ns 100.92 ns 101.09 ns]
       change: [+24.584% +26.175% +27.680%] (p = 0.00 < 0.05)

Found 10 outliers among 100 measurements (10.00%)
3 (3.00%) high mild
7 (7.00%) high severe

RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [111.34 ms 111.47 ms 111.68 ms]
       change: [-0.3123% -0.1806% +0.0512%] (p = 0.02 < 0.05)

Found 13 outliers among 100 measurements (13.00%)
3 (3.00%) low severe
3 (3.00%) low mild
1 (1.00%) high mild
6 (6.00%) high severe

transfer/pacing-false/varying-seeds: Change within noise threshold.
       time:   [25.878 ms 26.930 ms 27.976 ms]
       change: [-10.961% -5.7746% -0.4791%] (p = 0.03 < 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:   [33.610 ms 35.178 ms 36.700 ms]
       change: [-8.5493% -2.4048% +4.1986%] (p = 0.47 > 0.05)

Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild

transfer/pacing-false/same-seed: Change within noise threshold.
       time:   [24.783 ms 25.650 ms 26.539 ms]
       change: [-8.8786% -4.6845% -0.5154%] (p = 0.03 < 0.05)

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

transfer/pacing-true/same-seed: No change in performance detected.
       time:   [40.200 ms 42.409 ms 44.648 ms]
       change: [-8.7856% -1.9785% +5.2403%] (p = 0.58 > 0.05)
1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected.
       time:   [910.13 ms 918.60 ms 927.14 ms]
       thrpt:  [107.86 MiB/s 108.86 MiB/s 109.87 MiB/s]
change:
       time:   [-2.1263% -0.8129% +0.4358%] (p = 0.22 > 0.05)
       thrpt:  [-0.4339% +0.8195% +2.1725%]
1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: No change in performance detected.
       time:   [319.90 ms 323.29 ms 326.78 ms]
       thrpt:  [30.601 Kelem/s 30.932 Kelem/s 31.260 Kelem/s]
change:
       time:   [-1.8396% -0.3597% +1.0478%] (p = 0.63 > 0.05)
       thrpt:  [-1.0370% +0.3610% +1.8741%]

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

1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected.
       time:   [34.298 ms 34.456 ms 34.633 ms]
       thrpt:  [28.874  elem/s 29.022  elem/s 29.156  elem/s]
change:
       time:   [-0.3577% +0.3962% +1.1376%] (p = 0.30 > 0.05)
       thrpt:  [-1.1248% -0.3947% +0.3590%]

Found 9 outliers among 100 measurements (9.00%)
1 (1.00%) low mild
4 (4.00%) high mild
4 (4.00%) high severe

1-conn/1-100mb-resp/mtu-1504 (aka. Upload)/client: No change in performance detected.
       time:   [1.6906 s 1.7062 s 1.7232 s]
       thrpt:  [58.033 MiB/s 58.609 MiB/s 59.151 MiB/s]
change:
       time:   [-0.5759% +0.9413% +2.4603%] (p = 0.22 > 0.05)
       thrpt:  [-2.4012% -0.9326% +0.5792%]

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

Client/server transfer results

Transfer of 33554432 bytes over loopback.

Client Server CC Pacing MTU Mean [ms] Min [ms] Max [ms]
gquiche gquiche 1504 594.3 ± 74.9 516.3 721.2
neqo gquiche reno on 1504 777.9 ± 11.9 755.9 793.7
neqo gquiche reno 1504 796.5 ± 84.7 735.6 959.6
neqo gquiche cubic on 1504 744.0 ± 21.3 709.7 791.1
neqo gquiche cubic 1504 751.1 ± 38.1 723.7 855.8
msquic msquic 1504 165.1 ± 84.3 103.1 321.0
neqo msquic reno on 1504 270.8 ± 84.8 206.3 445.3
neqo msquic reno 1504 214.5 ± 16.4 199.0 249.8
neqo msquic cubic on 1504 288.3 ± 97.6 209.8 461.1
neqo msquic cubic 1504 285.6 ± 114.3 207.9 535.5
gquiche neqo reno on 1504 746.6 ± 97.6 604.1 924.8
gquiche neqo reno 1504 757.6 ± 117.3 610.4 956.9
gquiche neqo cubic on 1504 746.3 ± 79.4 632.5 864.5
gquiche neqo cubic 1504 772.5 ± 100.1 634.2 966.8
msquic neqo reno on 1504 766.5 ± 86.8 713.3 974.3
msquic neqo reno 1504 724.0 ± 36.8 700.6 825.4
msquic neqo cubic on 1504 745.6 ± 57.9 704.1 906.0
msquic neqo cubic 1504 756.6 ± 88.7 694.3 940.8
neqo neqo reno on 1504 693.7 ± 62.3 647.4 803.1
neqo neqo reno 1504 645.3 ± 46.8 573.0 759.0
neqo neqo cubic on 1504 616.8 ± 40.6 506.0 653.6
neqo neqo cubic 1504 680.3 ± 94.4 624.4 870.9

⬇️ Download logs

@larseggert larseggert changed the title feat: Mix up the Initial crypto data a bit feat: Shuffle the client Initial crypto data Nov 15, 2024
for i in 0..(n - 1) {
// j ← random integer such that i ≤ j < n
let j = loop {
let j = (random::<8>()[0] as usize) % (n - i) + i;
Copy link
Collaborator

@mxinden mxinden Nov 16, 2024

Choose a reason for hiding this comment

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

Is there a modulo bias here when n - i does not evenly divide 256?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Maybe? Not sure if it matters in practice, since we just try to get some order out that isn't sequential.

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