Repository navigation
roadrunner: update to v0.13.1 - #1673
williamthome wants to merge 4 commits into
Conversation
|
/benchmark-multiple -f roadrunner,roadrunner-gateway |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFrameworks: 2 | Test: ✅
|
| Test | Conn | RPS | Rate | CPU/req | p99 | p99.9 | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|---|---|---|---|
| baseline | 4096 | 1,148,070 | — | — | — | — | 6286.4% | 331MiB | -1.6% | -2.9% |
| pipelined | 4096 | 5,311,003 | — | — | — | — | 6165.9% | 256MiB | -13.4% | -3.4% |
| limited-conn | 4096 | 459,258 | — | — | — | — | 4191.9% | 231MiB | +1.9% | -0.9% |
| json-comp | 4096 | 111,370 | — | — | — | — | 6264.0% | 659MiB | +6.0% | +6.1% |
| json-comp | 16384 | 113,369 | — | — | — | — | 6448.8% | 671MiB | +3.1% | +12.2% |
| json-tls | 4096 | 167,736 | — | — | — | — | 6423.6% | 898MiB | +1.6% | -0.3% |
| 8gbit | 512 | 48,341 | 0.9668 |
278.46us | 1297.0us | 6114.0us | 1273.8% | 462MiB | -0.2% | -4.9% |
| static-tls | 1024 | 83,237 | — | — | — | — | 6165.0% | 699MiB | -5.1% | -0.1% |
| async-db | 1024 | 125,861 | — | — | — | — | 6432.3% | 716MiB | -5.9% | -5.2% |
| fortunes | 1024 | 69,440 | — | — | — | — | 6250.4% | 1.2GiB | -1.2% | +29.5% |
| baseline-h2 | 256 | 602,386 | — | — | — | — | 6644.6% | 354MiB | +17.7% | +5.7% |
| baseline-h2 | 1024 | 603,819 | — | — | — | — | 6493.3% | 480MiB | +15.8% | +5.5% |
| static-h2 | 256 | 78,203 | — | — | — | — | 6050.3% | 488MiB | +0.5% | -7.9% |
| static-h2 | 1024 | 74,228 | — | — | — | — | 6269.2% | 999MiB | -1.5% | +0.6% |
| baseline-h2c | 256 | 966,093 | — | — | — | — | 6620.1% | 273MiB | +8.0% | +23.0% |
| baseline-h2c | 1024 | 942,458 | — | — | — | — | 6523.9% | 362MiB | +8.5% | +42.5% |
| baseline-h2c | 4096 | 873,164 | — | — | — | — | 6546.3% | 585MiB | +12.4% | +62.5% |
| json-h2c | 1024 | 113,317 | — | — | — | — | 3738.2% | 932MiB | +9.6% | +30.5% |
| json-h2c | 4096 | 113,958 | — | — | — | — | 4080.1% | 1.5GiB | -11.4% | +15.4% |
| baseline-h3 | 64 | 181,454 | — | — | — | — | 3754.4% | 376MiB | -1.2% | +4.2% |
| static-h3 | 64 | 47,376 | — | — | — | — | 4219.0% | 1.4GiB | +13.9% | +7.7% |
| echo-ws | 512 | 466,495 | — | — | — | — | 4763.7% | 210MiB | +24.9% | +3.4% |
| echo-ws | 4096 | 1,256,222 | — | — | — | — | 5613.5% | 387MiB | +23.6% | -0.3% |
| echo-ws | 16384 | 321,391 | — | — | — | — | 4328.5% | 1015MiB | -79.8% | +12.8% |
| echo-ws-pipeline | 512 | 17,937,465 | — | — | — | — | 6553.1% | 191MiB | +41.8% | -5.9% |
| echo-ws-pipeline | 4096 | 16,479,190 | — | — | — | — | 6343.3% | 308MiB | +33.3% | -1.9% |
| echo-ws-pipeline | 16384 | 16,572,620 | — | — | — | — | 6664.9% | 329MiB | +35.0% | -2.7% |
| echo-ws-limited | 512 | 435,361 | — | — | — | — | 4504.8% | 236MiB | +45.0% | -17.5% |
| echo-ws-limited | 4096 | 439,701 | — | — | — | — | 4301.7% | 232MiB | +54.5% | -55.9% |
| latency-1m | 1024 | 920,912 | 0.9209 |
64.12us | 1837568.0us | 2427904.0us | 6123.7% | 361MiB | +2.5% | +4.9% |
| latency-10k | 1024 | 9,979 | 0.9979 | 128.67us | 147.0us | 653.0us | 124.6% | 216MiB | ~0% | +5.4% |
| latency-500k-8cpu | 1024 | 176,100 | 0.3522 |
45.33us | 12955648.0us | 13217792.0us | 771.9% | 143MiB | +0.3% | +0.7% |
| async | 32000 | 1,142,223 | — | — | — | — | 6291.6% | 875MiB | -2.3% | +7.6% |
Composite score, main against this run, in the board's default view:
| Family | main | this run | Δ |
|---|---|---|---|
| HTTP/1.1 | 2443.0 (#54 of 102) | 2466.7 (#54 of 102) | +23.7 |
| HTTP/2 | 260.5 (#30 of 35) | 274.6 (#30 of 35) | +14.1 |
| HTTP/3 | 180.1 (#17 of 19) | 199.6 (#17 of 19) | +19.5 |
| Gateway | 2340.9 (#3 of 9) | 2337.7 (#3 of 9) | -3.2 |
| WebSocket | 597.9 (#26 of 35) | 664.6 (#25 of 35) | +66.8 |
The results on main were measured in another session, so a few points up or down can be the machine and not the change.
✅ roadrunner-gateway
| Test | Conn | RPS | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|
| gateway-64 | 512 | 155,994 | 5929.4% | 2.9GiB | +0.5% | ~0% |
| gateway-64 | 1024 | 151,295 | 5958.2% | 4.4GiB | +0.3% | +2.3% |
| gateway-h3 | 64 | 81,666 | 5286.6% | 770MiB | +0.2% | -5.5% |
| gateway-h3 | 256 | 58,978 | 4517.6% | 1.6GiB | +0.7% | -5.9% |
| production-stack | 256 | 236,237 | 5753.8% | 1.4GiB | +2.1% | ~0% |
| production-stack | 1024 | 185,500 | 5418.2% | 2.1GiB | -4.6% | -8.7% |
|
/benchmark -f roadrunner -t echo-ws |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Composite score, main against this run, in the board's default view:
The results on main were measured in another session, so a few points up or down can be the machine and not the change. Full log |
|
/benchmark -f roadrunner -t echo-ws |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Composite score, main against this run, in the board's default view:
The results on main were measured in another session, so a few points up or down can be the machine and not the change. Full log |
|
/benchmark-multiple -f roadrunner,roadrunner-gateway |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFrameworks: 2 | Test: ✅
|
| Test | Conn | RPS | Rate | CPU/req | p99 | p99.9 | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|---|---|---|---|
| baseline | 4096 | 1,178,019 | — | — | — | — | 6399.5% | 360MiB | +1.0% | +5.6% |
| pipelined | 4096 | 5,427,942 | — | — | — | — | 6200.7% | 268MiB | -11.5% | +1.1% |
| limited-conn | 4096 | 517,705 | — | — | — | — | 3472.3% | 224MiB | +14.8% | -3.9% |
| json-comp | 4096 | 103,671 | — | — | — | — | 6445.4% | 632MiB | -1.3% | +1.8% |
| json-comp | 16384 | 95,801 | — | — | — | — | 6455.2% | 673MiB | -12.8% | +12.5% |
| json-tls | 4096 | 184,269 | — | — | — | — | 6367.7% | 980MiB | +11.6% | +8.8% |
| 8gbit | 512 | 48,449 | 0.9690 |
272.35us | 1114.0us | 4558.0us | 1241.3% | 476MiB | ~0% | -2.1% |
| static-tls | 1024 | 86,715 | — | — | — | — | 6050.4% | 658MiB | -1.2% | -6.0% |
| async-db | 1024 | 132,058 | — | — | — | — | 6418.6% | 724MiB | -1.3% | -4.1% |
| fortunes | 1024 | 71,074 | — | — | — | — | 6409.1% | 1.1GiB | +1.1% | +18.7% |
| baseline-h2 | 256 | 594,451 | — | — | — | — | 6650.9% | 341MiB | +16.1% | +1.8% |
| baseline-h2 | 1024 | 606,937 | — | — | — | — | 6479.0% | 464MiB | +16.4% | +2.0% |
| static-h2 | 256 | 76,529 | — | — | — | — | 6241.7% | 501MiB | -1.6% | -5.5% |
| static-h2 | 1024 | 78,214 | — | — | — | — | 6004.0% | 990MiB | +3.8% | -0.3% |
| baseline-h2c | 256 | 945,225 | — | — | — | — | 6561.3% | 251MiB | +5.7% | +13.1% |
| baseline-h2c | 1024 | 948,059 | — | — | — | — | 6521.9% | 361MiB | +9.1% | +42.1% |
| baseline-h2c | 4096 | 856,788 | — | — | — | — | 6372.0% | 577MiB | +10.3% | +60.3% |
| json-h2c | 1024 | 115,659 | — | — | — | — | 3883.2% | 883MiB | +11.9% | +23.7% |
| json-h2c | 4096 | 114,631 | — | — | — | — | 4089.4% | 1.5GiB | -10.9% | +15.4% |
| baseline-h3 | 64 | 182,100 | — | — | — | — | 3852.6% | 353MiB | -0.8% | -2.2% |
| static-h3 | 64 | 43,903 | — | — | — | — | 3576.1% | 1.3GiB | +5.6% | ~0% |
| echo-ws | 512 | 1,982,760 | — | — | — | — | 6623.8% | 217MiB | +430.9% | +6.9% |
| echo-ws | 4096 | 1,944,216 | — | — | — | — | 6519.4% | 255MiB | +91.2% | -34.3% |
| echo-ws | 16384 | 1,792,260 | — | — | — | — | 6294.3% | 356MiB | +12.7% | -60.4% |
| echo-ws-pipeline | 512 | 17,475,308 | — | — | — | — | 6534.3% | 236MiB | +38.2% | +16.3% |
| echo-ws-pipeline | 4096 | 16,904,531 | — | — | — | — | 6523.7% | 250MiB | +36.8% | -20.4% |
| echo-ws-pipeline | 16384 | 16,453,388 | — | — | — | — | 6646.6% | 333MiB | +34.0% | -1.5% |
| echo-ws-limited | 512 | 533,400 | — | — | — | — | 3137.1% | 231MiB | +77.7% | -19.2% |
| echo-ws-limited | 4096 | 527,074 | — | — | — | — | 3277.0% | 245MiB | +85.2% | -53.4% |
| latency-1m | 1024 | 997,093 | 0.9971 | 62.65us | 30024.0us | 65568.0us | 6497.4% | 454MiB | +11.0% | +32.0% |
| latency-10k | 1024 | 9,982 | 0.9982 | 125.80us | 135.0us | 840.0us | 121.0% | 204MiB | ~0% | -0.5% |
| latency-500k-8cpu | 1024 | 174,265 | 0.3485 |
45.78us | 12980224.0us | 13275136.0us | 769.5% | 138MiB | -0.7% | -2.8% |
| async | 32000 | 1,146,710 | — | — | — | — | 6350.8% | 882MiB | -1.9% | +8.5% |
Composite score, main against this run, in the board's default view:
| Family | main | this run | Δ |
|---|---|---|---|
| HTTP/1.1 | 2443.0 (#54 of 102) | 2580.8 (#54 of 102) | +137.8 |
| HTTP/2 | 260.5 (#30 of 35) | 275.3 (#30 of 35) | +14.8 |
| HTTP/3 | 180.1 (#17 of 19) | 187.7 (#17 of 19) | +7.7 |
| Gateway | 2340.9 (#3 of 9) | 2341.2 (#3 of 9) | +0.3 |
| WebSocket | 597.9 (#26 of 35) | 1008.8 (#21 of 35) | +411.0 |
The results on main were measured in another session, so a few points up or down can be the machine and not the change.
✅ roadrunner-gateway
| Test | Conn | RPS | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|
| gateway-64 | 512 | 155,800 | 5945.3% | 2.9GiB | +0.4% | ~0% |
| gateway-64 | 1024 | 151,071 | 6014.5% | 4.2GiB | +0.1% | -2.3% |
| gateway-h3 | 64 | 81,717 | 5362.7% | 769MiB | +0.3% | -5.6% |
| gateway-h3 | 256 | 58,670 | 4228.3% | 1.2GiB | +0.2% | -29.4% |
| production-stack | 256 | 227,800 | 5451.1% | 1.4GiB | -1.5% | ~0% |
| production-stack | 1024 | 196,642 | 5495.6% | 2.1GiB | +1.1% | -8.7% |
|
/benchmark-multiple -f roadrunner,roadrunner-gateway --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
|
d54b2db to
cba8308
Compare
|
/benchmark-multiple -f roadrunner,roadrunner-gateway --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFrameworks: 2 | Test: ✅
|
| Test | Conn | RPS | Rate | CPU/req | p99 | p99.9 | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|---|---|---|---|
| baseline | 4096 | 1,189,342 | — | — | — | — | 6435.6% | 360MiB | +2.0% | +5.6% |
| pipelined | 4096 | 5,821,942 | — | — | — | — | 6288.5% | 242MiB | -5.1% | -8.7% |
| limited-conn | 4096 | 518,855 | — | — | — | — | 3586.0% | 232MiB | +15.1% | -0.4% |
| json-comp | 4096 | 111,101 | — | — | — | — | 6250.0% | 641MiB | +5.8% | +3.2% |
| json-comp | 16384 | 104,738 | — | — | — | — | 6105.0% | 693MiB | -4.7% | +15.9% |
| json-tls | 4096 | 165,677 | — | — | — | — | 6434.0% | 863MiB | +0.4% | -4.2% |
| 8gbit | 512 | 48,479 | 0.9696 |
280.06us | 711.0us | 7862.0us | 1286.8% | 475MiB | +0.1% | -2.3% |
| static-tls | 1024 | 83,444 | — | — | — | — | 5770.8% | 711MiB | -4.9% | +1.6% |
| async-db | 1024 | 122,727 | — | — | — | — | 6449.3% | 724MiB | -8.3% | -4.1% |
| fortunes | 1024 | 70,530 | — | — | — | — | 6470.5% | 915MiB | +0.3% | -3.6% |
| baseline-h2 | 256 | 605,917 | — | — | — | — | 6565.0% | 360MiB | +18.4% | +7.5% |
| baseline-h2 | 1024 | 607,831 | — | — | — | — | 6505.6% | 479MiB | +16.6% | +5.3% |
| static-h2 | 256 | 79,399 | — | — | — | — | 6114.4% | 528MiB | +2.0% | -0.4% |
| static-h2 | 1024 | 75,454 | — | — | — | — | 6188.5% | 1.0GiB | +0.1% | +3.1% |
| baseline-h2c | 256 | 962,714 | — | — | — | — | 6586.5% | 263MiB | +7.6% | +18.5% |
| baseline-h2c | 1024 | 948,969 | — | — | — | — | 6553.6% | 371MiB | +9.2% | +46.1% |
| baseline-h2c | 4096 | 869,082 | — | — | — | — | 6553.1% | 631MiB | +11.8% | +75.3% |
| json-h2c | 1024 | 110,208 | — | — | — | — | 3856.4% | 895MiB | +6.6% | +25.4% |
| json-h2c | 4096 | 103,104 | — | — | — | — | 4219.4% | 1.3GiB | -19.8% | ~0% |
| baseline-h3 | 64 | 184,160 | — | — | — | — | 4100.3% | 322MiB | +0.3% | -10.8% |
| static-h3 | 64 | 37,532 | — | — | — | — | 3267.3% | 1.3GiB | -9.8% | ~0% |
| echo-ws | 512 | 1,969,616 | — | — | — | — | 6600.8% | 195MiB | +427.4% | -3.9% |
| echo-ws | 4096 | 1,960,375 | — | — | — | — | 6726.2% | 266MiB | +92.8% | -31.4% |
| echo-ws | 16384 | 1,863,889 | — | — | — | — | 6644.8% | 342MiB | +17.2% | -62.0% |
| echo-ws-pipeline | 512 | 17,792,009 | — | — | — | — | 6641.0% | 190MiB | +40.7% | -6.4% |
| echo-ws-pipeline | 4096 | 16,772,992 | — | — | — | — | 6426.1% | 304MiB | +35.7% | -3.2% |
| echo-ws-pipeline | 16384 | 16,408,758 | — | — | — | — | 6579.2% | 329MiB | +33.6% | -2.7% |
| echo-ws-limited | 512 | 537,168 | — | — | — | — | 3236.0% | 238MiB | +78.9% | -16.8% |
| echo-ws-limited | 4096 | 537,818 | — | — | — | — | 2986.5% | 270MiB | +89.0% | -48.7% |
| latency-1m | 1024 | 997,824 | 0.9978 | 62.58us | 23016.0us | 39888.0us | 6493.2% | 482MiB | +11.0% | +40.1% |
| latency-10k | 1024 | 9,982 | 0.9982 | 133.25us | 135.0us | 277.0us | 129.1% | 193MiB | ~0% | -5.9% |
| latency-500k-8cpu | 1024 | 175,249 | 0.3505 |
45.54us | 12980224.0us | 13234176.0us | 772.0% | 146MiB | -0.2% | +2.8% |
| async | 32000 | 1,143,294 | — | — | — | — | 6357.7% | 899MiB | -2.2% | +10.6% |
Composite score, main against this run, in the board's default view:
| Family | main | this run | Δ |
|---|---|---|---|
| HTTP/1.1 | 2443.0 (#54 of 102) | 2603.4 (#54 of 102) | +160.4 |
| HTTP/2 | 260.5 (#30 of 35) | 273.1 (#30 of 35) | +12.6 |
| HTTP/3 | 180.1 (#17 of 19) | 166.1 (#17 of 19) | -13.9 |
| Gateway | 2340.9 (#3 of 9) | 2345.8 (#3 of 9) | +4.9 |
| WebSocket | 597.9 (#26 of 35) | 1019.0 (#21 of 35) | +421.1 |
The results on main were measured in another session, so a few points up or down can be the machine and not the change.
✅ roadrunner-gateway
| Test | Conn | RPS | CPU | Mem | Δ RPS | Δ Mem |
|---|---|---|---|---|---|---|
| gateway-64 | 512 | 154,234 | 5983.7% | 2.9GiB | -0.6% | ~0% |
| gateway-64 | 1024 | 150,585 | 5873.6% | 4.6GiB | -0.2% | +7.0% |
| gateway-h3 | 64 | 81,244 | 5299.5% | 783MiB | -0.3% | -3.9% |
| gateway-h3 | 256 | 58,118 | 4536.9% | 1.7GiB | -0.8% | ~0% |
| production-stack | 256 | 236,088 | 5765.0% | 1.5GiB | +2.1% | +7.1% |
| production-stack | 1024 | 195,191 | 5482.6% | 2.1GiB | +0.3% | -8.7% |
|
@MDA2AV ready to merge, thanks! |
Description
Updates roadrunner to v0.13.1, which reads HTTP/2 sockets with
{active, N}and HTTP/1.1 and WebSocket sockets with{active, N}on TLS (saving a call into the TLS connection process per read), handles complete WebSocket frames in one step, runs each WebSocket session in its connection process, and makes HTTP/3 sturdier under packet loss. Theroadrunner-gatewayentry builds fromframeworks/roadrunner, so it picks up the new version too.The entry also adds a
vm.argsthat runs one I/O poll thread, each with its own pollset, per eight schedulers (+IOPt 13 +IOPp 100), as roadrunner's resource limits guide recommends for many-core servers (docs/resource_limits.md). With the single default poll thread, a server with spare capacity on 64 schedulers was capped by that thread; the setting scales with the cpuset, so it gives 8 threads at 64 schedulers and keeps the default single thread below 16. The rest ofvm.argsis what relx generated before.PR Commands — comment on this PR to trigger (requires collaborator approval):
/benchmark -f <framework>/benchmark -f <framework> -t <test>/benchmark -f <framework> --save/benchmark -f <framework> -t <test> --save/benchmark -f <framework> --compare <other>/benchmark-multiple -f <fw1>,<fw2>,...-tand--savetoo; saved results land in a single commit/benchmark-multiple --save-fneeded: benchmark and save every framework the PR touches/benchmark-test -t <test><test>and save the resultsFor
/benchmark, always specify-f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory — one table per framework on multi runs. A new benchmark comment while a run is in flight queues behind it (one deep) instead of cancelling it. For multi-framework PRs (dependency bumps, same-language refactors) prefer/benchmark-multiple, which runs everything in a single job and commits all saved results together, so no run overwrites another.--compareworks on single-framework runs only.What the deltas are measured against. By default, this framework's own results published on
main- answering "did this change help?". When you are tuning a variant or a successor entry,--comparere-bases them on another entry instead:The reply states which baseline it used, and profiles the other framework does not run show
n/arather than a delta.Run benchmarks locally
You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.
Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk) are built as self-contained Docker images on first run.