Skip to content

sark: update gateway#938

Open
inq wants to merge 12 commits into
MDA2AV:mainfrom
inq:sark-ws
Open

sark: update gateway#938
inq wants to merge 12 commits into
MDA2AV:mainfrom
inq:sark-ws

Conversation

@inq

@inq inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Description

I've updated gateway benchmarks! Thank you always!


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


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.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk, ghz) are built as self-contained Docker images on first run.

@inq

inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq

inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq

inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-production

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq

inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-h3

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-h3 | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline-h3 64 43,395 48.3% 450MiB NEW NEW
static-h3 64 5,207 95.8% 452MiB NEW NEW
Full log
request     :      409us     90.21ms     34.26ms    37.20ms    45.77ms    33.32ms      6.07ms    89.71%
connect     :     3.21ms     20.95ms     10.50ms    20.64ms    20.95ms     9.12ms      4.41ms    75.00%
TTFB        :    13.74ms     54.26ms     43.97ms    54.06ms    54.26ms    36.27ms     12.12ms    82.81%
req/s       :     636.20      963.95      674.11     746.81     963.95     679.23       45.26    93.75%
min RTT     :      327us     18.26ms      6.92ms    11.57ms    18.26ms     7.31ms      3.92ms    76.56%
smoothed RTT:      611us     34.99ms     30.27ms    34.79ms    34.99ms    27.31ms      7.83ms    87.50%
packets sent:        272         277         275        277        277     275.09        1.33    78.13%
packets recv:        162         215         169        185        215     170.30        8.20    87.50%
packets lost:          0           4           0          4          4       0.98        1.70    76.56%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 48.3% | Mem 450MiB

[run 3/3]
starting benchmark...
.
23.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: ED25519 256 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
16. Stopping all clients.
. Stopping all clients.Stopped all clients for thread #0

46. Stopping all clients.Main benchmark duration is over for thread #24. Stopping all clients.

61. Stopping all clients.
34. Stopping all clients.

finished in 5.01s, 43074.20 req/s, 504.86KB/s
requests: 215371 total, 219467 started, 215371 done, 215371 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 215371 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.47MB (2584900) total, 1.44MB (1507597) headers (space savings 85.11%), 210.32KB (215371) data
UDP datagram: 17477 sent, 10802 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      534us     94.78ms     34.77ms    36.98ms    45.33ms    33.99ms      5.79ms    91.56%
connect     :     4.43ms     12.93ms      8.11ms    12.48ms    12.93ms     9.01ms      2.62ms    60.94%
TTFB        :    15.57ms     48.57ms     31.16ms    48.27ms    48.57ms    36.79ms     10.34ms    68.75%
req/s       :     639.94      781.63      661.82     738.62     781.63     672.85       30.46    85.94%
min RTT     :      471us     12.13ms      7.14ms    11.63ms    12.13ms     7.24ms      2.95ms    65.63%
smoothed RTT:     3.55ms     36.21ms     31.66ms    35.21ms    36.21ms    27.20ms      8.92ms    82.81%
packets sent:        272         277         275        277        277     275.08        1.30    75.00%
packets recv:        163         189         166        182        189     168.78        6.14    85.94%
packets lost:          0           4           0          4          4       0.69        1.47    84.38%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 35.3% | Mem 476MiB

=== Best: 43395 req/s (CPU: 48.3%, Mem: 450MiB) ===
[info] saved results/baseline-h3/64/sark-h3.json
httparena-bench-sark-h3
httparena-bench-sark-h3

==============================================
=== sark-h3 / static-h3 / 64c (tool=h2load-h3) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: ED25519 256 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
49. Stopping all clients.
3. Stopping all clients.
21. Stopping all clients.
14. Stopping all clients.

8. Stopping all clients.

51. Stopping all clients.

finished in 5.01s, 5217.40 req/s, 80.98MB/s
requests: 26087 total, 30183 started, 26087 done, 26087 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 26090 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 404.91MB (424579716) total, 463.58KB (474705) headers (space savings 73.39%), 404.32MB (423958453) data
UDP datagram: 201007 sent, 379444 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    22.95ms       4.07s    243.53ms      1.01s      2.69s   394.16ms    476.55ms    93.96%
connect     :     1.38ms     40.83ms     38.69ms    40.49ms    40.83ms    26.89ms     15.55ms    75.00%
TTFB        :    25.76ms    103.23ms     91.60ms   101.83ms   103.23ms    72.13ms     25.59ms    65.63%
req/s       :      12.59      246.38       50.89     234.77     246.38      81.51       67.66    79.69%
min RTT     :        0us      1.12ms       420us      982us     1.12ms      494us       235us    73.44%
smoothed RTT:      363us    333.00ms       951us     3.17ms   333.00ms    17.01ms     70.64ms    95.31%
packets sent:        510        9168        1947       8794       9168    3142.73     2498.31    79.69%
packets recv:        896       17773        3613      16948      17773    5928.81     4885.80    79.69%
packets lost:         18         222          84        209        222     103.11       52.94    71.88%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 95.8% | Mem 452MiB

[run 2/3]
starting benchmark...

37.
42.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: ED25519 256 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
48.
. Stopping all clients.Stopped all clients for thread #3

. Stopping all clients.Main benchmark duration is over for thread #
29Stopped all clients for thread #36
. Stopping all clients.
34
40


finished in 5.01s, 5194.60 req/s, 80.95MB/s
requests: 25973 total, 30069 started, 25973 done, 25973 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 25996 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 404.77MB (424435684) total, 460.79KB (471848) headers (space savings 73.50%), 404.18MB (423817784) data
UDP datagram: 203180 sent, 377616 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     9.84ms       4.28s    252.85ms   895.89ms      2.56s   412.15ms    438.78ms    94.19%
connect     :     3.04ms     23.04ms     10.76ms    22.76ms    23.04ms    12.42ms      7.09ms    43.75%
TTFB        :    12.89ms     70.11ms     47.88ms    69.05ms    70.11ms    46.08ms     15.78ms    53.13%
req/s       :      28.19      170.20       51.09     167.79     170.20      81.16       53.98    70.31%
min RTT     :        0us      1.33ms       515us      926us     1.33ms      582us       204us    78.13%
smoothed RTT:      588us    333.00ms       971us     2.88ms   333.00ms     6.51ms     41.47ms    98.44%
packets sent:       1158        6444        2046       6344       6444    3176.69     1990.22    68.75%
packets recv:       2035       12181        3737      12053      12181    5900.25     3871.79    70.31%
packets lost:         56         205          88        196        205     116.11       52.65    62.50%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 100.3% | Mem 474MiB

[run 3/3]
starting benchmark...
1.
61.Main benchmark duration is started for thread #4844.

52.
7.
35.
29.

27.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: ED25519 256 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
17. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #7. Stopping all clients.

24
20. Stopping all clients.

finished in 5.01s, 4994.00 req/s, 77.91MB/s
requests: 24970 total, 29066 started, 24970 done, 24970 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 24990 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 389.57MB (408491692) total, 442.43KB (453044) headers (space savings 73.54%), 389.00MB (407898247) data
UDP datagram: 197724 sent, 366290 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    13.64ms       4.05s    295.00ms      1.18s      2.67s   467.25ms    496.43ms    94.22%
connect     :     3.51ms     29.16ms     13.33ms    28.85ms    29.16ms    12.26ms      6.85ms    75.00%
TTFB        :    17.29ms     80.18ms     69.41ms    79.57ms    80.18ms    56.00ms     20.99ms    53.13%
req/s       :      28.79      163.38       57.09     154.17     163.38      78.02       46.01    68.75%
min RTT     :        0us      1.12ms       501us     1.02ms     1.12ms      564us       223us    76.56%
smoothed RTT:      427us    333.00ms      1.06ms     2.85ms   333.00ms    11.65ms     58.18ms    96.88%
packets sent:       1213        6179        2386       5830       6179    3091.44     1701.51    67.19%
packets recv:       2069       11775        4334      11116      11775    5723.28     3319.84    67.19%
packets lost:         56         191          99        187        191     115.75       44.93    59.38%
GRO packets :          1           1           1          1          1       1.00        0.00   100.00%
[info] CPU 100.3% | Mem 511MiB

=== Best: 5207 req/s (CPU: 95.8%, Mem: 452MiB) ===
[info] saved results/static-h3/64/sark-h3.json
httparena-bench-sark-h3
httparena-bench-sark-h3
[info] skip: sark-h3 does not subscribe to gateway-64
[info] skip: sark-h3 does not subscribe to gateway-h3
[info] skip: sark-h3 does not subscribe to production-stack
[info] skip: sark-h3 does not subscribe to unary-grpc
[info] skip: sark-h3 does not subscribe to unary-grpc-tls
[info] skip: sark-h3 does not subscribe to stream-grpc
[info] skip: sark-h3 does not subscribe to stream-grpc-tls
[info] skip: sark-h3 does not subscribe to echo-ws
[info] skip: sark-h3 does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-production

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-production | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
production-stack 256 0 300.3% 109MiB NEW NEW
production-stack 1024 0 300.7% 167MiB NEW NEW
Full log
Server Temp Key: X25519 253 bits
Application protocol: h2
57. Stopping all clients.Stopped all clients for thread #34

12. Stopping all clients.
4Stopped all clients for thread #. Stopping all clients.12

26. Stopping all clients.
. Stopping all clients.
. Stopping all clients.
39Stopped all clients for thread #32
53Main benchmark duration is over for thread #41Main benchmark duration is over for thread #
. Stopping all clients.
61. Stopping all clients.


. Stopping all clients.Stopped all clients for thread #
29

25. Stopping all clients.

finished in 5.06s, 160118.40 req/s, 9.06MB/s
requests: 800592 total, 816976 started, 800592 done, 0 succeeded, 800592 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 800592 4xx, 0 5xx
traffic: 45.30MB (47503663) total, 2.34MB (2455024) headers (space savings 95.45%), 11.18MB (11727030) data
                     min         max         mean         sd        +/- sd
time for request:     4.32ms    139.61ms     73.20ms     27.42ms    66.09%
time for connect:     2.83ms       3.22s       1.37s    972.22ms    56.05%
time to 1st byte:    18.89ms       3.35s       1.45s       1.01s    55.96%
req/s           :      57.59      313.57      156.33       73.63    63.18%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 14121.60 req/s, 1.25MB/s
requests: 70608 total, 71632 started, 70608 done, 0 succeeded, 70608 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 70608 4xx, 0 5xx
traffic: 6.27MB (6570964) total, 210.07KB (215114) headers (space savings 95.31%), 1.41MB (1482768) data
                     min         max         mean         sd        +/- sd
time for request:     1.89ms    107.78ms     52.47ms     31.65ms    47.95%
time for connect:     3.55ms     22.77ms     13.16ms      5.79ms    58.59%
time to 1st byte:    22.45ms     61.14ms     30.75ms      9.38ms    88.30%
req/s           :       0.00      158.39      110.31       66.83    73.44%
[info] CPU 300.7% | Mem 167MiB
[info]   edge: 0% 0MiB | cache: 0% 4MiB | authsvc: 0% 2MiB | server: 300% 160MiB

[run 2/3]
=== h2load-reads ===
starting benchmark...
.

62.Warm-up phase is over for thread #5.



20.
8.
59.
34.
44.
28.

55.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

23Main benchmark duration is started for thread #24.
.
.



14. Stopping all clients.

finished in 5.07s, 163987.20 req/s, 9.12MB/s
requests: 819936 total, 836320 started, 819936 done, 0 succeeded, 819936 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 819936 4xx, 0 5xx
traffic: 45.60MB (47819926) total, 2.40MB (2513056) headers (space savings 95.45%), 11.45MB (12010614) data
                     min         max         mean         sd        +/- sd
time for request:     3.84ms    140.78ms     72.57ms     26.96ms    71.04%
time for connect:     2.77ms       3.13s       1.31s    961.98ms    55.27%
time to 1st byte:    14.82ms       3.27s       1.39s    997.99ms    55.47%
req/s           :      60.79      300.79      160.12       72.96    59.38%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 11296.00 req/s, 1.32MB/s
requests: 56480 total, 57504 started, 56480 done, 0 succeeded, 56480 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 56480 4xx, 0 5xx
traffic: 6.60MB (6916974) total, 168.10KB (172135) headers (space savings 95.31%), 1.13MB (1186080) data
                     min         max         mean         sd        +/- sd
time for request:     2.40ms    107.92ms     53.78ms     30.89ms    49.46%
time for connect:     3.01ms     23.24ms     13.47ms      6.07ms    58.59%
time to 1st byte:    23.46ms     68.99ms     34.52ms     13.65ms    79.22%
req/s           :       0.00      153.60       88.24       72.15    60.16%
[info] CPU 300.5% | Mem 172MiB
[info]   edge: 0% 0MiB | cache: 0% 4MiB | authsvc: 0% 2MiB | server: 300% 166MiB

[run 3/3]
=== h2load-reads ===
starting benchmark...
6Main benchmark duration is started for thread #29.
.
4.
37.
progress: Main benchmark duration is started for thread #15.
12% of clients started
50.

.

.Main benchmark duration is started for thread #45.
26Main benchmark duration is started for thread #21.
.Warm-up phase is over for thread #4613Warm-up phase is over for thread #.


25Main benchmark duration is started for thread #23.
% of clients started.

51.

.Warm-up phase is over for thread #progress: 
2460Main benchmark duration is started for thread #.
.
.Warm-up phase is over for thread #


.32
46.
25.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
4655
54
7. Stopping all clients.
25
. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #60. Stopping all clients.

17
59Stopped all clients for thread #36
. Stopping all clients.

finished in 5.06s, 160236.80 req/s, 8.95MB/s
requests: 801184 total, 817568 started, 801184 done, 0 succeeded, 801184 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 801184 4xx, 0 5xx
traffic: 44.76MB (46937212) total, 2.34MB (2456800) headers (space savings 95.45%), 11.19MB (11733750) data
                     min         max         mean         sd        +/- sd
time for request:     3.62ms    140.66ms     70.44ms     28.39ms    69.29%
time for connect:     3.93ms       3.40s       1.52s    994.29ms    56.64%
time to 1st byte:    11.55ms       3.54s       1.60s       1.03s    56.74%
req/s           :      51.19      371.15      156.45       81.76    66.11%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
7. Stopping all clients.

finished in 5.00s, 14246.40 req/s, 1.34MB/s
requests: 71232 total, 72256 started, 71232 done, 0 succeeded, 71232 failed, 0 errored, 0 timeout
status codes: 0 2xx, 0 3xx, 71232 4xx, 0 5xx
traffic: 6.68MB (7009293) total, 211.32KB (216391) headers (space savings 95.33%), 1.43MB (1495872) data
                     min         max         mean         sd        +/- sd
time for request:     2.01ms    107.26ms     42.62ms     32.53ms    57.05%
time for connect:     3.17ms     22.19ms     12.87ms      5.69ms    56.25%
time to 1st byte:    22.15ms     47.44ms     26.84ms      6.24ms    89.61%
req/s           :       0.00      195.18      111.28       91.05    60.16%
[info] CPU 300.6% | Mem 175MiB
[info]   edge: 0% 0MiB | cache: 0% 4MiB | authsvc: 0% 2MiB | server: 300% 169MiB

=== Best: 0 req/s (CPU: 300.7%, Mem: 167MiB) ===
[info] saved results/production-stack/1024/sark-production.json
[info] skip: sark-production does not subscribe to unary-grpc
[info] skip: sark-production does not subscribe to unary-grpc-tls
[info] skip: sark-production does not subscribe to stream-grpc
[info] skip: sark-production does not subscribe to stream-grpc-tls
[info] skip: sark-production does not subscribe to echo-ws
[info] skip: sark-production does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/production-stack-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/production-stack-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 28, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq

inq commented Jun 28, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 3,966,563 6454.5% 1.1GiB -0.5% ~0%
baseline 4096 4,125,496 6273.7% 1.2GiB -1.8% ~0%
pipelined 512 53,739,450 6348.0% 1.1GiB +34.1% ~0%
pipelined 4096 57,145,513 6385.1% 1.2GiB +39.8% ~0%
limited-conn 512 2,437,832 5953.8% 1.3GiB -0.2% ~0%
limited-conn 4096 2,678,276 6106.9% 1.3GiB -0.1% ~0%
json 4096 1,831,471 6427.3% 1.3GiB +1.1% ~0%
json-comp 512 6,713 3648.4% 1.7GiB -98.9% +30.8%
json-comp 4096 7,093 3980.3% 1.7GiB -98.9% +30.8%
json-comp 16384 6,621 4072.4% 1.7GiB -99.0% +30.8%
json-tls 4096 1,822,018 5737.0% 1.3GiB -0.2% ~0%
upload 32 2,705 1930.6% 1.1GiB -0.8% ~0%
upload 256 2,629 5217.9% 1.2GiB -1.4% ~0%
api-4 256 66,500 383.9% 180MiB -1.6% -1.1%
api-16 1024 259,533 1512.5% 398MiB +1.5% ~0%
static 1024 1,365,995 6436.9% 2.4GiB +0.4% ~0%
static 4096 1,293,576 6418.7% 2.6GiB ~0% +4.0%
static 6800 1,218,564 6313.6% 2.6GiB +0.1% ~0%
async-db 1024 347,789 3071.8% 1.3GiB +0.4% -7.1%
crud 4096 543,752 1567.7% 1.3GiB -0.8% ~0%
fortunes 1024 246,787 6033.1% 1.2GiB +0.1% ~0%
baseline-h2 256 9,377,952 4626.6% 1.1GiB -9.4% ~0%
baseline-h2 1024 9,568,792 5014.9% 1.3GiB -9.0% ~0%
static-h2 256 889,322 4484.1% 1.4GiB +15.6% -6.7%
static-h2 1024 857,206 3942.8% 2.1GiB +4.9% +5.0%
baseline-h2c 256 11,647,534 5835.7% 1.1GiB -1.5% ~0%
baseline-h2c 1024 12,314,435 6423.1% 1.1GiB -1.8% ~0%
baseline-h2c 4096 12,106,267 6431.2% 1.2GiB -1.9% -7.7%
json-h2c 1024 3,261,383 6559.3% 1.3GiB +0.6% ~0%
json-h2c 4096 1,973,242 6411.5% 1.9GiB -0.1% ~0%
unary-grpc 256 370,563 197.6% 1.1GiB ~0% ~0%
unary-grpc 1024 1,473,467 2048.7% 1.2GiB ~0% ~0%
unary-grpc-tls 256 5,549,781 5589.3% 1.1GiB -3.3% ~0%
unary-grpc-tls 1024 5,636,067 6009.1% 1.2GiB -2.7% -7.7%
stream-grpc 64 9,659,000 87.7% 1.1GiB -2.6% ~0%
stream-grpc-tls 64 9,869,000 93.3% 1.1GiB +3.4% ~0%
echo-ws 512 4,257,596 6288.1% 1.1GiB +1.9% ~0%
echo-ws 4096 4,405,260 6237.2% 1.2GiB +0.2% ~0%
echo-ws 16384 4,078,615 6125.8% 1.6GiB ~0% ~0%
echo-ws-pipeline 512 64,247,459 6316.9% 1.1GiB +1.9% ~0%
echo-ws-pipeline 4096 66,443,625 6215.1% 1.2GiB +2.8% ~0%
echo-ws-pipeline 16384 61,314,115 6375.1% 1.6GiB +0.6% ~0%
Full log
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.33ms   1.25ms   1.65ms   1.96ms   5.45ms

  224559904 frames sent in 5.00s, 224497104 frames received
  Throughput: 44.89M req/s
  Bandwidth:  299.75MB/s
  WS upgrades: 4096
  WS frames:   224497104
  Latency samples: 224497104 / 224497104 responses (100.0%)
[info] CPU 3517.0% | Mem 1.2GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    997us    989us   1.21ms   1.39ms   1.83ms

  328484112 frames sent in 5.00s, 328474112 frames received
  Throughput: 65.67M req/s
  Bandwidth:  438.41MB/s
  WS upgrades: 4096
  WS frames:   328474112
  Latency samples: 328484288 / 328474112 responses (100.0%)
[info] CPU 6407.4% | Mem 1.2GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    985us    987us   1.20ms   1.33ms   1.47ms

  332208400 frames sent in 5.00s, 332218128 frames received
  Throughput: 66.42M req/s
  Bandwidth:  443.37MB/s
  WS upgrades: 4096
  WS frames:   332218128
  Latency samples: 332202160 / 332218128 responses (100.0%)
[info] CPU 6215.1% | Mem 1.2GiB

=== Best: 66443625 req/s (CPU: 6215.1%, Mem: 1.2GiB) ===
[info] saved results/echo-ws-pipeline/4096/sark.json
httparena-bench-sark
httparena-bench-sark

==============================================
=== sark / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.34ms   5.08ms   6.80ms   7.53ms   9.50ms

  209355219 frames sent in 5.00s, 209093139 frames received
  Throughput: 41.81M req/s
  Bandwidth:  279.49MB/s
  WS upgrades: 16380
  WS frames:   209093139
  Latency samples: 209093139 / 209093139 responses (100.0%)
[info] CPU 3341.5% | Mem 1.5GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.23ms   4.29ms   4.66ms   4.97ms   6.32ms

  306832721 frames sent in 5.00s, 306570577 frames received
  Throughput: 61.29M req/s
  Bandwidth:  409.57MB/s
  WS upgrades: 16384
  WS frames:   306570577
  Latency samples: 306570577 / 306570577 responses (100.0%)
[info] CPU 6375.1% | Mem 1.6GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.29ms   4.33ms   4.71ms   5.06ms   5.88ms

  304210976 frames sent in 5.00s, 303948832 frames received
  Throughput: 60.77M req/s
  Bandwidth:  406.06MB/s
  WS upgrades: 16384
  WS frames:   303948832
  Latency samples: 303948832 / 303948832 responses (100.0%)
[info] CPU 6138.0% | Mem 1.7GiB

=== Best: 61314115 req/s (CPU: 6375.1%, Mem: 1.6GiB) ===
[info] saved results/echo-ws-pipeline/16384/sark.json
httparena-bench-sark
httparena-bench-sark
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/stream-grpc-tls-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-tls-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-tls-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-production

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-production | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
production-stack 256 31,009 351.5% 374MiB NEW NEW
production-stack 1024 26,721 338.5% 719MiB NEW NEW
Full log



43. Stopping all clients.Stopped all clients for thread #Stopped all clients for thread #Main benchmark duration is over for thread #1958
. Stopping all clients.
10

58

54. Stopping all clients.
54
. Stopping all clients.Stopped all clients for thread #39

28. Stopping all clients.

finished in 5.05s, 25573.60 req/s, 341.77MB/s
requests: 127868 total, 144252 started, 127868 done, 127868 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 127868 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 1.67GB (1791877753) total, 11.96MB (12544680) headers (space savings 38.85%), 1.65GB (1775289012) data
                     min         max         mean         sd        +/- sd
time for request:       92us       4.46s    119.69ms    187.93ms    92.08%
time for connect:     9.87ms    573.19ms    190.92ms    136.09ms    71.39%
time to 1st byte:   136.65ms       1.10s    578.30ms    246.67ms    63.09%
req/s           :       3.20      301.15       24.97       51.03    89.94%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 1415.00 req/s, 63.41KB/s
requests: 7075 total, 8099 started, 7075 done, 7075 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 7075 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 317.04KB (324647) total, 248.73KB (254700) headers (space savings 40.98%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:    43.45ms       1.62s    162.68ms    240.00ms    93.77%
time for connect:     2.97ms     41.31ms     20.15ms     10.54ms    58.59%
time to 1st byte:   486.90ms       1.65s       1.15s    430.53ms    72.50%
req/s           :       0.00       99.19       11.05       24.18    89.06%
[info] CPU 338.5% | Mem 719MiB
[info]   edge: 235% 578MiB | cache: 23% 6MiB | authsvc: 29% 35MiB | server: 51% 100MiB

[run 2/3]
=== h2load-reads ===
starting benchmark...
1Main benchmark duration is started for thread #4.
.
.Main benchmark duration is started for thread #42.


38Main benchmark duration is started for thread #44.Main benchmark duration is started for thread #.
.
25.
59.

..
45.
13.
.

35.
% of clients started
31.
22.
3progress: .50% of clients started

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
2. Stopping all clients.
25. Stopping all clients.
13. Stopping all clients.
. Stopping all clients.


34. Stopping all clients.
44
53

22Stopped all clients for thread #43

54

finished in 5.06s, 17002.80 req/s, 244.30MB/s
requests: 85014 total, 101398 started, 85014 done, 85014 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 85014 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 1.19GB (1280847358) total, 8.17MB (8569775) headers (space savings 38.52%), 1.18GB (1269486160) data
                     min         max         mean         sd        +/- sd
time for request:       86us       3.98s    233.16ms    407.47ms    89.01%
time for connect:    18.94ms    784.40ms    333.26ms    232.25ms    57.91%
time to 1st byte:    82.83ms       1.97s       1.14s    503.19ms    61.13%
req/s           :       3.20      197.18       16.60       30.48    90.43%
=== h2load-writes ===
starting benchmark...
5Main benchmark duration is started for thread #7.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 9579.60 req/s, 422.20KB/s
requests: 47898 total, 48922 started, 47898 done, 47898 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 47898 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.06MB (2161682) total, 1.64MB (1724328) headers (space savings 40.98%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:    14.49ms       2.82s     62.34ms    197.44ms    97.82%
time for connect:     2.60ms     41.15ms     19.23ms     10.40ms    59.38%
time to 1st byte:    79.06ms       1.94s    644.52ms    643.18ms    82.81%
req/s           :       1.60      236.78       74.83      103.67    71.09%
[info] CPU 346.4% | Mem 728MiB
[info]   edge: 232% 586MiB | cache: 23% 6MiB | authsvc: 40% 33MiB | server: 51% 104MiB

[run 3/3]
=== h2load-reads ===
starting benchmark...
62.
.
.Main benchmark duration is started for thread #26.

progress: Warm-up phase is over for thread #Main benchmark duration is started for thread #32.
17.
93% of clients started
.Main benchmark duration is started for thread #58.
14.

.Main benchmark duration is started for thread #42.

11.
0.
.
52.
15.
56Warm-up phase is over for thread #Main benchmark duration is started for thread #1816.
.


50.
.
.
44.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
3236
15. Stopping all clients.

52. Stopping all clients.

19
0. Stopping all clients.

finished in 5.06s, 23182.20 req/s, 315.50MB/s
requests: 115911 total, 132295 started, 115911 done, 115911 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 115911 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 1.54GB (1654115595) total, 10.92MB (11448863) headers (space savings 38.77%), 1.53GB (1638967623) data
                     min         max         mean         sd        +/- sd
time for request:       96us       1.79s    144.89ms    231.95ms    90.45%
time for connect:    22.11ms    519.17ms    240.29ms    130.86ms    59.08%
time to 1st byte:    87.62ms       1.25s    818.02ms    250.87ms    68.85%
req/s           :       3.20      326.58       22.63       48.83    91.89%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 3650.40 req/s, 161.64KB/s
requests: 18252 total, 19276 started, 18252 done, 18252 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 18252 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 808.21KB (827612) total, 641.67KB (657072) headers (space savings 40.98%), 0B (0) data
                     min         max         mean         sd        +/- sd
time for request:    41.94ms       1.71s    122.72ms    214.08ms    96.27%
time for connect:     2.54ms     54.04ms     21.41ms     13.71ms    63.28%
time to 1st byte:    72.43ms       1.67s    458.14ms    451.07ms    78.13%
req/s           :       1.60      110.39       28.51       38.68    78.91%
[info] CPU 344.3% | Mem 730MiB
[info]   edge: 241% 587MiB | cache: 18% 6MiB | authsvc: 37% 33MiB | server: 48% 104MiB

=== Best: 26721 req/s (CPU: 338.5%, Mem: 719MiB) ===
[info] saved results/production-stack/1024/sark-production.json
[info] skip: sark-production does not subscribe to unary-grpc
[info] skip: sark-production does not subscribe to unary-grpc-tls
[info] skip: sark-production does not subscribe to stream-grpc
[info] skip: sark-production does not subscribe to stream-grpc-tls
[info] skip: sark-production does not subscribe to echo-ws
[info] skip: sark-production does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/production-stack-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/production-stack-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq

inq commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-gateway | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
gateway-64 512 12,288 371.7% 1.3GiB NEW NEW
gateway-64 1024 6,287 342.7% 2.4GiB NEW NEW
gateway-h3 64 10,009 242.2% 420MiB NEW NEW
gateway-h3 256 8,268 236.1% 1.4GiB NEW NEW
Full log

#12 [proxy 2/2] COPY Caddyfile /etc/caddy/Caddyfile
#12 CACHED

#13 [proxy] exporting to image
#13 exporting layers done
#13 exporting manifest sha256:7bd5c705e67df392440547a4c89b069d5750df7fc8f0ec6fe71998a72c653e2d 0.0s done
#13 exporting config sha256:104ab2bca264e6c94c037a12f0ab81e53d58ced52f8bc30c524da2b036c623d6 0.0s done
#13 ...

#14 [server build 1/5] FROM docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082
#14 resolve docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082 0.1s done
#14 DONE 0.1s

#15 [server stage-1 1/3] FROM docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d
#15 resolve docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d 0.1s done
#15 DONE 0.1s

#10 [server internal] load build context
#10 transferring context: 1.13kB done
#10 DONE 0.0s

#16 [server build 4/5] COPY . .
#16 CACHED

#17 [server build 2/5] RUN apt-get update     && apt-get install -y --no-install-recommends pkg-config libssl-dev protobuf-compiler     && rm -rf /var/lib/apt/lists/*
#17 CACHED

#18 [server build 5/5] RUN RUSTFLAGS="-C target-cpu=native" cargo build --release -p httparena-sark --bin "httparena-sark"
#18 CACHED

#19 [server stage-1 2/3] RUN apt-get update     && apt-get install -y --no-install-recommends ca-certificates     && rm -rf /var/lib/apt/lists/*
#19 CACHED

#20 [server build 3/5] WORKDIR /build
#20 CACHED

#21 [server stage-1 3/3] COPY --from=build /build/target/release/httparena-sark /server
#21 CACHED

#13 [proxy] exporting to image
#13 exporting attestation manifest sha256:0064c5900ad61b591c8e41ae424f13794d4ceef48e30ae16e38214adb61a8e5d 0.1s done
#13 exporting manifest list sha256:9b1835eb959e1ac32fd429eaa8dbcf26b1409343ac4932cc6d273fc58567c628
#13 exporting manifest list sha256:9b1835eb959e1ac32fd429eaa8dbcf26b1409343ac4932cc6d273fc58567c628 0.0s done
#13 naming to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#13 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#13 DONE 0.3s

#22 [server] exporting to image
#22 exporting layers done
#22 exporting manifest sha256:3f083aed96286f796cb91860a138073bf062366dc3177ea55201cd1c6accb2d9 0.0s done
#22 exporting config sha256:841b217860c03a868cf7187b4183dc2b54f0ef8a6e4d69e35d2bb87d638e1baa 0.0s done
#22 exporting attestation manifest sha256:50a7d727062ea52789a8f95516285a02119887d0299c9c5378b83c2ef06ca559 0.1s done
#22 exporting manifest list sha256:8cf77120658b81c23a480368c7dcf7729a139ae8f636f5396f88a312713fb3c6
#22 exporting manifest list sha256:8cf77120658b81c23a480368c7dcf7729a139ae8f636f5396f88a312713fb3c6 0.0s done
#22 naming to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 DONE 0.3s

#23 [proxy] resolving provenance for metadata file
#23 DONE 0.0s

#24 [server] resolving provenance for metadata file
#24 DONE 0.0s
 Image httparena-sark-gateway-gateway-h3-server Built 
 Image httparena-sark-gateway-gateway-h3-proxy Built 
 Container httparena-sark-gateway-gateway-h3-server-1 Creating 
 Container httparena-sark-gateway-gateway-h3-server-1 Created 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Creating 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Created 
 Container httparena-sark-gateway-gateway-h3-server-1 Starting 
 Container httparena-sark-gateway-gateway-h3-server-1 Started 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Starting 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Started 
[info] gateway containers: 2 (10ea18bfcc1c 2e3e838dbe18 )
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
7Warm-up phase is over for thread #.
13.
36.
59.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

finished in 5.03s, 6829.40 req/s, 71.59MB/s
requests: 34147 total, 42339 started, 34147 done, 34138 succeeded, 9 failed, 0 errored, 0 timeout
status codes: 38321 2xx, 0 3xx, 9 4xx, 0 5xx
traffic: 357.94MB (375325981) total, 2.73MB (2864765) headers (space savings 55.18%), 354.97MB (372214278) data
UDP datagram: 58090 sent, 275395 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    13.67ms       4.81s    691.58ms      2.46s      3.67s   906.07ms    695.04ms    87.30%
connect     :     3.76ms    939.60ms    169.59ms   404.86ms   700.36ms   193.45ms    138.22ms    70.70%
TTFB        :   173.38ms       1.63s    698.93ms      1.25s      1.55s   708.54ms    329.26ms    68.36%
req/s       :      15.80       57.19       25.49      40.80      48.40      26.67        7.13    72.27%
min RTT     :      561us    156.81ms     17.23ms    88.02ms   152.77ms    28.44ms     27.61ms    86.72%
smoothed RTT:    67.32ms    407.08ms    150.40ms   266.29ms   368.85ms   158.79ms     53.58ms    76.56%
packets sent:        131         390         229        307        357     228.91       46.91    67.97%
packets recv:        564        2538        1012       1717       2082    1077.76      340.09    70.31%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           1         10         10       2.72        2.81    85.21%
[info] CPU 228.5% | Mem 837MiB
[info]   server: 28% 56MiB | proxy: 200% 781MiB

[run 2/3]
starting benchmark...
54Main benchmark duration is started for thread #.59
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

41Stopped all clients for thread #56
. Stopping all clients.

finished in 5.03s, 7353.80 req/s, 74.70MB/s
requests: 36769 total, 44961 started, 36769 done, 36754 succeeded, 15 failed, 0 errored, 0 timeout
status codes: 41583 2xx, 0 3xx, 15 4xx, 0 5xx
traffic: 373.48MB (391620317) total, 2.95MB (3093130) headers (space savings 55.25%), 370.27MB (388261374) data
UDP datagram: 63612 sent, 288267 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    24.38ms       4.89s    631.41ms      2.50s      3.68s   844.97ms    699.89ms    88.78%
connect     :     3.74ms    592.87ms    104.81ms   168.84ms   592.00ms   122.65ms     68.84ms    96.88%
TTFB        :    89.39ms       1.21s    408.03ms   920.73ms      1.11s   449.03ms    230.43ms    69.92%
req/s       :      18.00       53.60       27.80      42.80      47.59      28.72        6.75    69.53%
min RTT     :      119us    103.01ms     13.06ms    63.40ms    94.73ms    19.10ms     18.67ms    86.72%
smoothed RTT:    54.52ms    287.64ms    113.61ms   168.71ms   221.62ms   119.87ms     31.71ms    74.61%
packets sent:        143         421         245        349        408     250.48       52.16    68.36%
packets recv:        604        2327        1087       1749       1972    1128.04      301.72    69.14%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           1         10         10       2.52        2.68    86.77%
[info] CPU 234.2% | Mem 1.1GiB
[info]   server: 34% 74MiB | proxy: 200% 1.0GiB

[run 3/3]
starting benchmark...
61.

.
42.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

48. Stopping all clients.
61. Stopping all clients.

finished in 5.02s, 7338.60 req/s, 74.44MB/s
requests: 36693 total, 44885 started, 36693 done, 36671 succeeded, 22 failed, 0 errored, 0 timeout
status codes: 41507 2xx, 0 3xx, 22 4xx, 0 5xx
traffic: 372.20MB (390275173) total, 2.94MB (3086890) headers (space savings 55.25%), 369.00MB (386923131) data
UDP datagram: 63826 sent, 286797 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    13.03ms       4.84s    632.01ms      2.49s      3.68s   845.63ms    692.31ms    88.63%
connect     :     3.80ms    380.87ms    130.21ms   343.36ms   372.02ms   143.66ms     70.65ms    80.08%
TTFB        :   125.91ms       1.25s    420.77ms   950.48ms      1.15s   443.32ms    223.94ms    75.00%
req/s       :      18.60       56.59       27.60      42.20      50.20      28.66        6.92    71.88%
min RTT     :      369us    132.25ms     12.93ms    70.59ms   101.48ms    24.04ms     23.37ms    82.81%
smoothed RTT:    48.88ms    293.01ms    123.00ms   189.80ms   236.24ms   128.03ms     34.50ms    74.22%
packets sent:        140         446         247        355        407     251.32       54.34    71.88%
packets recv:        654        2406        1062       1750       2122    1122.30      309.23    72.27%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          14           1         10         10       2.54        2.70    86.76%
[info] CPU 236.1% | Mem 1.4GiB
[info]   server: 36% 80MiB | proxy: 200% 1.3GiB

=== Best: 8268 req/s (CPU: 236.1%, Mem: 1.4GiB) ===
[info] saved results/gateway-h3/256/sark-gateway.json
[info] skip: sark-gateway does not subscribe to production-stack
[info] skip: sark-gateway does not subscribe to unary-grpc
[info] skip: sark-gateway does not subscribe to unary-grpc-tls
[info] skip: sark-gateway does not subscribe to stream-grpc
[info] skip: sark-gateway does not subscribe to stream-grpc-tls
[info] skip: sark-gateway does not subscribe to echo-ws
[info] skip: sark-gateway does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-gateway | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
gateway-64 512 12,945 356.4% 1.4GiB NEW NEW
gateway-64 1024 8,497 361.5% 2.6GiB NEW NEW
gateway-h3 64 10,298 242.1% 408MiB NEW NEW
gateway-h3 256 8,392 240.3% 1.1GiB NEW NEW
Full log
#12 DONE 0.1s

#13 [server build 1/5] FROM docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082
#13 resolve docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082 0.1s done
#13 DONE 0.1s

#14 [proxy 2/2] COPY Caddyfile /etc/caddy/Caddyfile
#14 CACHED

#8 [server internal] load build context
#8 transferring context: 1.13kB done
#8 DONE 0.0s

#15 [server build 4/5] COPY . .
#15 CACHED

#16 [server build 5/5] RUN RUSTFLAGS="-C target-cpu=native" cargo build --release -p httparena-sark --bin "httparena-sark"
#16 CACHED

#17 [server stage-1 2/3] RUN apt-get update     && apt-get install -y --no-install-recommends ca-certificates     && rm -rf /var/lib/apt/lists/*
#17 CACHED

#18 [server build 2/5] RUN apt-get update     && apt-get install -y --no-install-recommends pkg-config libssl-dev protobuf-compiler     && rm -rf /var/lib/apt/lists/*
#18 CACHED

#19 [server build 3/5] WORKDIR /build
#19 CACHED

#20 [server stage-1 3/3] COPY --from=build /build/target/release/httparena-sark /server
#20 CACHED

#21 [proxy] exporting to image
#21 exporting layers done
#21 exporting manifest sha256:7bd5c705e67df392440547a4c89b069d5750df7fc8f0ec6fe71998a72c653e2d done
#21 exporting config sha256:104ab2bca264e6c94c037a12f0ab81e53d58ced52f8bc30c524da2b036c623d6 done
#21 exporting attestation manifest sha256:4a74008f99cf87f8a1c78378f7555d146f2049035e8e5588f5f4ca7a9cf86628 0.1s done
#21 exporting manifest list sha256:e0fac236fe283cf8d51dc6b761a5e2f26a8a0af4609e7d9e51b1dc453dac1693
#21 exporting manifest list sha256:e0fac236fe283cf8d51dc6b761a5e2f26a8a0af4609e7d9e51b1dc453dac1693 0.0s done
#21 naming to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#21 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#21 DONE 0.2s

#22 [server] exporting to image
#22 exporting layers done
#22 exporting manifest sha256:036cd93774b0005b736ee01b41c308e33a729618a5791f953f082c27d6382978 0.0s done
#22 exporting config sha256:59f0f73019b22e9b4fa0745e7b72864cbefc998af9183a81dac9a90a2082a578 0.0s done
#22 exporting attestation manifest sha256:abf8ae9791b75ff7c0fa08ea48b09f8ba4c62368e53a49beccaee30a6f60f2ee 0.1s done
#22 exporting manifest list sha256:3f1d2bce9765b02cf4d3423d3ccfaf2b3b186c32b013b2dcaf16a92fc463c48c 0.0s done
#22 naming to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest done
#22 DONE 0.2s

#23 [proxy] resolving provenance for metadata file
#23 DONE 0.0s

#24 [server] resolving provenance for metadata file
#24 DONE 0.0s
 Image httparena-sark-gateway-gateway-h3-server Built 
 Image httparena-sark-gateway-gateway-h3-proxy Built 
 Container httparena-sark-gateway-gateway-h3-server-1 Creating 
 Container httparena-sark-gateway-gateway-h3-server-1 Created 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Creating 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Created 
 Container httparena-sark-gateway-gateway-h3-server-1 Starting 
 Container httparena-sark-gateway-gateway-h3-server-1 Started 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Starting 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Started 
[info] gateway containers: 2 (49b6f952f235 058bcf06b448 )
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
.
21.
17.
37.
33.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
. Stopping all clients.
. Stopping all clients.Main benchmark duration is over for thread #
9. Stopping all clients.
21. Stopping all clients.
12. Stopping all clients.
58. Stopping all clients.
47. Stopping all clients.

finished in 5.03s, 6841.00 req/s, 70.88MB/s
requests: 34205 total, 42397 started, 34205 done, 34200 succeeded, 5 failed, 0 errored, 0 timeout
status codes: 38587 2xx, 0 3xx, 5 4xx, 0 5xx
traffic: 354.39MB (371607031) total, 2.74MB (2872881) headers (space savings 55.30%), 351.42MB (368486306) data
UDP datagram: 57937 sent, 272758 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    24.67ms       4.92s    678.13ms      2.72s      3.90s   920.94ms    756.17ms    87.91%
connect     :     5.86ms    948.78ms    194.32ms   253.78ms   662.48ms   167.11ms    112.23ms    80.47%
TTFB        :   136.64ms       1.68s    705.25ms      1.32s      1.65s   741.49ms    344.51ms    64.45%
req/s       :      17.00       48.60       25.10      39.00      43.59      26.72        6.11    69.14%
min RTT     :      445us     95.47ms     14.22ms    63.43ms    83.73ms    23.30ms     20.11ms    76.95%
smoothed RTT:    53.44ms    329.13ms    134.17ms   213.42ms   297.76ms   138.24ms     43.05ms    71.09%
packets sent:        131         350         224        305        328     228.32       43.58    66.80%
packets recv:        585        2146         997       1676       1896    1067.46      288.35    67.58%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          14           1         10         10       2.66        2.80    85.71%
[info] CPU 228.1% | Mem 822MiB
[info]   server: 28% 53MiB | proxy: 200% 768MiB

[run 2/3]
starting benchmark...
14.
49.
57Main benchmark duration is started for thread #32.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

finished in 5.03s, 7504.40 req/s, 76.72MB/s
requests: 37522 total, 45714 started, 37522 done, 37522 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 42213 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 383.60MB (402232323) total, 2.99MB (3131921) headers (space savings 55.36%), 380.36MB (398838729) data
UDP datagram: 62210 sent, 295191 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    13.19ms       4.88s    588.43ms      2.48s      3.70s   809.30ms    698.70ms    89.30%
connect     :     4.87ms    559.64ms    232.12ms   486.40ms   493.90ms   204.51ms    117.25ms    65.23%
TTFB        :    75.85ms       1.32s    407.21ms      1.13s      1.24s   486.31ms    281.12ms    74.61%
req/s       :      17.00       66.39       27.20      45.20      53.39      29.31        7.68    76.95%
min RTT     :      130us    111.11ms     13.62ms    74.13ms   101.37ms    24.25ms     23.57ms    81.25%
smoothed RTT:    61.00ms    260.54ms    140.16ms   197.47ms   243.72ms   140.71ms     36.35ms    67.58%
packets sent:        130         405         242        329        383     245.01       49.17    67.97%
packets recv:        615        2797        1041       1877       2193    1155.09      347.25    77.34%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          14           1         10         10       2.68        2.80    85.57%
[info] CPU 240.3% | Mem 1.1GiB
[info]   server: 40% 73MiB | proxy: 200% 1.0GiB

[run 3/3]
starting benchmark...

22.
31.
48.


TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

finished in 5.04s, 7556.60 req/s, 78.46MB/s
requests: 37783 total, 45975 started, 37783 done, 37777 succeeded, 6 failed, 0 errored, 0 timeout
status codes: 42251 2xx, 0 3xx, 6 4xx, 0 5xx
traffic: 392.29MB (411343507) total, 2.99MB (3138196) headers (space savings 55.34%), 389.04MB (407935083) data
UDP datagram: 65591 sent, 302591 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    12.87ms       4.93s    611.61ms      2.49s      3.71s   832.68ms    707.19ms    88.75%
connect     :     8.39ms    298.06ms    131.11ms   290.23ms   297.37ms   130.82ms     67.97ms    58.98%
TTFB        :   137.69ms       1.18s    389.88ms   796.13ms      1.08s   408.88ms    198.88ms    69.92%
req/s       :      17.80       57.99       27.90      44.39      52.20      29.51        7.31    74.22%
min RTT     :      343us    111.44ms     16.72ms    89.10ms    98.71ms    29.70ms     27.59ms    76.17%
smoothed RTT:    71.21ms    234.93ms    128.66ms   192.78ms   224.37ms   133.45ms     32.57ms    66.80%
packets sent:        144         428         255        332        392     258.21       48.95    65.23%
packets recv:        655        2479        1112       1910       2229    1184.00      339.26    74.22%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           1         10         10       2.67        2.77    85.78%
[info] CPU 236.0% | Mem 1.4GiB
[info]   server: 36% 79MiB | proxy: 200% 1.4GiB

=== Best: 8392 req/s (CPU: 240.3%, Mem: 1.1GiB) ===
[info] saved results/gateway-h3/256/sark-gateway.json
[info] skip: sark-gateway does not subscribe to production-stack
[info] skip: sark-gateway does not subscribe to unary-grpc
[info] skip: sark-gateway does not subscribe to unary-grpc-tls
[info] skip: sark-gateway does not subscribe to stream-grpc
[info] skip: sark-gateway does not subscribe to stream-grpc-tls
[info] skip: sark-gateway does not subscribe to echo-ws
[info] skip: sark-gateway does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@inq

inq commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark

@github-actions

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 3,965,546 6422.8% 1.1GiB -0.5% ~0%
baseline 4096 4,182,234 6277.4% 1.2GiB -0.4% ~0%
pipelined 512 54,363,257 6294.2% 1.1GiB +35.7% ~0%
pipelined 4096 56,904,208 6391.2% 1.2GiB +39.2% ~0%
limited-conn 512 2,428,488 6024.7% 1.3GiB -0.6% ~0%
limited-conn 4096 2,673,715 6260.6% 1.3GiB -0.3% ~0%
json 4096 1,821,382 6627.8% 1.3GiB +0.6% ~0%
json-comp 512 607,280 6086.5% 1.3GiB +0.3% ~0%
json-comp 4096 664,255 6522.5% 1.3GiB +0.7% ~0%
json-comp 16384 665,098 6423.2% 1.4GiB ~0% +7.7%
json-tls 4096 1,820,023 6045.0% 1.3GiB -0.3% ~0%
upload 32 2,724 1873.1% 1.1GiB -0.1% ~0%
upload 256 2,676 4084.5% 1.2GiB +0.4% ~0%
api-4 256 68,307 389.9% 182MiB +1.1% ~0%
api-16 1024 254,175 1436.8% 399MiB -0.6% +0.3%
static 1024 1,366,867 6459.2% 2.4GiB +0.5% ~0%
static 4096 1,298,057 6402.0% 2.5GiB +0.3% ~0%
static 6800 1,216,144 6459.5% 2.6GiB ~0% ~0%
async-db 1024 347,193 3061.5% 1.3GiB +0.3% -7.1%
crud 4096 551,477 1521.9% 1.3GiB +0.6% ~0%
fortunes 1024 239,280 5927.3% 1.2GiB -2.9% ~0%
baseline-h2 256 8,508,605 3466.8% 1.1GiB -17.8% ~0%
baseline-h2 1024 8,840,927 3778.8% 1.2GiB -15.9% -7.7%
static-h2 256 978,648 4840.7% 1.4GiB +27.2% -6.7%
static-h2 1024 774,180 4413.7% 2.1GiB -5.3% +5.0%
baseline-h2c 256 11,685,964 6026.7% 1.1GiB -1.2% ~0%
baseline-h2c 1024 12,236,514 6415.8% 1.1GiB -2.4% ~0%
baseline-h2c 4096 12,056,240 6421.8% 1.2GiB -2.3% -7.7%
json-h2c 1024 3,213,932 6578.2% 1.3GiB -0.9% ~0%
json-h2c 4096 1,973,182 6389.7% 1.9GiB -0.1% ~0%
unary-grpc 256 370,563 268.4% 1.1GiB ~0% ~0%
unary-grpc 1024 1,473,467 2052.9% 1.2GiB ~0% ~0%
unary-grpc-tls 256 5,253,916 5144.2% 1.1GiB -8.4% ~0%
unary-grpc-tls 1024 5,581,247 5892.5% 1.2GiB -3.7% -7.7%
stream-grpc 64 9,674,000 91.6% 1.1GiB -2.5% ~0%
stream-grpc-tls 64 9,665,000 97.0% 1.1GiB +1.2% ~0%
echo-ws 512 4,260,497 6375.8% 1.1GiB +1.9% ~0%
echo-ws 4096 4,385,316 6397.1% 1.2GiB -0.2% ~0%
echo-ws 16384 4,100,190 6139.6% 1.6GiB +0.5% ~0%
echo-ws-pipeline 512 64,100,550 6407.5% 1.1GiB +1.7% ~0%
echo-ws-pipeline 4096 66,371,504 6233.2% 1.2GiB +2.7% ~0%
echo-ws-pipeline 16384 61,697,084 6121.7% 1.7GiB +1.2% +6.2%
Full log
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.31ms   1.24ms   1.55ms   1.89ms   7.01ms

  228034272 frames sent in 5.00s, 227971328 frames received
  Throughput: 45.58M req/s
  Bandwidth:  304.39MB/s
  WS upgrades: 4096
  WS frames:   227971328
  Latency samples: 227971328 / 227971328 responses (100.0%)
[info] CPU 3550.9% | Mem 1.2GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    996us    989us   1.21ms   1.41ms   1.66ms

  328724432 frames sent in 5.00s, 328730413 frames received
  Throughput: 65.71M req/s
  Bandwidth:  438.67MB/s
  WS upgrades: 4096
  WS frames:   328730413
  Latency samples: 328714416 / 328730413 responses (100.0%)
[info] CPU 6406.5% | Mem 1.2GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    986us    986us   1.19ms   1.33ms   1.51ms

  331871856 frames sent in 5.00s, 331857520 frames received
  Throughput: 66.35M req/s
  Bandwidth:  442.97MB/s
  WS upgrades: 4096
  WS frames:   331857520
  Latency samples: 331857200 / 331857520 responses (100.0%)
[info] CPU 6233.2% | Mem 1.2GiB

=== Best: 66371504 req/s (CPU: 6233.2%, Mem: 1.2GiB) ===
[info] saved results/echo-ws-pipeline/4096/sark.json
httparena-bench-sark
httparena-bench-sark

==============================================
=== sark / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.47ms   5.37ms   7.16ms   7.85ms   8.70ms

  206849328 frames sent in 5.00s, 206587232 frames received
  Throughput: 41.31M req/s
  Bandwidth:  276.15MB/s
  WS upgrades: 16382
  WS frames:   206587232
  Latency samples: 206587232 / 206587232 responses (100.0%)
[info] CPU 3295.6% | Mem 1.5GiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.25ms   4.31ms   4.68ms   5.01ms   7.32ms

  305266128 frames sent in 5.00s, 305004064 frames received
  Throughput: 60.98M req/s
  Bandwidth:  407.48MB/s
  WS upgrades: 16379
  WS frames:   305004064
  Latency samples: 305004064 / 305004064 responses (100.0%)
[info] CPU 6393.1% | Mem 1.6GiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.21ms   4.26ms   4.61ms   4.92ms   5.19ms

  308747568 frames sent in 5.00s, 308485424 frames received
  Throughput: 61.67M req/s
  Bandwidth:  412.12MB/s
  WS upgrades: 16384
  WS frames:   308485424
  Latency samples: 308485424 / 308485424 responses (100.0%)
[info] CPU 6121.7% | Mem 1.7GiB

=== Best: 61697084 req/s (CPU: 6121.7%, Mem: 1.7GiB) ===
[info] saved results/echo-ws-pipeline/16384/sark.json
httparena-bench-sark
httparena-bench-sark
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/stream-grpc-tls-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-tls-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-tls-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@inq

inq commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-gateway | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
gateway-64 512 105,521 4525.8% 2.7GiB NEW NEW
gateway-64 1024 74,074 4317.0% 5.0GiB NEW NEW
gateway-h3 64 94,153 3153.1% 906MiB NEW NEW
gateway-h3 256 64,403 2255.8% 2.2GiB NEW NEW
Full log
#11 DONE 0.1s

#12 [server build 1/5] FROM docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082
#12 resolve docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082 0.1s done
#12 DONE 0.1s

#13 [server stage-1 1/3] FROM docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d
#13 resolve docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d 0.1s done
#13 DONE 0.1s

#14 [proxy 2/2] COPY Caddyfile /etc/caddy/Caddyfile
#14 CACHED

#15 [proxy] exporting to image
#15 ...

#9 [server internal] load build context
#9 transferring context: 1.13kB done
#9 DONE 0.0s

#16 [server build 5/5] RUN RUSTFLAGS="-C target-cpu=native" cargo build --release -p httparena-sark --bin "httparena-sark"
#16 CACHED

#17 [server build 2/5] RUN apt-get update     && apt-get install -y --no-install-recommends pkg-config libssl-dev protobuf-compiler     && rm -rf /var/lib/apt/lists/*
#17 CACHED

#18 [server build 4/5] COPY . .
#18 CACHED

#19 [server stage-1 2/3] RUN apt-get update     && apt-get install -y --no-install-recommends ca-certificates     && rm -rf /var/lib/apt/lists/*
#19 CACHED

#20 [server build 3/5] WORKDIR /build
#20 CACHED

#21 [server stage-1 3/3] COPY --from=build /build/target/release/httparena-sark /server
#21 CACHED

#15 [proxy] exporting to image
#15 exporting layers done
#15 exporting manifest sha256:7bd5c705e67df392440547a4c89b069d5750df7fc8f0ec6fe71998a72c653e2d done
#15 exporting config sha256:104ab2bca264e6c94c037a12f0ab81e53d58ced52f8bc30c524da2b036c623d6 done
#15 exporting attestation manifest sha256:9ea72e53c713fb72721873eac801e42b0bbb27f316d29033a39122760bf13e5f
#15 exporting attestation manifest sha256:9ea72e53c713fb72721873eac801e42b0bbb27f316d29033a39122760bf13e5f 0.1s done
#15 exporting manifest list sha256:b6a3326f8eb3b70500ecf96ca9742cd81f7d7dffda26ff1af4aa9ae5ace9b627 0.0s done
#15 naming to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#15 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest
#15 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#15 DONE 0.3s

#22 [server] exporting to image
#22 exporting layers done
#22 exporting manifest sha256:ade6f95d76d3da87c778d5914ac21ff5b701c94cfc18180d6eda044a33ba2442 0.0s done
#22 exporting config sha256:6a3a4fe03f99177cc4b879f43273f50960447771f01d692b4d8a70e0fa7918cd 0.0s done
#22 exporting attestation manifest sha256:3c93fcd529db2d16a9be743917d95bf32c1f7afbf171c13dfaeee8a3ac10a4a4 0.1s done
#22 exporting manifest list sha256:1c3273cb5e1bc4fcffbffb568b5d4b53bc78c5c1777681faa7297eb5cf12885d 0.0s done
#22 naming to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest done
#22 DONE 0.2s

#23 [proxy] resolving provenance for metadata file
#23 DONE 0.0s

#24 [server] resolving provenance for metadata file
#24 DONE 0.0s
 Image httparena-sark-gateway-gateway-h3-server Built 
 Image httparena-sark-gateway-gateway-h3-proxy Built 
 Container httparena-sark-gateway-gateway-h3-server-1 Creating 
 Container httparena-sark-gateway-gateway-h3-server-1 Created 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Creating 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Created 
 Container httparena-sark-gateway-gateway-h3-server-1 Starting 
 Container httparena-sark-gateway-gateway-h3-server-1 Started 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Starting 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Started 
[info] gateway containers: 2 (7a75e75c0b53 0f437c479d99 )
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
53Main benchmark duration is started for thread #23.
.
50.

.Main benchmark duration is started for thread #12.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
14Stopped all clients for thread #12
. Stopping all clients.

finished in 5.03s, 59481.40 req/s, 636.75MB/s
requests: 297407 total, 305599 started, 297407 done, 297407 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 302498 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.11GB (3338403595) total, 21.10MB (22120038) headers (space savings 55.54%), 3.09GB (3314311308) data
UDP datagram: 91810 sent, 2383587 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      536us       1.62s     66.31ms   508.88ms   750.40ms   129.99ms    164.11ms    86.57%
connect     :     7.11ms    383.13ms     89.54ms   325.56ms   367.83ms   119.38ms     91.57ms    72.27%
TTFB        :    39.25ms    455.72ms    232.22ms   364.33ms   431.18ms   225.27ms     83.07ms    64.06%
req/s       :     143.39      398.73      230.28     304.54     333.39     232.32       39.60    71.48%
min RTT     :       11us      1.72ms        53us      207us     1.26ms       93us       176us    97.66%
smoothed RTT:    10.59ms     65.17ms     27.36ms    43.97ms    52.78ms    28.91ms      8.21ms    71.88%
packets sent:        296         448         361        402        422     360.63       25.79    68.75%
packets recv:       5659       16074        9250      12281      13400    9312.89     1615.33    71.88%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           4         14         14       6.38        5.43    70.47%
[info] CPU 2132.2% | Mem 1.3GiB
[info]   server: 249% 461MiB | proxy: 1883% 913MiB

[run 2/3]
starting benchmark...
.

.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3


finished in 5.03s, 63671.40 req/s, 682.21MB/s
requests: 318357 total, 326549 started, 318357 done, 318357 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 323530 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.33GB (3576739129) total, 22.56MB (23657285) headers (space savings 55.54%), 3.31GB (3551112245) data
UDP datagram: 96156 sent, 2554976 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      739us       1.56s     64.26ms   491.23ms   722.52ms   123.93ms    157.16ms    86.89%
connect     :     5.64ms    113.16ms     22.25ms    66.84ms    90.12ms    26.12ms     17.02ms    78.91%
TTFB        :     6.76ms    189.36ms     51.01ms   131.47ms   166.61ms    59.76ms     38.32ms    70.70%
req/s       :     141.19      448.37      241.08     325.53     399.34     248.68       46.95    71.88%
min RTT     :       11us      1.25ms        31us      178us      276us       75us        97us    93.75%
smoothed RTT:    13.47ms     65.41ms     28.10ms    45.80ms    54.90ms    28.89ms      8.36ms    73.83%
packets sent:        312         453         376        421        434     377.61       24.83    70.70%
packets recv:       5583       18108        9660      13073      16133    9982.38     1914.15    71.48%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           4         14         14       6.61        5.51    39.76%
[info] CPU 2171.5% | Mem 1.8GiB
[info]   server: 283% 464MiB | proxy: 1889% 1.3GiB

[run 3/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3

8. Stopping all clients.
31. Stopping all clients.

finished in 5.02s, 63646.20 req/s, 681.95MB/s
requests: 318231 total, 326423 started, 318231 done, 318231 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 323305 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.33GB (3575397808) total, 22.54MB (23638777) headers (space savings 55.55%), 3.31GB (3549669945) data
UDP datagram: 95943 sent, 2553371 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.41ms       1.42s     64.40ms   494.82ms   736.83ms   123.92ms    158.15ms    87.22%
connect     :     3.70ms    115.27ms     14.45ms    62.82ms   110.17ms    24.86ms     20.83ms    84.38%
TTFB        :     6.17ms    237.90ms     40.62ms   125.93ms   184.22ms    51.89ms     39.37ms    77.73%
req/s       :     137.78      455.76      241.57     340.97     376.12     248.58       49.11    69.92%
min RTT     :       10us      2.61ms        53us      192us     1.18ms       93us       198us    98.83%
smoothed RTT:    14.10ms     58.85ms     28.39ms    43.72ms    52.19ms    29.83ms      8.42ms    68.36%
packets sent:        296         441         376        420        429     376.78       25.36    67.97%
packets recv:       5506       18349        9680      13747      15106    9976.11     1994.81    69.53%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           5         14         14       6.66        5.52    39.47%
[info] CPU 2255.8% | Mem 2.2GiB
[info]   server: 254% 466MiB | proxy: 2002% 1.7GiB

=== Best: 64403 req/s (CPU: 2255.8%, Mem: 2.2GiB) ===
[info] saved results/gateway-h3/256/sark-gateway.json
[info] skip: sark-gateway does not subscribe to production-stack
[info] skip: sark-gateway does not subscribe to unary-grpc
[info] skip: sark-gateway does not subscribe to unary-grpc-tls
[info] skip: sark-gateway does not subscribe to stream-grpc
[info] skip: sark-gateway does not subscribe to stream-grpc-tls
[info] skip: sark-gateway does not subscribe to echo-ws
[info] skip: sark-gateway does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@inq inq changed the title sark: Optimize memory & performance sark: update gateway Jul 1, 2026
@inq

inq commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway --save

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@inq inq marked this pull request as ready for review July 1, 2026 12:48
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

⚠️ /benchmark --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@inq

inq commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark -f sark-gateway --save

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: sark-gateway | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
gateway-64 512 107,499 4529.5% 2.8GiB NEW NEW
gateway-64 1024 73,267 4305.8% 4.9GiB NEW NEW
gateway-h3 64 93,655 3197.3% 907MiB NEW NEW
gateway-h3 256 63,434 2079.4% 2.2GiB NEW NEW
Full log

#11 [server internal] load build context
#11 DONE 0.0s

#12 [proxy 2/2] COPY Caddyfile /etc/caddy/Caddyfile
#12 CACHED

#13 [proxy] exporting to image
#13 exporting layers done
#13 exporting manifest sha256:7bd5c705e67df392440547a4c89b069d5750df7fc8f0ec6fe71998a72c653e2d 0.0s done
#13 exporting config sha256:104ab2bca264e6c94c037a12f0ab81e53d58ced52f8bc30c524da2b036c623d6 0.0s done
#13 exporting attestation manifest sha256:9bf9cd42b8fffce986aad6530d3e1664dc1159fd8408bd7ed0f52c821464817c
#13 ...

#14 [server stage-1 1/3] FROM docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d
#14 resolve docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d 0.1s done
#14 DONE 0.1s

#15 [server build 1/5] FROM docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082
#15 resolve docker.io/library/rust:1.95-slim-bookworm@sha256:d7482085ff5b415f84dba5647ae71606650bdef00db7aeb69f4b3d170c3e4082 0.1s done
#15 DONE 0.1s

#11 [server internal] load build context
#11 transferring context: 1.13kB done
#11 DONE 0.0s

#13 [proxy] exporting to image
#13 exporting attestation manifest sha256:9bf9cd42b8fffce986aad6530d3e1664dc1159fd8408bd7ed0f52c821464817c 0.1s done
#13 exporting manifest list sha256:615e52677a885e71e2442aeb58d9259b1aad7a887a028ddc3124b9e0288ab253 0.0s done
#13 naming to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest
#13 naming to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest done
#13 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-proxy:latest 0.0s done
#13 DONE 0.2s

#16 [server build 2/5] RUN apt-get update     && apt-get install -y --no-install-recommends pkg-config libssl-dev protobuf-compiler     && rm -rf /var/lib/apt/lists/*
#16 CACHED

#17 [server build 4/5] COPY . .
#17 CACHED

#18 [server build 5/5] RUN RUSTFLAGS="-C target-cpu=native" cargo build --release -p httparena-sark --bin "httparena-sark"
#18 CACHED

#19 [server stage-1 2/3] RUN apt-get update     && apt-get install -y --no-install-recommends ca-certificates     && rm -rf /var/lib/apt/lists/*
#19 CACHED

#20 [server build 3/5] WORKDIR /build
#20 CACHED

#21 [server stage-1 3/3] COPY --from=build /build/target/release/httparena-sark /server
#21 CACHED

#22 [server] exporting to image
#22 exporting layers done
#22 exporting manifest sha256:b8ed6414982595a5fdffe28612027893a894ffc5a73c4b423883158a8f1e6c6d 0.0s done
#22 exporting config sha256:491e622e41e3809c6e82c8d1c4b13533079d7e57c7135ae22cfd5f7219b1c826 0.0s done
#22 exporting attestation manifest sha256:97bdd6653938e228405ebdfb4bdb163ca86189db3843ed07d54562f8b3f812b2 0.1s done
#22 exporting manifest list sha256:951d0af81221c59c92b6c631a635e84efb2db94dc667e11dde5b835b814e65c1
#22 exporting manifest list sha256:951d0af81221c59c92b6c631a635e84efb2db94dc667e11dde5b835b814e65c1 0.0s done
#22 naming to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 unpacking to docker.io/library/httparena-sark-gateway-gateway-h3-server:latest 0.0s done
#22 DONE 0.2s

#23 [proxy] resolving provenance for metadata file
#23 DONE 0.0s

#24 [server] resolving provenance for metadata file
#24 DONE 0.0s
 Image httparena-sark-gateway-gateway-h3-server Built 
 Image httparena-sark-gateway-gateway-h3-proxy Built 
 Container httparena-sark-gateway-gateway-h3-server-1 Creating 
 Container httparena-sark-gateway-gateway-h3-server-1 Created 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Creating 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Created 
 Container httparena-sark-gateway-gateway-h3-server-1 Starting 
 Container httparena-sark-gateway-gateway-h3-server-1 Started 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Starting 
 Container httparena-sark-gateway-gateway-h3-proxy-1 Started 
[info] gateway containers: 2 (47dfa3cb31f8 887dab116f23 )
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
57.
59.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
53. Stopping all clients.

finished in 5.02s, 60167.80 req/s, 644.14MB/s
requests: 300839 total, 309031 started, 300839 done, 300839 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 306004 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.15GB (3377127469) total, 21.34MB (22375463) headers (space savings 55.54%), 3.12GB (3352756921) data
UDP datagram: 93317 sent, 2413273 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.30ms       1.44s     66.79ms   502.66ms   738.55ms   128.95ms    160.78ms    86.75%
connect     :     6.64ms    182.84ms    110.48ms   141.53ms   178.02ms    98.65ms     38.65ms    78.52%
TTFB        :    14.31ms    261.59ms    148.59ms   206.32ms   241.90ms   140.86ms     43.41ms    72.27%
req/s       :     147.38      392.51      226.77     310.79     337.14     235.00       40.93    73.05%
min RTT     :       11us      2.62ms        60us      208us      856us      102us       218us    98.05%
smoothed RTT:    14.90ms     59.49ms     27.89ms    44.97ms    55.90ms    29.40ms      8.34ms    73.44%
packets sent:        319         439         365        408        421     366.52       22.78    69.14%
packets recv:       5845       15878        9096      12526      13570    9428.85     1669.42    72.66%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           4         14         14       6.41        5.44    70.21%
[info] CPU 2118.8% | Mem 1.4GiB
[info]   server: 262% 464MiB | proxy: 1857% 928MiB

[run 2/3]
starting benchmark...
55Main benchmark duration is started for thread #.23
.6.

61.
8.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
39. Stopping all clients.


finished in 5.03s, 62243.20 req/s, 666.67MB/s
requests: 311216 total, 319408 started, 311216 done, 311216 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 316377 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.26GB (3495266529) total, 22.06MB (23130743) headers (space savings 55.55%), 3.23GB (3470075664) data
UDP datagram: 96973 sent, 2497067 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      350us       1.43s     64.63ms   503.54ms   741.88ms   126.57ms    161.14ms    86.80%
connect     :     5.49ms     97.97ms     15.41ms    70.94ms    94.00ms    22.93ms     19.20ms    89.84%
TTFB        :     7.09ms    154.99ms     38.06ms   119.84ms   147.00ms    50.17ms     31.98ms    77.34%
req/s       :     142.59      420.99      233.87     335.74     361.38     243.11       44.96    73.44%
min RTT     :       10us      1.60ms        32us      189us      260us       75us       114us    95.31%
smoothed RTT:    13.68ms     87.33ms     28.32ms    46.26ms    60.66ms    29.58ms      9.55ms    73.44%
packets sent:        300         450         380        419        435     380.80       23.77    70.31%
packets recv:       5650       17031        9376      13558      14561    9756.17     1834.36    73.05%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           4         14         14       6.47        5.47    69.69%
[info] CPU 2204.4% | Mem 1.8GiB
[info]   server: 251% 466MiB | proxy: 1954% 1.3GiB

[run 3/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3



finished in 5.03s, 62780.00 req/s, 672.55MB/s
requests: 313900 total, 322092 started, 313900 done, 313900 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 319076 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 3.28GB (3526073600) total, 22.25MB (23330740) headers (space savings 55.54%), 3.26GB (3500662040) data
UDP datagram: 98332 sent, 2519068 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      784us       1.46s     63.79ms   500.77ms   733.02ms   125.55ms    160.28ms    86.73%
connect     :     4.41ms    121.41ms     21.95ms    62.80ms    91.91ms    28.81ms     19.90ms    73.83%
TTFB        :     6.23ms    173.07ms     50.94ms   121.47ms   140.35ms    55.29ms     33.21ms    69.53%
req/s       :     159.79      383.54      240.49     333.37     369.39     245.20       41.82    72.66%
min RTT     :       10us      1.87ms        47us      206us      606us       87us       141us    96.88%
smoothed RTT:    13.89ms     60.38ms     28.21ms    43.08ms    49.23ms    28.72ms      7.98ms    66.02%
packets sent:        311         444         387        428        440     386.11       25.60    69.92%
packets recv:       6390       15598        9649      13423      14998    9842.11     1703.81    72.27%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          16           4         14         14       6.51        5.48    37.93%
[info] CPU 2079.4% | Mem 2.2GiB
[info]   server: 279% 467MiB | proxy: 1801% 1.7GiB

=== Best: 63434 req/s (CPU: 2079.4%, Mem: 2.2GiB) ===
[info] saved results/gateway-h3/256/sark-gateway.json
[info] skip: sark-gateway does not subscribe to production-stack
[info] skip: sark-gateway does not subscribe to unary-grpc
[info] skip: sark-gateway does not subscribe to unary-grpc-tls
[info] skip: sark-gateway does not subscribe to stream-grpc
[info] skip: sark-gateway does not subscribe to stream-grpc-tls
[info] skip: sark-gateway does not subscribe to echo-ws
[info] skip: sark-gateway does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-64-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/gateway-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

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