Skip to content

Twinflow - ASPNET io_uring comparisons#759

Open
MDA2AV wants to merge 1 commit into
mainfrom
tflw
Open

Twinflow - ASPNET io_uring comparisons#759
MDA2AV wants to merge 1 commit into
mainfrom
tflw

Conversation

@MDA2AV
Copy link
Copy Markdown
Owner

@MDA2AV MDA2AV commented May 23, 2026

Description


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

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

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


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

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

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

@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented May 23, 2026

/benchmark -f aspnet-minimal-twinflow -t baseline

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: aspnet-minimal-twinflow | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,352,180 5664.3% 415MiB NEW NEW
baseline 4096 1,300,606 5963.4% 600MiB NEW NEW
Full log
#17 exporting layers done
#17 exporting manifest sha256:a27a23ac9f8e6987daeca660778894809892c1409516acfdb70bda0ff60a97c3 done
#17 exporting config sha256:c3bea30e278342f1760f7c3cdd147a0b4d6432bc54336f84f365e5563df4e928 done
#17 exporting attestation manifest sha256:43472c448b6b76210903c960323f48e25768d80483cba02ac2f680377a485891 0.0s done
#17 exporting manifest list sha256:4ad0ce8f0390991c4f9dc91b0c079a98ca4b2c65c7c44cd8969683562ef40e81 0.0s done
#17 naming to docker.io/library/httparena-aspnet-minimal-twinflow:latest
#17 naming to docker.io/library/httparena-aspnet-minimal-twinflow:latest done
#17 unpacking to docker.io/library/httparena-aspnet-minimal-twinflow:latest 0.0s done
#17 DONE 0.2s
[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

==============================================
=== aspnet-minimal-twinflow / baseline / 512c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    764us    451us   1.57ms   4.63ms   10.10ms

  3301614 requests in 5.00s, 3301614 responses
  Throughput: 660.16K req/s
  Bandwidth:  101.36MB/s
  Status codes: 2xx=3301614, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3301608 / 3301614 responses (100.0%)
  Per-template: 1126802,1106174,1068632
  Per-template-ok: 1126802,1106174,1068632
[info] CPU 5612.2% | Mem 412MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    364us    283us    399us   2.02ms   4.67ms

  6760903 requests in 5.00s, 6761549 responses
  Throughput: 1.35M req/s
  Bandwidth:  207.57MB/s
  Status codes: 2xx=6760903, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6760870 / 6761549 responses (100.0%)
  Per-template: 2313308,2213952,2233610
  Per-template-ok: 2313308,2213952,2233610

  WARNING: 646/6761549 responses (0.0%) had unexpected status (expected 2xx)
[info] CPU 5664.3% | Mem 415MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    372us    292us    413us   1.98ms   4.84ms

  6665147 requests in 5.00s, 6665147 responses
  Throughput: 1.33M req/s
  Bandwidth:  204.60MB/s
  Status codes: 2xx=6665147, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6665122 / 6665147 responses (100.0%)
  Per-template: 2242333,2242611,2180178
  Per-template-ok: 2242333,2242611,2180178
[info] CPU 5596.4% | Mem 418MiB

=== Best: 1352180 req/s (CPU: 5664.3%, Mem: 415MiB) ===
[info] input BW: 104.45MB/s (avg template: 81 bytes)
[info] saved results/baseline/512/aspnet-minimal-twinflow.json
httparena-bench-aspnet-minimal-twinflow
httparena-bench-aspnet-minimal-twinflow

==============================================
=== aspnet-minimal-twinflow / baseline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.31ms   4.92ms   8.85ms   17.60ms   45.30ms

  3399841 requests in 5.00s, 3397586 responses
  Throughput: 679.35K req/s
  Bandwidth:  104.31MB/s
  Status codes: 2xx=3397586, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3397586 / 3397586 responses (100.0%)
  Per-template: 1136600,1133695,1127291
  Per-template-ok: 1136600,1133695,1127291
[info] CPU 5640.2% | Mem 523MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.17ms   2.59ms   5.29ms   8.93ms   22.80ms

  6427538 requests in 5.00s, 6427510 responses
  Throughput: 1.29M req/s
  Bandwidth:  197.33MB/s
  Status codes: 2xx=6427510, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6427480 / 6427510 responses (100.0%)
  Per-template: 2149006,2140279,2138195
  Per-template-ok: 2149006,2140279,2138194
[info] CPU 6118.7% | Mem 584MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.05ms   2.51ms   5.25ms   8.63ms   16.30ms

  6504634 requests in 5.00s, 6503033 responses
  Throughput: 1.30M req/s
  Bandwidth:  199.65MB/s
  Status codes: 2xx=6503033, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6503024 / 6503033 responses (100.0%)
  Per-template: 2176512,2162304,2164208
  Per-template-ok: 2176512,2162304,2164208
[info] CPU 5963.4% | Mem 600MiB

=== Best: 1300606 req/s (CPU: 5963.4%, Mem: 600MiB) ===
[info] input BW: 100.47MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/aspnet-minimal-twinflow.json
httparena-bench-aspnet-minimal-twinflow
httparena-bench-aspnet-minimal-twinflow
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented May 23, 2026

/benchmark -f aspnet-minimal -t baseline

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: aspnet-minimal | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,317,275 5196.2% 245MiB -24.0% +11.2%
baseline 4096 1,318,032 5404.9% 347MiB -21.6% +26.5%
Full log
#17 exporting to image
#17 exporting layers
#17 exporting layers 0.3s done
#17 exporting manifest sha256:c5c0f2a6f2b23d9f9115d38fce2dec336914ce4530bf7868d4fdfb8cb5c08dff 0.0s done
#17 exporting config sha256:82192373cfc4450cad518899f32f59c7a7adf531a36f536ff9540c74969821a4 0.0s done
#17 exporting attestation manifest sha256:46a8c5d825e6ebb0e74d84771eb277227696a6075f4fb2db39b8ca5536b8903c 0.0s done
#17 exporting manifest list sha256:d463a6c1743941b6857e3e588c61d59b4bef1d215348b28538301e1ba6201699
#17 exporting manifest list sha256:d463a6c1743941b6857e3e588c61d59b4bef1d215348b28538301e1ba6201699 0.0s done
#17 naming to docker.io/library/httparena-aspnet-minimal:latest done
#17 unpacking to docker.io/library/httparena-aspnet-minimal:latest 0.1s done
#17 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

==============================================
=== aspnet-minimal / baseline / 512c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    719us    415us   1.61ms   4.35ms   7.27ms

  3560972 requests in 5.00s, 3560972 responses
  Throughput: 712.03K req/s
  Bandwidth:  109.33MB/s
  Status codes: 2xx=3560972, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3560972 / 3560972 responses (100.0%)
  Per-template: 1209864,1191738,1159370
  Per-template-ok: 1209864,1191738,1159370
[info] CPU 5145.3% | Mem 243MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    388us    261us    595us   1.93ms   4.93ms

  6586376 requests in 5.00s, 6586376 responses
  Throughput: 1.32M req/s
  Bandwidth:  202.21MB/s
  Status codes: 2xx=6586376, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6586340 / 6586376 responses (100.0%)
  Per-template: 2212131,2204030,2170179
  Per-template-ok: 2212131,2204030,2170179
[info] CPU 5196.2% | Mem 245MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    393us    261us    604us   2.15ms   5.04ms

  6492968 requests in 5.00s, 6492967 responses
  Throughput: 1.30M req/s
  Bandwidth:  199.34MB/s
  Status codes: 2xx=6492967, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6492944 / 6492967 responses (100.0%)
  Per-template: 2184669,2171238,2137037
  Per-template-ok: 2184669,2171238,2137037
[info] CPU 5166.2% | Mem 247MiB

=== Best: 1317275 req/s (CPU: 5196.2%, Mem: 245MiB) ===
[info] input BW: 101.76MB/s (avg template: 81 bytes)
[info] saved results/baseline/512/aspnet-minimal.json
httparena-bench-aspnet-minimal
httparena-bench-aspnet-minimal

==============================================
=== aspnet-minimal / baseline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.75ms   4.30ms   9.20ms   15.60ms   31.90ms

  3001158 requests in 5.00s, 2997857 responses
  Throughput: 599.43K req/s
  Bandwidth:  92.04MB/s
  Status codes: 2xx=2997857, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2997855 / 2997857 responses (100.0%)
  Per-template: 1001671,1000165,996019
  Per-template-ok: 1001671,1000165,996019
[info] CPU 5405.2% | Mem 308MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.36ms   1.87ms   4.76ms   8.34ms   13.40ms

  6556424 requests in 5.00s, 6553663 responses
  Throughput: 1.31M req/s
  Bandwidth:  201.20MB/s
  Status codes: 2xx=6553663, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6553663 / 6553663 responses (100.0%)
  Per-template: 2197017,2177267,2179379
  Per-template-ok: 2197017,2177267,2179379
[info] CPU 5495.7% | Mem 333MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.60ms   2.00ms   4.97ms   8.37ms   12.20ms

  6593272 requests in 5.00s, 6590160 responses
  Throughput: 1.32M req/s
  Bandwidth:  202.32MB/s
  Status codes: 2xx=6590160, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6590145 / 6590160 responses (100.0%)
  Per-template: 2212816,2201353,2175976
  Per-template-ok: 2212816,2201353,2175976
[info] CPU 5404.9% | Mem 347MiB

=== Best: 1318032 req/s (CPU: 5404.9%, Mem: 347MiB) ===
[info] input BW: 101.81MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/aspnet-minimal.json
httparena-bench-aspnet-minimal
httparena-bench-aspnet-minimal
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented May 23, 2026

/benchmark -f aspnet-minimal-iouring -t baseline

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: aspnet-minimal-iouring | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,185,970 4817.7% 222MiB -28.6% +3.7%
baseline 4096 1,210,920 5166.1% 373MiB -28.4% +25.2%
Full log
#25 exporting layers
#25 exporting layers 2.5s done
#25 exporting manifest sha256:9efeead4fe3474bb003a6e441cb2b6e52c534b7e9cc76f2e523fc40a0d9099d5 0.0s done
#25 exporting config sha256:750e6cff58d2d8dbe3382ae34cfdd14c3478b25e6d80906179e4cf9c8ef2610b 0.0s done
#25 exporting attestation manifest sha256:23816cf0b2359df15197de2464cb0f4c62af2f2c2e6b77721e88181ba35db74a 0.1s done
#25 exporting manifest list sha256:9de872f44c83f63cf24213039f7e5a0215765e2a8f7eb9c5b627ac4900fb7524
#25 exporting manifest list sha256:9de872f44c83f63cf24213039f7e5a0215765e2a8f7eb9c5b627ac4900fb7524 0.0s done
#25 naming to docker.io/library/httparena-aspnet-minimal-iouring:latest done
#25 unpacking to docker.io/library/httparena-aspnet-minimal-iouring:latest
#25 unpacking to docker.io/library/httparena-aspnet-minimal-iouring:latest 2.5s done
#25 DONE 5.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

==============================================
=== aspnet-minimal-iouring / baseline / 512c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.02ms    567us   2.48ms   6.39ms   13.50ms

  2501521 requests in 5.00s, 2501521 responses
  Throughput: 500.19K req/s
  Bandwidth:  91.59MB/s
  Status codes: 2xx=2501521, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2501521 / 2501521 responses (100.0%)
  Per-template: 858726,836874,805921
  Per-template-ok: 858726,836874,805921
[info] CPU 4941.0% | Mem 209MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    431us    293us    553us   2.79ms   4.92ms

  5929853 requests in 5.00s, 5929852 responses
  Throughput: 1.19M req/s
  Bandwidth:  217.10MB/s
  Status codes: 2xx=5929852, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5929831 / 5929852 responses (100.0%)
  Per-template: 1992615,1981735,1955481
  Per-template-ok: 1992615,1981735,1955481
[info] CPU 4817.7% | Mem 222MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    454us    314us    585us   3.06ms   5.07ms

  5622348 requests in 5.00s, 5622348 responses
  Throughput: 1.12M req/s
  Bandwidth:  205.85MB/s
  Status codes: 2xx=5622348, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5622341 / 5622348 responses (100.0%)
  Per-template: 1889979,1876896,1855466
  Per-template-ok: 1889979,1876896,1855466
[info] CPU 4706.5% | Mem 225MiB

=== Best: 1185970 req/s (CPU: 4817.7%, Mem: 222MiB) ===
[info] input BW: 91.61MB/s (avg template: 81 bytes)
[info] saved results/baseline/512/aspnet-minimal-iouring.json
httparena-bench-aspnet-minimal-iouring
httparena-bench-aspnet-minimal-iouring

==============================================
=== aspnet-minimal-iouring / baseline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   7.64ms   5.37ms   13.60ms   34.60ms   85.60ms

  2291592 requests in 5.00s, 2288442 responses
  Throughput: 457.57K req/s
  Bandwidth:  83.78MB/s
  Status codes: 2xx=2288442, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2288442 / 2288442 responses (100.0%)
  Per-template: 766680,764213,757549
  Per-template-ok: 766680,764213,757549
[info] CPU 5464.7% | Mem 284MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.02ms   2.11ms   5.89ms   10.60ms   17.20ms

  5777851 requests in 5.00s, 5774629 responses
  Throughput: 1.15M req/s
  Bandwidth:  211.42MB/s
  Status codes: 2xx=5774629, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5774616 / 5774629 responses (100.0%)
  Per-template: 1925046,1935086,1914484
  Per-template-ok: 1925046,1935086,1914484
[info] CPU 5196.2% | Mem 339MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.89ms   1.92ms   5.35ms   9.79ms   17.70ms

  6057720 requests in 5.00s, 6054603 responses
  Throughput: 1.21M req/s
  Bandwidth:  221.67MB/s
  Status codes: 2xx=6054603, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6054574 / 6054603 responses (100.0%)
  Per-template: 2049072,1998964,2006538
  Per-template-ok: 2049072,1998964,2006538
[info] CPU 5166.1% | Mem 373MiB

=== Best: 1210920 req/s (CPU: 5166.1%, Mem: 373MiB) ===
[info] input BW: 93.54MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/aspnet-minimal-iouring.json
httparena-bench-aspnet-minimal-iouring
httparena-bench-aspnet-minimal-iouring
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@MDA2AV MDA2AV changed the title tflow Twinflow - ASPNET io_uring comparisons May 25, 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