Skip to content

[userver] move to v3.0#624

Merged
MDA2AV merged 1 commit into
MDA2AV:mainfrom
botanegg:userver
Apr 24, 2026
Merged

[userver] move to v3.0#624
MDA2AV merged 1 commit into
MDA2AV:mainfrom
botanegg:userver

Conversation

@botanegg
Copy link
Copy Markdown
Contributor

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.

@botanegg botanegg changed the title move to userver v3.0 [userver] move to v3.0 Apr 24, 2026
@botanegg
Copy link
Copy Markdown
Contributor Author

/benchmark -f userver --save

@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 run triggered for userver (all tests) with --save. Results will be posted here when done.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: userver | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 626,174 6056.2% 211MiB +66.8% +12.8%
baseline 4096 1,025,643 6435.7% 428MiB +21.5% +7.0%
pipelined 512 1,556,085 6707.8% 255MiB -3.7% +9.4%
pipelined 4096 1,436,273 6688.3% 875MiB -3.9% +16.0%
Full log

  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.04ms   3.32ms   7.05ms   12.80ms   15.10ms

  5068430 requests in 5.00s, 5068430 responses
  Throughput: 1.01M req/s
  Bandwidth:  139.18MB/s
  Status codes: 2xx=5068430, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5068414 / 5068430 responses (100.0%)
  Per-template: 1690659,1688850,1688905
  Per-template-ok: 1690659,1688850,1688905
[info] CPU 6204.6% | Mem 440MiB

=== Best: 1025643 req/s (CPU: 6435.7%, Mem: 428MiB) ===
[info] input BW: 79.23MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/userver.json
httparena-bench-userver
httparena-bench-userver

==============================================
=== userver / pipelined / 512c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.26ms   5.27ms   6.75ms   8.73ms   10.20ms

  7780429 requests in 5.00s, 7780429 responses
  Throughput: 1.56M req/s
  Bandwidth:  213.64MB/s
  Status codes: 2xx=7780429, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7780396 / 7780429 responses (100.0%)
[info] CPU 6707.8% | Mem 255MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.28ms   5.32ms   6.69ms   8.61ms   10.20ms

  7756854 requests in 5.00s, 7756854 responses
  Throughput: 1.55M req/s
  Bandwidth:  212.99MB/s
  Status codes: 2xx=7756854, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7756825 / 7756854 responses (100.0%)
[info] CPU 6707.5% | Mem 260MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.30ms   5.32ms   6.77ms   8.70ms   10.10ms

  7726453 requests in 5.00s, 7726453 responses
  Throughput: 1.54M req/s
  Bandwidth:  212.16MB/s
  Status codes: 2xx=7726453, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7726415 / 7726453 responses (100.0%)
[info] CPU 6736.7% | Mem 262MiB

=== Best: 1556085 req/s (CPU: 6707.8%, Mem: 255MiB) ===
[info] saved results/pipelined/512/userver.json
httparena-bench-userver
httparena-bench-userver

==============================================
=== userver / pipelined / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   45.74ms   45.60ms   53.80ms   62.40ms   108.10ms

  7174522 requests in 5.00s, 7174522 responses
  Throughput: 1.43M req/s
  Bandwidth:  197.00MB/s
  Status codes: 2xx=7174522, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7174439 / 7174522 responses (100.0%)
[info] CPU 6529.6% | Mem 825MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   45.53ms   45.70ms   53.70ms   60.40ms   65.50ms

  7184822 requests in 5.00s, 7181366 responses
  Throughput: 1.44M req/s
  Bandwidth:  197.19MB/s
  Status codes: 2xx=7181366, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7181350 / 7181366 responses (100.0%)
[info] CPU 6688.3% | Mem 875MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   45.62ms   45.70ms   53.90ms   60.90ms   66.30ms

  7179355 requests in 5.00s, 7179355 responses
  Throughput: 1.44M req/s
  Bandwidth:  197.14MB/s
  Status codes: 2xx=7179355, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7179333 / 7179355 responses (100.0%)
[info] CPU 6595.7% | Mem 880MiB

=== Best: 1436273 req/s (CPU: 6688.3%, Mem: 875MiB) ===
[info] saved results/pipelined/4096/userver.json
httparena-bench-userver
httparena-bench-userver
[info] skip: userver does not subscribe to limited-conn
[info] skip: userver does not subscribe to json
[info] skip: userver does not subscribe to json-comp
[info] skip: userver does not subscribe to json-tls
[info] skip: userver does not subscribe to upload
[info] skip: userver does not subscribe to api-4
[info] skip: userver does not subscribe to api-16
[info] skip: userver does not subscribe to static
[info] skip: userver does not subscribe to async-db
[info] skip: userver does not subscribe to crud
[info] skip: userver does not subscribe to baseline-h2
[info] skip: userver does not subscribe to static-h2
[info] skip: userver does not subscribe to baseline-h2c
[info] skip: userver does not subscribe to json-h2c
[info] skip: userver does not subscribe to baseline-h3
[info] skip: userver does not subscribe to static-h3
[info] skip: userver does not subscribe to gateway-64
[info] skip: userver does not subscribe to gateway-h3
[info] skip: userver does not subscribe to production-stack
[info] skip: userver does not subscribe to unary-grpc
[info] skip: userver does not subscribe to unary-grpc-tls
[info] skip: userver does not subscribe to stream-grpc
[info] skip: userver does not subscribe to stream-grpc-tls
[info] skip: userver does not subscribe to echo-ws
[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/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@MDA2AV MDA2AV merged commit 39d7237 into MDA2AV:main Apr 24, 2026
4 checks passed
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.

2 participants