Skip to content

ci: Use samply to convert perf data for the Firefox profiler #2579

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

Merged
merged 9 commits into from
May 14, 2025

Conversation

larseggert
Copy link
Collaborator

@larseggert larseggert commented Apr 10, 2025

This should allow finer-grained stack- and flamegraphs that show inlined functions. Also might lead to smaller artifact sizes.

Copy link

codecov bot commented Apr 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.53%. Comparing base (28c0ea7) to head (62b5f66).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2579      +/-   ##
==========================================
+ Coverage   95.52%   95.53%   +0.01%     
==========================================
  Files         115      115              
  Lines       37275    37275              
  Branches    37275    37275              
==========================================
+ Hits        35607    35612       +5     
+ Misses       1662     1659       -3     
+ Partials        6        4       -2     
Components Coverage Δ
neqo-common 97.52% <ø> (+0.35%) ⬆️
neqo-crypto 90.45% <ø> (ø)
neqo-http3 94.50% <ø> (ø)
neqo-qpack 96.29% <ø> (ø)
neqo-transport 96.50% <ø> (ø)
neqo-udp 90.10% <ø> (ø)

Copy link

github-actions bot commented Apr 10, 2025

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to 37d76e8.

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 Apr 10, 2025

Benchmark results

Performance differences relative to 24ba9d9.

1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected.
       time:   [854.07 ms 886.17 ms 918.25 ms]
       thrpt:  [108.90 MiB/s 112.84 MiB/s 117.09 MiB/s]
change:
       time:   [-4.3357% +0.6967% +6.0625%] (p = 0.80 > 0.05)
       thrpt:  [-5.7159% -0.6919% +4.5322%]
1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: No change in performance detected.
       time:   [353.33 ms 354.78 ms 356.25 ms]
       thrpt:  [28.070 Kelem/s 28.186 Kelem/s 28.302 Kelem/s]
change:
       time:   [-0.5705% -0.0118% +0.5513%] (p = 0.97 > 0.05)
       thrpt:  [-0.5483% +0.0118% +0.5738%]
1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected.
       time:   [25.897 ms 26.069 ms 26.247 ms]
       thrpt:  [38.099  elem/s 38.360  elem/s 38.614  elem/s]
change:
       time:   [-0.8443% +0.1671% +1.0996%] (p = 0.74 > 0.05)
       thrpt:  [-1.0877% -0.1668% +0.8514%]
1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💔 Performance has regressed.
       time:   [1.8247 s 1.8416 s 1.8604 s]
       thrpt:  [53.751 MiB/s 54.300 MiB/s 54.804 MiB/s]
change:
       time:   [+2.9566% +4.5044% +6.0413%] (p = 0.00 < 0.05)
       thrpt:  [-5.6971% -4.3102% -2.8717%]

Found 6 outliers among 100 measurements (6.00%)
4 (4.00%) high mild
2 (2.00%) high severe

decode 4096 bytes, mask ff: No change in performance detected.
       time:   [12.093 µs 12.127 µs 12.168 µs]
       change: [-0.3118% +0.1171% +0.5794%] (p = 0.64 > 0.05)

Found 10 outliers among 100 measurements (10.00%)
1 (1.00%) low severe
1 (1.00%) high mild
8 (8.00%) high severe

decode 1048576 bytes, mask ff: No change in performance detected.
       time:   [2.9814 ms 2.9909 ms 3.0021 ms]
       change: [-0.3511% +0.0912% +0.5500%] (p = 0.71 > 0.05)

Found 9 outliers among 100 measurements (9.00%)
9 (9.00%) high severe

decode 4096 bytes, mask 7f: No change in performance detected.
       time:   [20.221 µs 20.273 µs 20.331 µs]
       change: [-0.1285% +0.2960% +0.7661%] (p = 0.20 > 0.05)

Found 21 outliers among 100 measurements (21.00%)
1 (1.00%) low severe
1 (1.00%) low mild
19 (19.00%) high severe

decode 1048576 bytes, mask 7f: No change in performance detected.
       time:   [4.8370 ms 4.8484 ms 4.8613 ms]
       change: [-0.3897% -0.0299% +0.3162%] (p = 0.88 > 0.05)

Found 12 outliers among 100 measurements (12.00%)
12 (12.00%) high severe

decode 4096 bytes, mask 3f: No change in performance detected.
       time:   [6.3762 µs 6.4015 µs 6.4322 µs]
       change: [-0.8742% -0.3176% +0.1653%] (p = 0.25 > 0.05)

Found 19 outliers among 100 measurements (19.00%)
5 (5.00%) low severe
5 (5.00%) low mild
4 (4.00%) high mild
5 (5.00%) high severe

decode 1048576 bytes, mask 3f: No change in performance detected.
       time:   [2.1740 ms 2.1812 ms 2.1897 ms]
       change: [-0.3912% +0.1235% +0.6508%] (p = 0.66 > 0.05)

Found 12 outliers among 100 measurements (12.00%)
2 (2.00%) high mild
10 (10.00%) high severe

1000 streams of 1 bytes/multistream: Change within noise threshold.
       time:   [25.598 ms 25.625 ms 25.653 ms]
       change: [-0.4154% -0.2633% -0.1125%] (p = 0.00 < 0.05)

Found 64 outliers among 500 measurements (12.80%)
60 (12.00%) high mild
4 (0.80%) high severe

1000 streams of 1000 bytes/multistream: Change within noise threshold.
       time:   [143.60 ms 143.63 ms 143.67 ms]
       change: [+0.1801% +0.2153% +0.2504%] (p = 0.00 < 0.05)

Found 4 outliers among 500 measurements (0.80%)
4 (0.80%) high mild

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [95.647 ns 95.937 ns 96.229 ns]
       change: [-0.6417% -0.0662% +0.6231%] (p = 0.84 > 0.05)

Found 8 outliers among 100 measurements (8.00%)
5 (5.00%) high mild
3 (3.00%) high severe

coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [113.95 ns 114.29 ns 114.67 ns]
       change: [-0.0680% +0.4716% +1.0778%] (p = 0.09 > 0.05)

Found 15 outliers among 100 measurements (15.00%)
1 (1.00%) low mild
1 (1.00%) high mild
13 (13.00%) high severe

coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [113.60 ns 114.30 ns 115.10 ns]
       change: [-0.0442% +0.7608% +1.8193%] (p = 0.10 > 0.05)

Found 20 outliers among 100 measurements (20.00%)
2 (2.00%) low severe
4 (4.00%) low mild
2 (2.00%) high mild
12 (12.00%) high severe

coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [93.867 ns 94.326 ns 94.857 ns]
       change: [-1.0649% +0.2988% +1.6655%] (p = 0.68 > 0.05)

Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high severe

RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [117.89 ms 117.95 ms 118.01 ms]
       change: [-0.7696% -0.6988% -0.6321%] (p = 0.00 < 0.05)

Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) low mild
8 (8.00%) high mild
1 (1.00%) high severe

SentPackets::take_ranges: No change in performance detected.
       time:   [8.5578 µs 8.7766 µs 8.9838 µs]
       change: [-3.3940% -0.0232% +3.0708%] (p = 0.99 > 0.05)

Found 19 outliers among 100 measurements (19.00%)
4 (4.00%) low severe
11 (11.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe

transfer/pacing-false/varying-seeds: Change within noise threshold.
       time:   [35.412 ms 35.487 ms 35.562 ms]
       change: [+0.1798% +0.4512% +0.7231%] (p = 0.00 < 0.05)

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

transfer/pacing-true/varying-seeds: Change within noise threshold.
       time:   [36.238 ms 36.333 ms 36.431 ms]
       change: [+0.7606% +1.1673% +1.5405%] (p = 0.00 < 0.05)

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

transfer/pacing-false/same-seed: Change within noise threshold.
       time:   [35.575 ms 35.627 ms 35.680 ms]
       change: [+0.2938% +0.5207% +0.7447%] (p = 0.00 < 0.05)

Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high mild

transfer/pacing-true/same-seed: No change in performance detected.
       time:   [36.956 ms 37.024 ms 37.093 ms]
       change: [-0.1009% +0.1381% +0.4039%] (p = 0.29 > 0.05)

Client/server transfer results

Performance differences relative to 24ba9d9.

Transfer of 33554432 bytes over loopback, 30 runs. All unit-less numbers are in milliseconds.

Client Server CC Pacing Mean ± σ Min Max MiB/s ± σ Δ main Δ main
neqo neqo reno on 379.1 ± 128.7 310.1 828.7 84.4 ± 0.2 7.1 1.9%
neqo neqo reno 433.5 ± 281.2 304.1 1731.9 73.8 ± 0.1 4.7 1.1%
neqo neqo cubic on 390.4 ± 149.8 311.5 867.9 82.0 ± 0.2 32.7 9.2%
neqo neqo cubic 385.9 ± 193.6 309.4 1354.9 82.9 ± 0.2 22.5 6.2%
google neqo reno on 801.4 ± 108.6 570.8 1053.7 39.9 ± 0.3 5.2 0.6%
google neqo reno 775.6 ± 101.5 549.2 1071.3 41.3 ± 0.3 -3.6 -0.5%
google neqo cubic on 793.4 ± 101.6 575.9 1079.5 40.3 ± 0.3 0.5 0.1%
google neqo cubic 805.1 ± 131.8 577.7 1184.2 39.7 ± 0.2 -17.3 -2.1%
google google 605.7 ± 81.4 558.1 902.1 52.8 ± 0.4 5.4 0.9%
neqo msquic reno on 312.3 ± 132.3 239.8 820.0 102.5 ± 0.2 18.9 6.4%
neqo msquic reno 295.5 ± 116.9 241.9 822.0 108.3 ± 0.3 6.7 2.3%
neqo msquic cubic on 303.0 ± 107.0 241.7 715.7 105.6 ± 0.3 12.5 4.3%
neqo msquic cubic 278.0 ± 57.9 239.5 446.5 115.1 ± 0.6 -0.2 -0.1%
msquic msquic 219.3 ± 45.0 183.8 377.9 145.9 ± 0.7 -7.0 -3.1%

⬇️ Download logs

@larseggert
Copy link
Collaborator Author

This is waiting for @mstange to add a --presymbolicate flag as discussed on Slack.

@larseggert larseggert added the blocked Blocked on something else label Apr 11, 2025
@larseggert larseggert changed the title ci: Samply again ci: Use samply to convert perf data for the Firefox profiler Apr 11, 2025
@larseggert
Copy link
Collaborator Author

@jrmuizel @mstange I kicked off a new bench after fixing the two issues identified yesterday (#2617 and #2618).

@larseggert larseggert marked this pull request as ready for review May 13, 2025 06:38
@larseggert larseggert removed the blocked Blocked on something else label May 13, 2025
@larseggert
Copy link
Collaborator Author

I'd like to merge this now. I added a TODO to switch back to installing binaries once there is a new samply release. Could I get a review?

@larseggert larseggert merged commit efd8e4d into mozilla:main May 14, 2025
83 of 85 checks passed
@larseggert larseggert deleted the ci-samply-again branch May 14, 2025 11:13
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.

1 participant