Skip to content

ioxide: update to 0.4.161, add h2/h3 and static-tls - #1094

Merged
MDA2AV merged 18 commits into
mainfrom
ioxide-0.4.161-h2-h3
Aug 9, 2026
Merged

ioxide: update to 0.4.161, add h2/h3 and static-tls#1094
MDA2AV merged 18 commits into
mainfrom
ioxide-0.4.161-h2-h3

Conversation

@MDA2AV

@MDA2AV MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Updates the ioxide engine entry to the latest ioxide and opens up the protocol tests it can now serve.

  • ioxide 0.0.80.4.161 — adds ioxide.nghttp2/ngtcp2/nghttp3, drops ioxide.tls (folded into core). Migrates the renamed APIs (ServerConfig.Tcp, TcpConnection, TcpHandle, RecvSlots).
  • TLS is now OpenSSL both ways — the fastest backend on loopback; the previous entry pinned kTLS TX, which trails OpenSSL and needs the kernel tls module.
  • h2 over TLS (nghttp2) on :8443, HTTP/3 over QUIC (ngtcp2 + nghttp3) on udp:8443. Shared /baseline2 and /static/* routes for both live in Multiplexed.cs.
  • New test subscriptions: static-tls, baseline-h2, static-h2, baseline-h3, static-h3.

Verified locally against the harness tools: h2load /baseline2 2000/2000 2xx at 66k req/s, static-h2 148k req/s (1.13 GB/s), h3x /baseline2 260k req/s; h1 and h1-TLS json/static unchanged.

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 4,098,612 6387.5% 266MiB ~0% +0.8%
baseline 4096 4,088,319 6110.5% 361MiB -1.2% +3.7%
pipelined 512 53,394,192 6312.9% 228MiB -0.8% +1.3%
pipelined 4096 53,615,724 6216.2% 319MiB -0.7% +0.9%
limited-conn 512 2,471,674 5220.9% 326MiB -0.4% +5.2%
limited-conn 4096 2,540,196 5356.1% 485MiB -0.5% +3.2%
json 4096 1,776,999 5915.2% 849MiB +3.5% +10.3%
json-comp 512 946,934 5936.2% 626MiB +3.0% -1.1%
json-comp 4096 914,168 6151.0% 1.4GiB +1.0% -6.7%
json-comp 16384 920,137 6070.0% 5.8GiB +1.6% +16.0%
json-tls 4096 1,486,559 6523.8% 921MiB -16.9% -25.0%
upload 32 2,433 1937.1% 441MiB +0.5% -1.3%
upload 256 2,435 4945.2% 556MiB -23.4% +11.0%
api-4 256 70,848 284.9% 114MiB +7.3% -7.3%
api-16 1024 260,027 1261.2% 309MiB +2.4% ~0%
static 1024 920,007 6551.1% 330MiB -0.2% +0.9%
static 4096 884,954 6269.4% 646MiB +0.4% +1.3%
static 6800 851,911 6587.5% 868MiB +0.2% -0.6%
static-tls 1024 790,662 6546.4% 524MiB NEW NEW
static-tls 4096 545,350 6572.4% 1.4GiB NEW NEW
static-tls 6800 498,023 6543.6% 2.1GiB NEW NEW
async-db 1024 361,447 3001.7% 406MiB +2.1% -4.0%
crud 4096 816,959 3346.6% 682MiB +1.8% +3.8%
baseline-h2 256 8,479,443 5368.0% 555MiB NEW NEW
baseline-h2 1024 9,279,031 5454.0% 901MiB NEW NEW
static-h2 256 120,271 6083.7% 3.2GiB NEW NEW
static-h2 1024 111,393 6198.9% 10.0GiB NEW NEW
baseline-h3 64 3,706,124 3156.6% 286MiB NEW NEW
static-h3 64 139 52.3% 995MiB NEW NEW
Full log
smoothed RTT:      393us      2.13ms       664us     1.39ms     2.13ms      774us       371us    89.06%
packets sent:       7699       16355       15143      16290      16355   13748.11     2980.29    70.31%
packets recv:     137890      355181      328929     353911     355181  294999.92    71919.59    85.94%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          24           2         22         22       9.22        8.88    70.47%
[info] CPU 3091.7% | Mem 269MiB

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

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
.
12. Stopping all clients.
. Stopping all clients.
10. Stopping all clients.
34. Stopping all clients.

finished in 5.01s, 3713529.00 req/s, 42.50MB/s
requests: 18567645 total, 18571741 started, 18567645 done, 18567645 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 18567685 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 212.49MB (222813564) total, 123.95MB (129973795) headers (space savings 85.11%), 17.71MB (18567685) data
UDP datagram: 888194 sent, 19078019 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      202us      7.77ms       951us     2.30ms     3.20ms     1.20ms       566us    84.74%
connect     :     1.79ms      7.46ms      2.92ms     5.58ms     7.46ms     3.22ms      1.08ms    81.25%
TTFB        :     2.85ms     11.00ms      4.40ms     8.43ms    11.00ms     4.82ms      1.75ms    81.25%
req/s       :   26303.84    69379.75    64643.51   68601.61   69379.75   58019.46    14252.76    76.56%
min RTT     :       15us      1.08ms       187us      603us     1.08ms      207us       223us    87.50%
smoothed RTT:      422us      2.14ms       586us     2.04ms     2.14ms      765us       451us    85.94%
packets sent:       7721       16284       15176      16100      16284   13880.03     2869.01    71.88%
packets recv:     139590      353717      331644     349752     353717  298096.36    70159.03    76.56%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          24           2         22         22       9.17        8.83    71.00%
[info] CPU 3156.6% | Mem 286MiB

=== Best: 3706124 req/s (CPU: 3156.6%, Mem: 286MiB) ===
[info] saved results/baseline-h3/64/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

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

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

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
22. Stopping all clients.

30. Stopping all clients.
358
6. Stopping all clients.
63
. Stopping all clients.
. Stopping all clients.
55. Stopping all clients.

finished in 5.01s, 105.20 req/s, 8.95MB/s
requests: 526 total, 4622 started, 526 done, 526 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 621 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 44.73MB (46906524) total, 6.00KB (6146) headers (space savings 81.09%), 44.72MB (46891425) data
UDP datagram: 1912 sent, 38000 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :    41.81ms    127.01ms    105.25ms   123.69ms   125.93ms   101.48ms     17.56ms    63.88%
connect     :    18.61ms     98.89ms     22.76ms    25.54ms    98.89ms    23.72ms      9.74ms    98.44%
TTFB        :    83.50ms    143.08ms    104.85ms   141.09ms   143.08ms   111.87ms     18.74ms    57.81%
req/s       :       1.40        3.00        1.60       2.00       3.00       1.64        0.23    84.38%
min RTT     :       67us      3.30ms       551us     2.28ms     3.30ms      800us       807us    82.81%
smoothed RTT:    22.72ms     56.69ms     34.52ms    48.01ms    56.69ms    34.99ms      8.11ms    60.94%
packets sent:         28          35          32         34         35      31.87        1.56    70.31%
packets recv:        483         830         571        725        830     596.03       74.26    70.31%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          23          12         12         12       8.12        4.59    71.08%
[info] CPU 112.8% | Mem 716MiB

[run 2/3]
starting benchmark...
.
49.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
.
.
6. Stopping all clients.
16. Stopping all clients.
36



54Stopped all clients for thread #43
50
. Stopping all clients.

35. Stopping all clients.

57. Stopping all clients.

finished in 5.01s, 125.80 req/s, 10.18MB/s
requests: 629 total, 4725 started, 629 done, 629 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 698 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 50.90MB (53373143) total, 6.73KB (6892) headers (space savings 81.13%), 50.89MB (53356829) data
UDP datagram: 2101 sent, 41897 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     2.79ms     72.99ms     14.75ms    52.44ms    69.32ms    22.80ms     16.41ms    68.20%
connect     :     2.64ms     57.02ms      4.70ms    41.76ms    57.02ms     9.84ms     13.32ms    87.50%
TTFB        :     6.07ms     68.66ms     27.56ms    56.77ms    68.66ms    27.80ms     17.11ms    60.94%
req/s       :       1.40        9.60        1.60       1.80       9.60       1.96        1.68    95.31%
min RTT     :       57us      1.57ms       315us      901us     1.57ms      407us       287us    81.25%
smoothed RTT:     1.21ms     29.53ms      8.98ms    18.28ms    29.53ms     8.43ms      6.01ms    68.75%
packets sent:         30          44          34         39         44      34.78        3.02    68.75%
packets recv:        494        2391         569        700       2391     657.05      375.89    95.31%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44          12         12         12       8.40        4.95    71.68%
[info] CPU 52.3% | Mem 995MiB

[run 3/3]
starting benchmark...
37.
59Main benchmark duration is started for thread #.11.
43.


TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
48.



28. Stopping all clients.
33. Stopping all clients.
5

finished in 5.01s, 104.00 req/s, 9.15MB/s
requests: 520 total, 4616 started, 520 done, 520 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 583 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 45.76MB (47981640) total, 5.63KB (5766) headers (space savings 81.11%), 45.75MB (47967185) data
UDP datagram: 2136 sent, 37495 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     2.95ms     38.32ms     10.66ms    29.09ms    36.17ms    14.10ms      8.12ms    71.92%
connect     :     1.93ms     22.95ms      3.89ms    12.10ms    22.95ms     4.87ms      3.64ms    93.75%
TTFB        :     5.89ms     33.75ms      9.79ms    26.35ms    33.75ms    13.59ms      7.21ms    71.88%
req/s       :       1.60        2.00        1.60       2.00       2.00       1.62        0.10    93.75%
min RTT     :       35us      1.38ms       274us      645us     1.38ms      329us       238us    89.06%
smoothed RTT:     1.35ms     10.64ms      2.55ms     7.72ms    10.64ms     3.71ms      2.23ms    78.13%
packets sent:         30          43          35         41         43      35.37        2.80    75.00%
packets recv:        494         777         575        687        777     588.20       50.50    89.06%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          12          12         12         12       8.09        4.59    70.34%
[info] CPU 42.5% | Mem 1.1GiB

=== Best: 139 req/s (CPU: 52.3%, Mem: 995MiB) ===
[info] saved results/static-h3/64/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[info] skip: ioxide does not subscribe to gateway-64
[info] skip: ioxide does not subscribe to gateway-h3
[info] skip: ioxide does not subscribe to production-stack
[info] skip: ioxide does not subscribe to unary-grpc
[info] skip: ioxide does not subscribe to unary-grpc-tls
[info] skip: ioxide does not subscribe to stream-grpc
[info] skip: ioxide does not subscribe to stream-grpc-tls
[info] skip: ioxide does not subscribe to echo-ws
[info] skip: ioxide does not subscribe to echo-ws-pipeline
[info] skip: ioxide does not subscribe to echo-ws-limited
[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/results/ioxide.json - 29 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t json-tls --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: json-tls

Test Conn RPS CPU Mem Δ RPS Δ Mem
json-tls 4096 1,772,765 6316.5% 939MiB -0.9% -23.6%
Full log
[info] available CPUs: 128
[info] framework: ioxide (ioxide, C#)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,json-tls,static,static-tls,upload,async-db,crud,api-4,api-16,baseline-h2,static-h2,baseline-h3,static-h3
[info] building image: httparena-ioxide
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 631B done
#1 DONE 0.0s

#2 [internal] load metadata for mcr.microsoft.com/dotnet/runtime:11.0-preview
#2 ...

#3 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:11.0-preview
#3 DONE 0.4s

#2 [internal] load metadata for mcr.microsoft.com/dotnet/runtime:11.0-preview
#2 DONE 0.4s

#4 [internal] load .dockerignore
#4 transferring context: 50B done
#4 DONE 0.0s

#5 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009
#5 resolve mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009 0.1s done
#5 DONE 0.1s

#6 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa
#6 resolve mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa 0.1s done
#6 DONE 0.1s

#7 [internal] load build context
#7 transferring context: 413B done
#7 DONE 0.0s

#8 [build 5/6] COPY . .
#8 CACHED

#9 [stage-1 2/3] WORKDIR /app
#9 CACHED

#10 [build 2/6] WORKDIR /source
#10 CACHED

#11 [build 4/6] RUN dotnet restore
#11 CACHED

#12 [build 6/6] RUN dotnet publish -c Release --no-self-contained -o /app/out
#12 CACHED

#13 [build 3/6] COPY ioxide-arena.csproj ./
#13 CACHED

#14 [stage-1 3/3] COPY --from=build /app/out ./
#14 CACHED

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:395159d782435cf42f437174e7d55291b4d4dd267a1c82573dabf50e2fea854d done
#15 exporting config sha256:ad74012f08e9e02b9a693d5a64a8e2d294f2e45fee6abe8a5e21d08db187e5fe done
#15 exporting attestation manifest sha256:4f9386f6c02f58e045e8fb3c0c2b5c0ee408b08a0afee0e3a272005a37f47d12 0.0s done
#15 exporting manifest list sha256:780e34cbb2f9c85ef73526852aa01d6a7ad88f472e9ff7c7ef6201446c44d30b 0.0s done
#15 naming to docker.io/library/httparena-ioxide:latest
#15 naming to docker.io/library/httparena-ioxide:latest done
#15 unpacking to docker.io/library/httparena-ioxide:latest 0.0s done
#15 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ioxide / json-tls / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.87ms   14.12ms 292.92ms   95.96%
    Req/Sec    25.30k     8.59k   40.48k    85.71%
  8125662 requests in 5.10s, 27.18GB read
Requests/sec: 1593520.77
Transfer/sec:      5.33GB
[info] CPU 5605.3% | Mem 831MiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.38ms    2.18ms  86.98ms   97.71%
    Req/Sec    27.75k     3.56k   41.94k    95.26%
  9036137 requests in 5.10s, 30.23GB read
Requests/sec: 1772765.55
Transfer/sec:      5.93GB
[info] CPU 6316.5% | Mem 939MiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.38ms    2.02ms  84.25ms   97.21%
    Req/Sec    27.62k     3.68k   40.23k    93.40%
  8995279 requests in 5.10s, 30.09GB read
Requests/sec: 1764284.57
Transfer/sec:      5.90GB
[info] CPU 6031.3% | Mem 1.1GiB

=== Best: 1772765 req/s (CPU: 6316.5%, Mem: 939MiB) ===
[info] saved results/json-tls/4096/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 1 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static-tls --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t baseline-h2 --save

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static-h2 --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t baseline-h3 --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static-h2 --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

1 similar comment
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static-tls

Test Conn RPS CPU Mem Δ RPS Δ Mem
static-tls 1024 1,180,196 6330.1% 446MiB NEW NEW
static-tls 4096 767,181 6519.5% 1019MiB NEW NEW
static-tls 6800 667,292 6496.7% 1.3GiB NEW NEW
Full log
#4 transferring context: 50B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009
#6 resolve mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009 0.1s done
#6 DONE 0.1s

#7 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa
#7 resolve mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa 0.1s done
#7 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 74.40kB done
#5 DONE 0.0s

#8 [stage-1 2/3] WORKDIR /app
#8 CACHED

#9 [build 4/6] RUN dotnet restore
#9 CACHED

#10 [build 6/6] RUN dotnet publish -c Release --no-self-contained -o /app/out
#10 CACHED

#11 [build 2/6] WORKDIR /source
#11 CACHED

#12 [build 3/6] COPY ioxide-arena.csproj ./
#12 CACHED

#13 [build 5/6] COPY . .
#13 CACHED

#14 [stage-1 3/3] COPY --from=build /app/out ./
#14 CACHED

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:395159d782435cf42f437174e7d55291b4d4dd267a1c82573dabf50e2fea854d done
#15 exporting config sha256:ad74012f08e9e02b9a693d5a64a8e2d294f2e45fee6abe8a5e21d08db187e5fe done
#15 exporting attestation manifest sha256:dca042e40a6740f5d9ae981b055c118f16df60684ab788e5ecd7fd4abdd58553 0.0s done
#15 exporting manifest list sha256:78231ae902108c91af2fa228631c58bc97f1b1eca92d0a7f389d6e98f1e120a4
#15 exporting manifest list sha256:78231ae902108c91af2fa228631c58bc97f1b1eca92d0a7f389d6e98f1e120a4 0.0s done
#15 naming to docker.io/library/httparena-ioxide:latest done
#15 unpacking to docker.io/library/httparena-ioxide:latest done
#15 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ioxide / static-tls / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ https://localhost:8081
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   846.03us    1.22ms  74.34ms   98.50%
    Req/Sec    18.01k     2.54k   26.87k    91.73%
  5846692 requests in 5.10s, 89.16GB read
Requests/sec: 1146386.82
Transfer/sec:     17.48GB
[info] CPU 6074.1% | Mem 421MiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   742.51us  324.93us  17.81ms   77.47%
    Req/Sec    18.54k   581.44    28.24k    97.33%
  6019727 requests in 5.10s, 91.80GB read
Requests/sec: 1180196.08
Transfer/sec:     18.00GB
[info] CPU 6330.1% | Mem 446MiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   757.28us  359.35us  16.72ms   79.13%
    Req/Sec    18.47k   657.26    28.64k    96.94%
  5997262 requests in 5.10s, 91.46GB read
Requests/sec: 1175911.82
Transfer/sec:     17.93GB
[info] CPU 6266.4% | Mem 453MiB

=== Best: 1180196 req/s (CPU: 6330.1%, Mem: 446MiB) ===
[info] saved results/static-tls/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static-tls / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     6.07ms    7.53ms 238.98ms   97.72%
    Req/Sec    11.64k     2.27k   24.60k    93.96%
  3738291 requests in 5.10s, 57.01GB read
Requests/sec: 732916.18
Transfer/sec:     11.18GB
[info] CPU 5867.8% | Mem 872MiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.26ms    2.18ms 101.55ms   93.15%
    Req/Sec    12.02k     1.72k   25.42k    94.25%
  3913212 requests in 5.10s, 59.67GB read
Requests/sec: 767181.84
Transfer/sec:     11.70GB
[info] CPU 6519.5% | Mem 1019MiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.28ms    2.11ms  97.93ms   93.84%
    Req/Sec    11.98k     1.72k   25.33k    94.94%
  3891441 requests in 5.10s, 59.34GB read
Requests/sec: 762935.95
Transfer/sec:     11.63GB
[info] CPU 6394.7% | Mem 1.1GiB

=== Best: 767181 req/s (CPU: 6519.5%, Mem: 1019MiB) ===
[info] saved results/static-tls/4096/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static-tls / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ https://localhost:8081
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.90ms   15.47ms 361.73ms   97.35%
    Req/Sec    10.03k     2.30k   21.40k    92.75%
  3235842 requests in 5.10s, 49.34GB read
Requests/sec: 634347.48
Transfer/sec:      9.67GB
[info] CPU 5705.8% | Mem 1.3GiB

[run 2/3]
Running 5s test @ https://localhost:8081
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.10ms    4.37ms 147.84ms   96.51%
    Req/Sec    10.45k     1.73k   22.45k    94.40%
  3403297 requests in 5.10s, 51.90GB read
Requests/sec: 667292.99
Transfer/sec:     10.18GB
[info] CPU 6496.7% | Mem 1.3GiB

[run 3/3]
Running 5s test @ https://localhost:8081
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.09ms    3.98ms 138.88ms   96.33%
    Req/Sec    10.43k     1.76k   22.60k    94.47%
  3399565 requests in 5.10s, 51.84GB read
Requests/sec: 666540.33
Transfer/sec:     10.16GB
[info] CPU 6285.7% | Mem 1.4GiB

=== Best: 667292 req/s (CPU: 6496.7%, Mem: 1.3GiB) ===
[info] saved results/static-tls/6800/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 3 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static-h2

Test Conn RPS CPU Mem Δ RPS Δ Mem
static-h2 256 203,911 6138.4% 1.8GiB NEW NEW
static-h2 1024 218,190 6181.7% 4.6GiB NEW NEW
Full log
[run 1/3]
starting benchmark...
10.
progress: Main benchmark duration is started for thread #25% of clients started
28.
progress: Warm-up phase is over for thread #100% of clients started34.

38Main benchmark duration is started for thread #23.
.
.
.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
5. Stopping all clients.
16. Stopping all clients.
4. Stopping all clients.
. Stopping all clients.

finished in 5.02s, 197184.00 req/s, 11.69GB/s
requests: 985920 total, 994112 started, 985920 done, 985920 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 986420 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 58.45GB (62761677623) total, 1.90MB (1990504) headers (space savings 93.93%), 58.40GB (62711743030) data
                     min         max         mean         sd        +/- sd
time for request:      500us    303.28ms     42.50ms     23.21ms    68.60%
time for connect:     3.20ms     82.93ms     36.77ms     14.70ms    72.27%
time to 1st byte:     9.54ms    239.03ms    117.35ms     47.81ms    63.67%
req/s           :     344.37     2998.84      770.16      459.63    89.06%
[info] CPU 5708.4% | Mem 1.4GiB

[run 2/3]
starting benchmark...
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
2Stopped all clients for thread #51

12. Stopping all clients.
42. Stopping all clients.


finished in 5.04s, 203147.80 req/s, 12.04GB/s
requests: 1015739 total, 1023931 started, 1015739 done, 1015739 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1016422 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 60.22GB (64663303282) total, 1.96MB (2050508) headers (space savings 93.93%), 60.17GB (64611855401) data
                     min         max         mean         sd        +/- sd
time for request:     1.68ms    218.58ms     41.50ms     22.67ms    73.84%
time for connect:     5.41ms     94.89ms     24.51ms     16.72ms    84.77%
time to 1st byte:    14.10ms    196.86ms     65.21ms     33.18ms    76.17%
req/s           :     272.36     3109.22      793.43      445.37    83.20%
[info] CPU 6341.4% | Mem 1.6GiB

[run 3/3]
starting benchmark...
42.
49.
4.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
34. Stopping all clients.
47. Stopping all clients.
36
. Stopping all clients.
54. Stopping all clients.


finished in 5.03s, 205008.80 req/s, 12.15GB/s
requests: 1025044 total, 1033236 started, 1025044 done, 1025044 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1025673 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 60.77GB (65249426727) total, 1.97MB (2069010) headers (space savings 93.93%), 60.72GB (65197511811) data
                     min         max         mean         sd        +/- sd
time for request:     1.00ms    228.22ms     40.83ms     19.46ms    69.13%
time for connect:     3.99ms     94.39ms     23.09ms     16.50ms    77.34%
time to 1st byte:     9.27ms    148.15ms     63.43ms     26.89ms    65.23%
req/s           :     385.09     3454.10      800.70      433.92    90.23%
[info] CPU 6138.4% | Mem 1.8GiB

=== Best: 203911 req/s (CPU: 6138.4%, Mem: 1.8GiB) ===
[info] saved results/static-h2/256/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
.progress: 87% of clients started

.Warm-up phase is over for thread #
2.
.


.
.Main benchmark duration is started for thread #28.

18.
.Main benchmark duration is started for thread #25.

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
. Stopping all clients.Main benchmark duration is over for thread #
62. Stopping all clients.
43. Stopping all clients.
. Stopping all clients.
24. Stopping all clients.




finished in 5.06s, 208530.60 req/s, 12.38GB/s
requests: 1042653 total, 1075421 started, 1042653 done, 1042653 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1042989 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 61.89GB (66452983705) total, 2.06MB (2156634) headers (space savings 93.78%), 61.84GB (66400055443) data
                     min         max         mean         sd        +/- sd
time for request:     2.80ms    777.08ms    152.13ms     66.05ms    90.35%
time for connect:     5.92ms    273.44ms     92.71ms     52.97ms    65.82%
time to 1st byte:    20.98ms    640.59ms    359.36ms    152.40ms    63.67%
req/s           :     124.78      374.36      203.59       40.28    63.57%
[info] CPU 5378.5% | Mem 3.5GiB

[run 2/3]
starting benchmark...
.
.
23.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
3Main benchmark duration is started for thread #46.
.



finished in 5.06s, 219855.40 req/s, 13.05GB/s
requests: 1099277 total, 1132045 started, 1099277 done, 1099277 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1099999 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 65.24GB (70055835506) total, 2.17MB (2270654) headers (space savings 93.79%), 65.19GB (70000037910) data
                     min         max         mean         sd        +/- sd
time for request:     1.82ms    959.16ms    143.99ms     53.01ms    81.42%
time for connect:     4.84ms    122.02ms     57.70ms     33.11ms    57.03%
time to 1st byte:    38.86ms    469.49ms    216.86ms     98.73ms    60.16%
req/s           :     103.17      649.71      214.65       53.20    75.68%
[info] CPU 6315.3% | Mem 3.7GiB

[run 3/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
8.Warm-up phase is over for thread #34.


.

5.
38.
50.
4. Stopping all clients.Main benchmark duration is over for thread #
45. Stopping all clients.
58. Stopping all clients.


finished in 5.06s, 220656.80 req/s, 13.10GB/s
requests: 1103284 total, 1136052 started, 1103284 done, 1103284 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1104046 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 65.48GB (70305646005) total, 2.17MB (2278748) headers (space savings 93.79%), 65.43GB (70249647967) data
                     min         max         mean         sd        +/- sd
time for request:     1.86ms    942.10ms    143.63ms     52.92ms    81.99%
time for connect:     3.77ms    163.33ms     56.35ms     33.08ms    56.93%
time to 1st byte:    20.05ms    565.39ms    214.23ms    107.26ms    64.45%
req/s           :     123.77      480.83      215.44       47.32    71.39%
[info] CPU 6181.7% | Mem 4.6GiB

=== Best: 218190 req/s (CPU: 6181.7%, Mem: 4.6GiB) ===
[info] saved results/static-h2/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 2 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t baseline-h2 --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: baseline-h2

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline-h2 256 8,621,948 5326.4% 556MiB NEW NEW
baseline-h2 1024 9,309,150 5360.1% 890MiB NEW NEW
Full log

49. Stopping all clients.
52. Stopping all clients.Main benchmark duration is over for thread #
43Stopped all clients for thread #52
. Stopping all clients.

finished in 5.02s, 7549620.00 req/s, 151.20MB/s
requests: 37748100 total, 37773700 started, 37748100 done, 37748100 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 37748100 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 756.00MB (792721364) total, 72.00MB (75498248) headers (space savings 93.75%), 36.00MB (37748100) data
                     min         max         mean         sd        +/- sd
time for request:      344us    135.99ms      5.09ms      6.00ms    90.82%
time for connect:     3.18ms     68.29ms     35.20ms     16.16ms    62.11%
time to 1st byte:     4.86ms    181.85ms     80.12ms     28.85ms    74.61%
req/s           :   11878.41    70996.23    29487.83    12736.05    77.34%
[info] CPU 5025.8% | Mem 500MiB

[run 2/3]
starting benchmark...
17.
.
0.
28.

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

13. Stopping all clients.

finished in 5.03s, 8673680.00 req/s, 173.71MB/s
requests: 43368400 total, 43394000 started, 43368400 done, 43368400 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 43368400 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 868.56MB (910747664) total, 82.72MB (86738848) headers (space savings 93.75%), 41.36MB (43368400) data
                     min         max         mean         sd        +/- sd
time for request:      315us     30.04ms      2.95ms      2.08ms    79.12%
time for connect:     2.32ms     27.55ms     14.43ms      6.24ms    61.33%
time to 1st byte:     3.69ms     34.30ms     24.03ms      5.21ms    69.53%
req/s           :   14799.37    69876.34    33879.03    13189.35    75.78%
[info] CPU 5326.4% | Mem 556MiB

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


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

finished in 5.03s, 8541480.00 req/s, 171.06MB/s
requests: 42707400 total, 42733000 started, 42707400 done, 42707400 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 42707400 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 855.32MB (896866664) total, 81.46MB (85416848) headers (space savings 93.75%), 40.73MB (42707400) data
                     min         max         mean         sd        +/- sd
time for request:      303us     25.19ms      2.99ms      1.96ms    73.21%
time for connect:     4.31ms     27.56ms     15.69ms      6.07ms    60.94%
time to 1st byte:     8.68ms     39.43ms     27.78ms      5.36ms    65.23%
req/s           :   17857.30    77030.33    33362.24    13850.16    76.56%
[info] CPU 5215.2% | Mem 596MiB

=== Best: 8621948 req/s (CPU: 5326.4%, Mem: 556MiB) ===
[info] saved results/baseline-h2/256/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / baseline-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

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

.
59.
42.
40.
37% of clients started
55.
28.
14.Main benchmark duration is started for thread #46.
.Warm-up phase is over for thread #39.


24.Main 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
39

finished in 5.07s, 7352400.00 req/s, 147.26MB/s
requests: 36762000 total, 36864400 started, 36762000 done, 36762000 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 36762000 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 736.28MB (772047056) total, 70.13MB (73532192) headers (space savings 93.75%), 35.06MB (36762000) data
                     min         max         mean         sd        +/- sd
time for request:      464us    246.34ms     20.50ms     19.51ms    87.87%
time for connect:     4.46ms    163.89ms     88.36ms     41.01ms    59.86%
time to 1st byte:     5.44ms    339.94ms    196.50ms     63.68ms    70.80%
req/s           :    4539.01    14418.61     7178.73     1979.40    74.61%
[info] CPU 5138.1% | Mem 618MiB

[run 2/3]
starting benchmark...
progress: Warm-up started for thread #56% of clients started
3.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
63.
39Warm-up phase is over for thread #.
24.
25.
36.
48
49.
26.
63



finished in 5.07s, 9360560.00 req/s, 187.47MB/s
requests: 46802800 total, 46905200 started, 46802800 done, 46802800 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 46802800 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 937.37MB (982903856) total, 89.28MB (93613792) headers (space savings 93.75%), 44.63MB (46802800) data
                     min         max         mean         sd        +/- sd
time for request:      435us     91.72ms     10.49ms      5.15ms    75.11%
time for connect:     3.17ms    120.67ms     52.76ms     31.75ms    55.18%
time to 1st byte:    18.15ms    146.92ms    102.84ms     32.10ms    81.35%
req/s           :    5598.54    21537.03     9139.59     2498.96    74.90%
[info] CPU 5374.9% | Mem 773MiB

[run 3/3]
starting benchmark...
progress: Main benchmark duration is started for thread #36.
25% of clients started
.
47.
23.
25.
53.

26.
37Warm-up phase is over for thread #.
52.
35.
3.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
39.
.Main benchmark duration is started for thread #18.

14.
. Stopping all clients.
45. Stopping all clients.

15. Stopping all clients.


60. Stopping all clients.35Stopped all clients for thread #23
. Stopping all clients.
35Stopped all clients for thread #60

54. Stopping all clients.

finished in 5.06s, 9420860.00 req/s, 188.68MB/s
requests: 47104300 total, 47206700 started, 47104300 done, 47104300 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 47104300 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 943.41MB (989235356) total, 89.85MB (94216792) headers (space savings 93.75%), 44.92MB (47104300) data
                     min         max         mean         sd        +/- sd
time for request:      441us     83.36ms     10.45ms      5.16ms    74.02%
time for connect:     4.06ms    118.86ms     53.08ms     32.74ms    56.15%
time to 1st byte:    16.17ms    147.94ms    101.76ms     33.11ms    79.20%
req/s           :    5359.32    20856.85     9198.60     2702.07    74.71%
[info] CPU 5360.1% | Mem 890MiB

=== Best: 9309150 req/s (CPU: 5360.1%, Mem: 890MiB) ===
[info] saved results/baseline-h2/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 2 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static

Test Conn RPS CPU Mem Δ RPS Δ Mem
static 1024 922,048 6457.0% 362MiB ~0% +10.7%
static 4096 880,420 6226.3% 612MiB -0.1% -4.1%
static 6800 849,746 6192.7% 882MiB ~0% +1.0%
Full log
#3 [internal] load metadata for mcr.microsoft.com/dotnet/sdk:11.0-preview
#3 DONE 0.4s

#4 [internal] load .dockerignore
#4 transferring context: 50B done
#4 DONE 0.0s

#5 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa
#5 resolve mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa 0.0s done
#5 DONE 0.0s

#6 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009
#6 resolve mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009 0.0s done
#6 DONE 0.0s

#7 [internal] load build context
#7 transferring context: 74.40kB done
#7 DONE 0.0s

#8 [build 6/6] RUN dotnet publish -c Release --no-self-contained -o /app/out
#8 CACHED

#9 [stage-1 2/3] WORKDIR /app
#9 CACHED

#10 [build 2/6] WORKDIR /source
#10 CACHED

#11 [build 3/6] COPY ioxide-arena.csproj ./
#11 CACHED

#12 [build 5/6] COPY . .
#12 CACHED

#13 [build 4/6] RUN dotnet restore
#13 CACHED

#14 [stage-1 3/3] COPY --from=build /app/out ./
#14 CACHED

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:395159d782435cf42f437174e7d55291b4d4dd267a1c82573dabf50e2fea854d done
#15 exporting config sha256:ad74012f08e9e02b9a693d5a64a8e2d294f2e45fee6abe8a5e21d08db187e5fe done
#15 exporting attestation manifest sha256:64179f75dec84e18ac15b4bf105d037d0a0a7a857c244bd95c3afc501d007e4b 0.0s done
#15 exporting manifest list sha256:0deac470e93c43866d8c93e2a7619df5992d624510069d82e9eb17a83d218295 0.0s done
#15 naming to docker.io/library/httparena-ioxide:latest done
#15 unpacking to docker.io/library/httparena-ioxide:latest done
#15 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ioxide / static / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.20ms    1.59ms  74.01ms   98.46%
    Req/Sec    14.20k     1.33k   28.43k    80.45%
  4611777 requests in 5.10s, 70.33GB read
Requests/sec: 904233.48
Transfer/sec:     13.79GB
[info] CPU 6316.1% | Mem 339MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.07ms  427.95us   7.07ms   71.11%
    Req/Sec    14.45k     1.26k   30.77k    81.70%
  4690818 requests in 5.10s, 71.53GB read
Requests/sec: 919762.46
Transfer/sec:     14.03GB
[info] CPU 6584.5% | Mem 357MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.07ms  428.63us   7.86ms   74.27%
    Req/Sec    14.49k     1.46k   34.04k    90.52%
  4702097 requests in 5.10s, 71.71GB read
Requests/sec: 922048.32
Transfer/sec:     14.06GB
[info] CPU 6457.0% | Mem 362MiB

=== Best: 922048 req/s (CPU: 6457.0%, Mem: 362MiB) ===
[info] saved results/static/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     5.08ms    5.66ms 207.46ms   98.62%
    Req/Sec    13.62k     1.13k   21.42k    94.75%
  4418351 requests in 5.10s, 67.38GB read
Requests/sec: 866217.31
Transfer/sec:     13.21GB
[info] CPU 6292.0% | Mem 567MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.61ms    1.26ms  34.17ms   79.36%
    Req/Sec    13.82k     1.23k   35.83k    97.15%
  4486519 requests in 5.10s, 68.42GB read
Requests/sec: 879638.20
Transfer/sec:     13.41GB
[info] CPU 6566.8% | Mem 598MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.62ms    1.32ms  27.65ms   82.04%
    Req/Sec    13.83k     1.44k   38.13k    95.92%
  4489968 requests in 5.10s, 68.47GB read
Requests/sec: 880420.75
Transfer/sec:     13.43GB
[info] CPU 6226.3% | Mem 612MiB

=== Best: 880420 req/s (CPU: 6226.3%, Mem: 612MiB) ===
[info] saved results/static/4096/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.63ms    6.99ms 198.07ms   97.21%
    Req/Sec    13.11k     1.39k   24.59k    95.15%
  4249005 requests in 5.10s, 64.80GB read
Requests/sec: 833058.85
Transfer/sec:     12.70GB
[info] CPU 6015.1% | Mem 801MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.97ms    2.16ms  49.32ms   87.47%
    Req/Sec    13.34k     1.26k   35.20k    96.35%
  4322297 requests in 5.10s, 65.91GB read
Requests/sec: 847421.32
Transfer/sec:     12.92GB
[info] CPU 6466.1% | Mem 863MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.95ms    1.92ms  27.24ms   84.62%
    Req/Sec    13.33k     1.27k   34.90k    97.06%
  4334278 requests in 5.10s, 66.10GB read
Requests/sec: 849746.96
Transfer/sec:     12.96GB
[info] CPU 6192.7% | Mem 882MiB

=== Best: 849746 req/s (CPU: 6192.7%, Mem: 882MiB) ===
[info] saved results/static/6800/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 3 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV
MDA2AV force-pushed the ioxide-0.4.161-h2-h3 branch from f50a473 to 3a57e03 Compare August 8, 2026 18:44
@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static

Test Conn RPS CPU Mem Δ RPS Δ Mem
static 1024 919,579 6439.6% 360MiB -0.3% +10.1%
static 4096 881,044 6589.5% 618MiB ~0% -3.1%
static 6800 845,939 6289.7% 912MiB -0.5% +4.5%
Full log
#6 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009
#6 resolve mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009 0.1s done
#6 DONE 0.1s

#7 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa
#7 resolve mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa 0.1s done
#7 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 10.49kB done
#5 DONE 0.0s

#8 [build 2/6] WORKDIR /source
#8 CACHED

#9 [build 3/6] COPY ioxide-arena.csproj ./
#9 CACHED

#10 [build 4/6] RUN dotnet restore
#10 CACHED

#11 [build 5/6] COPY . .
#11 DONE 0.1s

#12 [build 6/6] RUN dotnet publish -c Release --no-self-contained -o /app/out
#12 0.964   Determining projects to restore...
#12 1.466   Restored /source/ioxide-arena.csproj (in 227 ms).
#12 1.587 /usr/share/dotnet/sdk/11.0.100-preview.6.26359.118/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(385,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/source/ioxide-arena.csproj]
#12 3.151   ioxide-arena -> /source/bin/Release/net11.0/ioxide-arena.dll
#12 3.170   ioxide-arena -> /app/out/
#12 DONE 3.3s

#13 [stage-1 2/3] WORKDIR /app
#13 CACHED

#14 [stage-1 3/3] COPY --from=build /app/out ./
#14 DONE 0.1s

#15 exporting to image
#15 exporting layers
#15 exporting layers 0.3s done
#15 exporting manifest sha256:fe381b3123b3fbd0d8ac8ad72d371b0a8fed70e8bf55621a2e5a5634f3650b81 0.0s done
#15 exporting config sha256:015fa9f084d3119d7c3e20d3d08cd07940df230e774115e497b9cb9e04190543 0.0s done
#15 exporting attestation manifest sha256:5f1b2d689bda4cc24ceb34989b5823c966b1afac16d5b7aff6e2c7ec464e1f22 0.0s done
#15 exporting manifest list sha256:7aed400196b4cac044a350c79bec9bb78efec69b2df614baec7caf0945c63a53
#15 exporting manifest list sha256:7aed400196b4cac044a350c79bec9bb78efec69b2df614baec7caf0945c63a53 0.0s done
#15 naming to docker.io/library/httparena-ioxide:latest done
#15 unpacking to docker.io/library/httparena-ioxide:latest 0.1s done
#15 DONE 0.5s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

==============================================
=== ioxide / static / 1024c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.52ms    4.97ms 160.38ms   98.74%
    Req/Sec    14.13k     1.47k   27.22k    83.24%
  4587902 requests in 5.10s, 69.96GB read
Requests/sec: 899551.76
Transfer/sec:     13.72GB
[info] CPU 6157.2% | Mem 338MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.07ms  399.29us   6.70ms   68.26%
    Req/Sec    14.44k     1.48k   33.49k    91.70%
  4689700 requests in 5.10s, 71.52GB read
Requests/sec: 919420.48
Transfer/sec:     14.02GB
[info] CPU 6589.9% | Mem 351MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 1024 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.08ms  437.99us   8.99ms   75.49%
    Req/Sec    14.45k     1.49k   31.76k    93.90%
  4689754 requests in 5.10s, 71.52GB read
Requests/sec: 919579.62
Transfer/sec:     14.02GB
[info] CPU 6439.6% | Mem 360MiB

=== Best: 919579 req/s (CPU: 6439.6%, Mem: 360MiB) ===
[info] saved results/static/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static / 4096c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.93ms    3.50ms 132.45ms   97.10%
    Req/Sec    13.60k     1.13k   26.38k    92.94%
  4412207 requests in 5.10s, 67.29GB read
Requests/sec: 865085.03
Transfer/sec:     13.19GB
[info] CPU 6149.0% | Mem 568MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.61ms    1.20ms  42.65ms   79.65%
    Req/Sec    13.84k     1.10k   38.42k    96.32%
  4493291 requests in 5.10s, 68.52GB read
Requests/sec: 881044.53
Transfer/sec:     13.44GB
[info] CPU 6589.5% | Mem 618MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 4096 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.64ms    1.41ms  20.01ms   81.31%
    Req/Sec    13.81k     1.23k   37.03k    94.85%
  4477950 requests in 5.10s, 68.29GB read
Requests/sec: 877940.58
Transfer/sec:     13.39GB
[info] CPU 6084.4% | Mem 646MiB

=== Best: 881044 req/s (CPU: 6589.5%, Mem: 618MiB) ===
[info] saved results/static/4096/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static / 6800c (tool=wrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.40ms    4.75ms 161.17ms   97.56%
    Req/Sec    13.11k     1.40k   22.81k    95.37%
  4250341 requests in 5.10s, 64.82GB read
Requests/sec: 833251.35
Transfer/sec:     12.71GB
[info] CPU 6201.0% | Mem 800MiB

[run 2/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.99ms    2.00ms  48.90ms   87.38%
    Req/Sec    13.30k     1.18k   28.80k    97.12%
  4315050 requests in 5.10s, 65.80GB read
Requests/sec: 845913.08
Transfer/sec:     12.90GB
[info] CPU 6587.3% | Mem 864MiB

[run 3/3]
Running 5s test @ http://localhost:8080
  64 threads and 6800 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     7.97ms    1.92ms  37.26ms   81.96%
    Req/Sec    13.31k     1.24k   38.21k    97.33%
  4314781 requests in 5.10s, 65.80GB read
Requests/sec: 845939.45
Transfer/sec:     12.90GB
[info] CPU 6289.7% | Mem 912MiB

=== Best: 845939 req/s (CPU: 6289.7%, Mem: 912MiB) ===
[info] saved results/static/6800/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 3 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t json-tls --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static-h2

Test Conn RPS CPU Mem Δ RPS Δ Mem
static-h2 256 871,833 5851.3% 718MiB NEW NEW
static-h2 1024 819,409 5954.0% 1.5GiB NEW NEW
Full log
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
2. Stopping all clients.
1. Stopping all clients.
43
47. Stopping all clients.

finished in 5.02s, 830519.60 req/s, 12.60GB/s
requests: 4152598 total, 4160790 started, 4152598 done, 4152598 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4153037 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 63.02GB (67671876824) total, 10.91MB (11439234) headers (space savings 94.11%), 62.92GB (67563253268) data
                     min         max         mean         sd        +/- sd
time for request:      230us    108.29ms     10.44ms      6.42ms    75.53%
time for connect:     3.26ms     64.18ms     32.30ms     12.95ms    66.80%
time to 1st byte:     6.34ms    137.55ms     65.68ms     26.22ms    72.00%
req/s           :       0.00    12734.88     3243.85     1820.54    84.38%
[info] CPU 5513.4% | Mem 588MiB

[run 2/3]
starting benchmark...


36.Warm-up phase is over for thread #
53.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
38. Stopping all clients.

finished in 5.04s, 878724.20 req/s, 13.34GB/s
requests: 4393621 total, 4401813 started, 4393621 done, 4393621 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4394040 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 66.68GB (71600667177) total, 11.54MB (12102432) headers (space savings 94.11%), 66.58GB (71485740186) data
                     min         max         mean         sd        +/- sd
time for request:      287us     53.29ms      9.70ms      5.37ms    69.32%
time for connect:     3.70ms     28.17ms     14.49ms      6.11ms    60.55%
time to 1st byte:     9.46ms     56.84ms     27.64ms      8.08ms    70.31%
req/s           :    1366.07    14073.01     3432.03     1970.88    89.84%
[info] CPU 5851.3% | Mem 718MiB

[run 3/3]
starting benchmark...
41.
28.
.Main benchmark duration is started for thread #26.



62.



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

finished in 5.03s, 862681.60 req/s, 13.09GB/s
requests: 4313408 total, 4321600 started, 4313408 done, 4313408 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4313848 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 65.47GB (70292525284) total, 11.33MB (11881687) headers (space savings 94.11%), 65.36GB (70179696303) data
                     min         max         mean         sd        +/- sd
time for request:      290us     53.28ms      9.85ms      5.54ms    69.61%
time for connect:     4.62ms     27.99ms     15.41ms      6.31ms    58.20%
time to 1st byte:    13.77ms     47.39ms     28.02ms      6.43ms    75.10%
req/s           :       0.00    13498.82     3369.39     1859.25    90.23%
[info] CPU 5687.1% | Mem 751MiB

=== Best: 871833 req/s (CPU: 5851.3%, Mem: 718MiB) ===
[info] saved results/static-h2/256/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

==============================================
=== ioxide / static-h2 / 1024c (tool=h2load) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...


.


.
57.Warm-up phase is over for thread #45.

progress: Main benchmark duration is started for thread #25.75
% of clients started
% of clients started
33.
46.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
17. Stopping all clients.
53. Stopping all clients.
11. Stopping all clients.
19. Stopping all clients.
40
13Main benchmark duration is over for thread #. Stopping all clients.
45. Stopping all clients.
. Stopping all clients.

finished in 5.06s, 764312.00 req/s, 11.60GB/s
requests: 3821560 total, 3854328 started, 3821560 done, 3821560 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 3821768 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 58.00GB (62274375177) total, 10.09MB (10584032) headers (space savings 94.08%), 57.90GB (62174327905) data
                     min         max         mean         sd        +/- sd
time for request:      887us    277.05ms     43.27ms     22.34ms    82.18%
time for connect:    16.00ms    153.38ms     87.26ms     33.62ms    58.01%
time to 1st byte:    42.52ms    340.19ms    208.51ms     65.24ms    59.82%
req/s           :       0.00     2212.68      746.23      238.01    85.55%
[info] CPU 5099.5% | Mem 1.2GiB

[run 2/3]
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2



29.
41. Stopping all clients.
55
30. Stopping all clients.
17Stopped all clients for thread #23
. Stopping all clients.



finished in 5.06s, 829170.00 req/s, 12.58GB/s
requests: 4145850 total, 4178618 started, 4145850 done, 4145850 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4146210 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 62.92GB (67558915389) total, 10.95MB (11477227) headers (space savings 94.08%), 62.82GB (67450384970) data
                     min         max         mean         sd        +/- sd
time for request:      470us    247.47ms     38.86ms     16.11ms    73.46%
time for connect:     4.16ms    121.16ms     52.67ms     31.43ms    56.84%
time to 1st byte:    18.36ms    260.00ms    111.95ms     44.43ms    66.47%
req/s           :       0.00     2283.08      809.56      238.31    77.54%
[info] CPU 5954.0% | Mem 1.5GiB

[run 3/3]
starting benchmark...
40.
3Main benchmark duration is started for thread #48.

progress: Main benchmark duration is started for thread #6260.% of clients started

.
.
progress: Main benchmark duration is started for thread #57.
81% of clients started
0.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
8. Stopping all clients.
51. Stopping all clients.
. Stopping all clients.

42. Stopping all clients.
36Stopped all clients for thread #25
. Stopping all clients.


finished in 5.06s, 828628.20 req/s, 12.58GB/s
requests: 4143141 total, 4175909 started, 4143141 done, 4143141 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 4143586 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 62.88GB (67515178734) total, 10.94MB (11470045) headers (space savings 94.08%), 62.78GB (67406718038) data
                     min         max         mean         sd        +/- sd
time for request:      418us    210.97ms     38.99ms     17.69ms    72.80%
time for connect:     4.64ms    120.91ms     54.85ms     32.60ms    55.27%
time to 1st byte:    16.60ms    215.48ms    116.14ms     43.64ms    69.01%
req/s           :       0.00     1961.27      809.04      261.73    65.33%
[info] CPU 5753.5% | Mem 1.8GiB

=== Best: 819409 req/s (CPU: 5954.0%, Mem: 1.5GiB) ===
[info] saved results/static-h2/1024/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 2 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide -t static-h3 --save

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: static-h3

Test Conn RPS CPU Mem Δ RPS Δ Mem
static-h3 64 547,007 3536.5% 741MiB NEW NEW
Full log
#3 DONE 0.4s

#4 [internal] load .dockerignore
#4 transferring context: 50B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [build 1/6] FROM mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa
#6 resolve mcr.microsoft.com/dotnet/sdk:11.0-preview@sha256:21583a8eeae95b29bb323948e984f387d7d990919a87a1a88e360295166ffcaa 0.1s done
#6 DONE 0.1s

#7 [stage-1 1/3] FROM mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009
#7 resolve mcr.microsoft.com/dotnet/runtime:11.0-preview@sha256:e2e9fc5f4f948747e4c1d3ed41172c004f0ef93af7abfa9d4d00437a3824f009 0.1s done
#7 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 77.22kB done
#5 DONE 0.0s

#8 [stage-1 2/3] WORKDIR /app
#8 CACHED

#9 [build 2/6] WORKDIR /source
#9 CACHED

#10 [build 4/6] RUN dotnet restore
#10 CACHED

#11 [build 5/6] COPY . .
#11 CACHED

#12 [build 6/6] RUN dotnet publish -c Release --no-self-contained -o /app/out
#12 CACHED

#13 [build 3/6] COPY ioxide-arena.csproj ./
#13 CACHED

#14 [stage-1 3/3] COPY --from=build /app/out ./
#14 CACHED

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:a291335b206d41de113bb4c7c9da85d88c01295dd1f65ca1abc7c7c7fdbb0f44 done
#15 exporting config sha256:a5b01f8dd038e8e31a9c6e655481b014d8db4f3d0e87cc7a59c37865cd10e14b done
#15 exporting attestation manifest sha256:2767869ea0be6d23a1e5db29e95876fd9992a1cf28e1d1af193822b8daf41767 0.0s done
#15 exporting manifest list sha256:49d2da887eca4b95800244c2c713cd23028d4f4bffbd53bec479dd41163e6341
#15 exporting manifest list sha256:49d2da887eca4b95800244c2c713cd23028d4f4bffbd53bec479dd41163e6341 0.0s done
#15 naming to docker.io/library/httparena-ioxide:latest done
#15 unpacking to docker.io/library/httparena-ioxide:latest done
#15 DONE 0.1s
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches
[info] starting postgres sidecar
[info] postgres ready (seeded)
[info] starting redis sidecar (cpuset=0,64)
[info] redis ready

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

[run 1/3]
starting benchmark...
12.
592.Warm-up phase is over for thread #Main benchmark duration is started for thread #11.
55.

.30

..33progress: 100
% of clients started
..Main benchmark duration is started for thread #

59.51

.
.Main benchmark duration is started for thread #
.Main benchmark duration is started for thread #
51.
.
29.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
12. Stopping all clients.
25
. Stopping all clients.
30

finished in 5.01s, 491392.20 req/s, 7.45GB/s
requests: 2456961 total, 2461057 started, 2456961 done, 2456961 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2457012 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 37.27GB (40014472101) total, 23.78MB (24939716) headers (space savings 84.41%), 37.23GB (39977309701) data
UDP datagram: 227908 sent, 30127538 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.93ms    190.94ms      7.75ms    22.45ms    33.08ms    10.56ms      7.64ms    87.76%
connect     :    27.45ms     34.49ms     31.69ms    33.69ms    34.49ms    31.27ms      2.01ms    57.81%
TTFB        :    65.45ms    128.33ms     79.15ms   127.15ms   128.33ms    89.03ms     20.75ms    68.75%
req/s       :    2694.82    12227.83     7492.44   11225.79   12227.83    7677.10     3136.85    56.25%
min RTT     :      116us      1.68ms       435us     1.43ms     1.68ms      534us       409us    82.81%
smoothed RTT:      410us      3.72ms       955us     3.53ms     3.72ms     1.42ms       984us    78.13%
packets sent:       1256        5640        3324       5549       5640    3563.06     1509.92    51.56%
packets recv:     166183      749566      459228     687983     749566  470745.19   192008.44    56.25%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44           7         12         12       7.29        4.10    42.63%
[info] CPU 3479.4% | Mem 559MiB

[run 2/3]
starting benchmark...

7.
.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
3. Stopping all clients.
52. Stopping all clients.
15. Stopping all clients.

finished in 5.01s, 548091.00 req/s, 8.31GB/s
requests: 2740455 total, 2744551 started, 2740455 done, 2740455 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2740507 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 41.57GB (44631616821) total, 26.53MB (27817824) headers (space savings 84.41%), 41.53GB (44590564835) data
UDP datagram: 249076 sent, 33592428 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.11ms     90.60ms      7.21ms    15.88ms    20.00ms     8.41ms      3.76ms    78.91%
connect     :     1.85ms     29.21ms      3.26ms    18.96ms    29.21ms     4.94ms      5.85ms    92.19%
TTFB        :     2.96ms     37.01ms      8.84ms    34.49ms    37.01ms    13.11ms     10.12ms    81.25%
req/s       :    3736.39    12292.14     8610.61   12009.01   12292.14    8562.88     2667.77    45.31%
min RTT     :       23us      1.07ms       227us      785us     1.07ms      323us       230us    84.38%
smoothed RTT:      366us      2.38ms       795us     2.08ms     2.38ms      988us       487us    76.56%
packets sent:       1696        5872        3815       5583       5872    3893.81     1277.38    45.31%
packets recv:     229689      753490      527696     736097     753490  524884.05   163430.03    45.31%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          45           7         12         12       7.30        4.10    42.62%
[info] CPU 3536.5% | Mem 741MiB

[run 3/3]
starting benchmark...
28.
18.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: .
 256 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3

15. Stopping all clients.


finished in 5.01s, 518204.20 req/s, 7.86GB/s
requests: 2591021 total, 2595117 started, 2591021 done, 2591021 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2591078 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 39.30GB (42197780204) total, 25.08MB (26300881) headers (space savings 84.41%), 39.26GB (42159045673) data
UDP datagram: 232429 sent, 31763443 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.25ms     70.62ms      8.75ms    16.33ms    20.26ms     9.20ms      4.08ms    69.99%
connect     :     1.80ms     21.29ms      3.13ms     6.52ms    21.29ms     3.87ms      3.12ms    95.31%
TTFB        :     3.66ms     30.15ms      5.66ms    27.24ms    30.15ms     9.08ms      7.19ms    84.38%
req/s       :    3969.60    15406.90     7463.07   12374.92   15406.90    8095.97     3121.88    56.25%
min RTT     :       21us      1.15ms       329us      940us     1.15ms      412us       275us    73.44%
smoothed RTT:      427us      2.59ms       997us     2.14ms     2.59ms     1.11ms       536us    71.88%
packets sent:       1805        6813        3322       5633       6813    3633.70     1416.84    56.25%
packets recv:     244135      944190      457420     758676     944190  496306.12   191217.95    56.25%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44           7         12         12       7.29        4.10    42.64%
[info] CPU 3143.6% | Mem 859MiB

=== Best: 547007 req/s (CPU: 3536.5%, Mem: 741MiB) ===
[info] saved results/static-h3/64/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[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/results/ioxide.json - 1 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV

MDA2AV commented Aug 9, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide --save

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 9, 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.

MDA2AV and others added 17 commits August 9, 2026 20:37
- ioxide 0.0.8 -> 0.4.161; add ioxide.nghttp2/ngtcp2/nghttp3, drop ioxide.tls (folded into core)
- migrate renamed APIs (ServerConfig.Tcp, TcpConnection, TcpHandle, RecvSlots)
- TLS is OpenSSL both ways, the fastest backend on loopback (was kTLS TX)
- h2 over TLS (nghttp2) on :8443, HTTP/3 over QUIC (ngtcp2+nghttp3) on udp:8443
- shared h2/h3 routes (baseline2, static) in Multiplexed
- subscribe to static-tls, baseline-h2, static-h2, baseline-h3, static-h3
The benchmark showed json-tls down 16.9% under OpenSSL both ways: on a
saturated 64-core rig the encrypt-into-slab TX path is CPU-bound where
kTLS TX (kernel makes the records on send) is not. Restore KernelTx=true
for the h1 and h2 contexts; RX stays userspace (OpenSSL). h1 write path
returns to plaintext-into-slab. Locally h2 baseline2 rose 66k->211k req/s.
The kTLS path clears MSG_WAITALL at the handoff; the plaintext path kept
it. Clear it there too via the public SendOpFlags property (no nuget
change) - static-tls (WAITALL off) read above static (WAITALL on) under
saturation, so drop it on plaintext and let the bench decide.
Reverts the plaintext WAITALL clear: a controlled A/B (raw TCP, 12
reactors) has WAITALL on faster by 3-10%, and clearing it on the arena
moved static 0% (919,579 vs 920,007 at 1024 conns). The static-tls >
static reading was a cross-run artifact, not a WAITALL effect.
Add KernelRx=true to both TLS contexts so inbound decrypts in the kernel
too - recv delivers plaintext into ring memory, TlsSession.Decrypt is a
passthrough, and the h2 dual pipe uses the kernel reader. Experimental
(the RX handoff races ~1 first connection in 12 on some kernels); this is
to measure how full kTLS compares against the hybrid.
The h2/h3 static routes served identity bodies while the client sends
Accept-Encoding: br - so static-h2 shipped app.js at 204KB where the h1
path serves the 47KB .br, and static-h3 saturated on the oversized
bodies. Cache the .br/.gz variants at startup and serve them by
Accept-Encoding with a content-encoding header, matching the h1 path.
Verified: h2 app.js 6.4k->16.7k req/s, body 204KB->47KB + content-encoding: br.
0.4.167 made ioxide.file io_uring reads only - it hands out a descriptor and
a length, and no longer bakes HTTP responses or caches bytes. So Asset.Response
is gone and StaticAssets takes no maxCachedFileBytes, and the h1 static path
had to move rather than merely compile.

It moved to the fast one. HttpSession frames the response header (the content
type is HTTP's business, so it belongs here) and hands the descriptor to the
handler, which reads the file STRAIGHT INTO the connection's write slab right
behind that header - IORING_OP_READ, no reader buffer, no copy - so header and
body leave in a single flush. Measured in the ioxide repo at 4 KiB on one
saturated reactor, skipping the copy is worth 1.22x throughput and 0.82x CPU
per request.

That is legal on :8081 and :8443 because kTLS transmit is on: with the kernel
making the records, the slab is SUPPOSED to hold plaintext. It would not be
legal under OpenSSL transmit, where the slab must hold ciphertext - which is
why this is a per-deployment property, not a free win.

h2/h3 are untouched here on purpose: Multiplexed loads every asset with
File.ReadAllBytes at startup and serves from memory, so they do no I/O per
request at all. ReadFileAsync would be a regression there.

h2 switches from nghttp2 to the pure-C# ioxide.http2 - three type names, no
native library. Measured in the ioxide repo at 2 reactors, 64 connections,
32 streams, a 2-byte body: 2.46x nghttp2 over TLS at about a third of the CPU
per request. Two caveats worth carrying: the lead narrows as reactors rise and
connections-per-reactor falls (2.76x at 2 reactors, 1.48x at 16), and a 2-byte
body measures framing and HPACK rather than moving data, so the arena's
real payloads may not see the same margin.

Verified: static bytes checksum-identical to disk over plaintext, over TLS h1
and over h2; 60 concurrent fresh TLS connections and 60 plaintext, 200 on all
120, no server errors.
@MDA2AV
MDA2AV force-pushed the ioxide-0.4.161-h2-h3 branch from ef28e2f to 93c8117 Compare August 9, 2026 19:37
@MDA2AV

MDA2AV commented Aug 9, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -f ioxide --save

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ioxide | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 4,071,966 6324.4% 267MiB -0.6% +1.1%
baseline 4096 4,108,420 6401.5% 337MiB -0.7% -3.2%
pipelined 512 53,313,475 6408.6% 226MiB -1.0% +0.4%
pipelined 4096 54,413,228 6434.9% 338MiB +0.8% +7.0%
limited-conn 512 2,481,833 5294.0% 324MiB ~0% +4.5%
limited-conn 4096 2,542,305 5375.2% 494MiB -0.4% +5.1%
json 4096 1,710,801 5975.3% 815MiB -0.4% +5.8%
json-comp 512 943,786 5915.9% 538MiB +2.6% -15.0%
json-comp 4096 913,860 6335.2% 1.3GiB +1.0% -13.3%
json-comp 16384 907,184 5983.2% 4.9GiB +0.2% -2.0%
json-tls 4096 1,789,165 6399.1% 1.1GiB ~0% -8.3%
upload 32 2,414 1984.0% 440MiB -0.2% -1.6%
upload 256 2,405 4904.1% 567MiB -24.3% +13.2%
api-4 256 72,058 283.8% 133MiB +9.1% +8.1%
api-16 1024 246,352 1178.1% 311MiB -3.0% +0.6%
static 1024 927,258 6547.0% 340MiB +0.6% +4.0%
static 4096 907,692 6284.4% 677MiB +3.0% +6.1%
static 6800 879,614 6226.4% 903MiB +3.4% +3.4%
static-tls 1024 1,129,365 6327.0% 480MiB NEW NEW
static-tls 4096 778,964 6358.9% 1002MiB NEW NEW
static-tls 6800 677,575 6254.4% 1.7GiB NEW NEW
async-db 1024 361,761 2988.9% 405MiB +2.2% -4.3%
crud 4096 832,280 3371.2% 656MiB +3.7% -0.2%
baseline-h2 256 10,334,592 4283.1% 438MiB NEW NEW
baseline-h2 1024 12,269,287 5043.5% 698MiB NEW NEW
static-h2 256 1,145,072 5824.3% 683MiB NEW NEW
static-h2 1024 923,698 5692.8% 1.5GiB NEW NEW
baseline-h3 64 3,777,603 3366.4% 261MiB NEW NEW
static-h3 64 534,779 3347.6% 808MiB NEW NEW
Full log
packets sent:       7414       14286       12501      14062      14286   11994.73     2301.69    78.13%
packets recv:     141444      310101      272010     304934     310101  257789.30    55584.26    78.13%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          24           2         22         22       9.39        8.91    70.37%
[info] CPU 3198.6% | Mem 249MiB

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

TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
.Main benchmark duration is started for thread #44.

.

finished in 5.01s, 3785155.20 req/s, 43.32MB/s
requests: 18925776 total, 18929872 started, 18925776 done, 18925776 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 18925796 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 216.59MB (227110896) total, 126.34MB (132480572) headers (space savings 85.11%), 18.05MB (18925796) data
UDP datagram: 891712 sent, 19353555 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      216us     20.67ms       966us     1.82ms     2.32ms     1.11ms       656us    94.10%
connect     :     1.78ms      7.02ms      2.93ms     4.88ms     7.02ms     3.15ms       895us    79.69%
TTFB        :     2.70ms      9.55ms      4.72ms     7.26ms     9.55ms     4.97ms      1.39ms    75.00%
req/s       :   39822.77    66806.50    59767.95   64668.96   66806.50   59138.16     6629.37    87.50%
min RTT     :       15us       477us       202us      453us      477us      191us       154us    45.31%
smoothed RTT:      385us      1.33ms       673us     1.07ms     1.33ms      679us       212us    65.63%
packets sent:       9678       15675       14097      15174      15675   13935.00     1474.04    87.50%
packets recv:     209451      340431      305313     329740     340431  302401.39    32018.88    87.50%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          24           2         20         22       9.15        8.65    62.14%
[info] CPU 3366.4% | Mem 261MiB

[run 3/3]
starting benchmark...
3.
.
13.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3
.

finished in 5.01s, 3745460.80 req/s, 42.86MB/s
requests: 18727304 total, 18731400 started, 18727304 done, 18727304 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 18727304 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 214.32MB (224728992) total, 125.02MB (131091128) headers (space savings 85.11%), 17.86MB (18727304) data
UDP datagram: 886689 sent, 19203730 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      251us      7.76ms       948us     1.93ms     2.64ms     1.13ms       416us    84.04%
connect     :     1.84ms      5.10ms      2.90ms     4.92ms     5.10ms     3.12ms       801us    70.31%
TTFB        :     2.67ms      9.35ms      4.21ms     7.94ms     9.35ms     4.61ms      1.42ms    81.25%
req/s       :   31433.05    67712.99    62117.21   67126.96   67712.99   58517.83    10527.13    79.69%
min RTT     :       15us       471us       218us      469us      471us      227us       181us    40.63%
smoothed RTT:      379us      1.64ms       661us     1.00ms     1.64ms      698us       233us    71.88%
packets sent:       8554       15888       14601      15749      15888   13856.52     2206.45    79.69%
packets recv:     166495      345151      317798     342092     345151  300060.45    51243.56    79.69%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          24           2         21         22       9.07        8.64    63.86%
[info] CPU 3167.6% | Mem 288MiB

=== Best: 3777603 req/s (CPU: 3366.4%, Mem: 261MiB) ===
[info] saved results/baseline-h3/64/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide

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

[run 1/3]
starting benchmark...
3.
.
30.
49.
32.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3

finished in 5.01s, 493330.80 req/s, 7.48GB/s
requests: 2466654 total, 2470750 started, 2466654 done, 2466654 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2466709 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 37.41GB (40172851864) total, 23.88MB (25037826) headers (space savings 84.41%), 37.38GB (40134881610) data
UDP datagram: 225574 sent, 30242015 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     2.42ms    171.96ms      7.76ms    21.44ms    29.30ms    10.01ms      6.87ms    87.92%
connect     :    17.46ms     25.78ms     21.89ms    25.58ms    25.78ms    22.07ms      2.33ms    54.69%
TTFB        :    60.04ms    123.96ms     69.26ms   118.59ms   123.96ms    79.14ms     18.86ms    78.13%
req/s       :    2820.29    11629.29     7718.19   11209.10   11629.29    7707.40     2838.78    51.56%
min RTT     :      103us      1.64ms       433us     1.40ms     1.64ms      529us       387us    82.81%
smoothed RTT:      403us      3.73ms       925us     3.29ms     3.73ms     1.37ms       926us    78.13%
packets sent:       1286        5542        3423       5321       5542    3526.59     1344.37    56.25%
packets recv:     173893      712759      473114     687011     712759  472533.88   173795.17    51.56%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44           7         12         12       7.29        4.10    42.57%
[info] CPU 3409.1% | Mem 485MiB

[run 2/3]
starting benchmark...
.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3

finished in 5.01s, 531435.00 req/s, 8.06GB/s
requests: 2657175 total, 2661271 started, 2657175 done, 2657175 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2657232 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 40.30GB (43275327367) total, 25.72MB (26972154) headers (space savings 84.41%), 40.27GB (43235079672) data
UDP datagram: 238900 sent, 32577568 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.12ms     85.71ms      7.03ms    24.54ms    31.29ms     9.63ms      6.30ms    85.90%
connect     :     1.94ms     46.47ms      3.66ms    36.78ms    46.47ms     7.91ms     10.79ms    87.50%
TTFB        :     3.27ms     59.83ms     13.82ms    58.51ms    59.83ms    19.66ms     17.42ms    78.13%
req/s       :    2341.12    12340.26     8628.82   12145.83   12340.26    8302.75     3371.17    54.69%
min RTT     :       81us      1.97ms       236us     1.02ms     1.97ms      370us       356us    90.63%
smoothed RTT:      448us      5.03ms       789us     4.33ms     5.03ms     1.36ms      1.15ms    90.63%
packets sent:       1068        5597        3825       5529       5597    3734.81     1531.78    56.25%
packets recv:     144334      756323      528849     744383     756323  509026.87   206353.78    54.69%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44           7         12         12       7.28        4.10    42.60%
[info] CPU 3345.9% | Mem 693MiB

[run 3/3]
starting benchmark...

36.
11Main benchmark duration is started for thread #49.
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: ECDH prime256v1 256 bits
Certificate: RSA 2048 bits
Negotiated Group: secp256r1
Resumption: no
Application protocol: h3

finished in 5.01s, 535838.40 req/s, 8.13GB/s
requests: 2679192 total, 2683288 started, 2679192 done, 2679192 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2679243 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 40.64GB (43633894936) total, 25.94MB (27196150) headers (space savings 84.41%), 40.60GB (43594067047) data
UDP datagram: 241608 sent, 32838519 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.02ms     67.85ms      7.89ms    13.71ms    17.11ms     8.48ms      3.24ms    67.46%
connect     :     1.90ms     10.59ms      3.26ms     5.11ms    10.59ms     3.55ms      1.41ms    87.50%
TTFB        :     3.26ms     19.66ms      5.68ms    18.61ms    19.66ms     7.21ms      4.32ms    87.50%
req/s       :    5162.31    13851.60     8200.52   12115.78   13851.60    8371.36     2758.43    43.75%
min RTT     :       61us       815us       232us      560us      815us      318us       176us    71.88%
smoothed RTT:      491us      1.93ms       925us     1.82ms     1.93ms     1.09ms       441us    60.94%
packets sent:       2318        6046        3640       5609       6046    3777.12     1286.35    43.75%
packets recv:     316557      848991      502697     742551     848991  513104.12   169054.16    43.75%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          44           7         12         12       7.29        4.10    42.75%
[info] CPU 3347.6% | Mem 808MiB

=== Best: 534779 req/s (CPU: 3347.6%, Mem: 808MiB) ===
[info] saved results/static-h3/64/ioxide.json
httparena-bench-ioxide
httparena-bench-ioxide
[info] skip: ioxide does not subscribe to gateway-64
[info] skip: ioxide does not subscribe to gateway-h3
[info] skip: ioxide does not subscribe to production-stack
[info] skip: ioxide does not subscribe to unary-grpc
[info] skip: ioxide does not subscribe to unary-grpc-tls
[info] skip: ioxide does not subscribe to stream-grpc
[info] skip: ioxide does not subscribe to stream-grpc-tls
[info] skip: ioxide does not subscribe to echo-ws
[info] skip: ioxide does not subscribe to echo-ws-pipeline
[info] skip: ioxide does not subscribe to echo-ws-limited
[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/results/ioxide.json - 29 new, 29 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV
MDA2AV merged commit cc794d0 into main Aug 9, 2026
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