Skip to content

Vinyl polish - #1197

Merged
MDA2AV merged 6 commits into
MDA2AV:mainfrom
nigoroll:vinyl-polish
Aug 17, 2026
Merged

Vinyl polish#1197
MDA2AV merged 6 commits into
MDA2AV:mainfrom
nigoroll:vinyl-polish

Conversation

@nigoroll

Copy link
Copy Markdown
Contributor

Firstly, thank you to @gquintard for getting this done initially! (ref #1132 https://code.vinyl-cache.org/vinyl-cache/vinyl-cache/issues/4544)

Description

Vinyl Cache has known limits for the kind of synthetic benchmark used here. Switch to the main branch, where we addressed these in part (3 months ago, so this is unrelated to HttpArena)

See https://code.vinyl-cache.org/vinyl-cache/vinyl-cache/pulls/4365 for details.

Also add myself as a maintainer (I am one for Vinyl Cache, see https://vinyl-cache.org/organization/index.html)


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

Command Description
/benchmark -f <framework> Run every test the framework subscribes to
/benchmark -f <framework> -t <test> Run one test only
/benchmark -f <framework> --save Run and save results (updates the leaderboard on merge)
/benchmark -f <framework> -t <test> --save Run one test and save results
/benchmark -f <framework> --compare <other> Measure the deltas against another framework instead of this one
/benchmark-multiple -f <fw1>,<fw2>,... Benchmark several frameworks in one run — takes -t and --save too; saved results land in a single commit
/benchmark-multiple --save No -f needed: benchmark and save every framework the PR touches
/benchmark-test -t <test> Benchmark all enabled frameworks subscribed to <test> and save the results

For /benchmark, always specify -f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory — one table per framework on multi runs. A new benchmark comment while a run is in flight queues behind it (one deep) instead of cancelling it. For multi-framework PRs (dependency bumps, same-language refactors) prefer /benchmark-multiple, which runs everything in a single job and commits all saved results together, so no run overwrites another. --compare works on single-framework runs only.

What the deltas are measured against. By default, this framework's own results published on main - answering "did this change help?". When you are tuning a variant or a successor entry, --compare re-bases them on another entry instead:

/benchmark -f genhttp-11 --compare genhttp

The reply states which baseline it used, and profiles the other framework does not run show n/a rather than a delta.


Run benchmarks locally

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

./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.

Vinyl Cache has known limits for the kind of synthetic benchmark used
here. Switch to the main branch, where we addressed these in part.

See https://code.vinyl-cache.org/vinyl-cache/vinyl-cache/pulls/4365 for
details.

Also add myself as a maintainer (I am one for Vinyl Cache, see
https://vinyl-cache.org/organization/index.html)
@github-actions

Copy link
Copy Markdown
Contributor

👋 Heads up! This PR modifies the following frameworks:

@nigoroll

Copy link
Copy Markdown
Contributor Author

/benchmark -f vinyl-cache

@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: vinyl-cache | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 589,877 6636.8% 184MiB +210.3% -6.6%
baseline 4096 574,561 6625.3% 538MiB +201.1% +183.2%
pipelined 512 575,904 6223.7% 110MiB +98.8% -20.3%
pipelined 4096 560,958 6613.1% 365MiB +81.7% +53.4%
limited-conn 512 411,999 6599.1% 245MiB +125.9% +28.3%
limited-conn 4096 378,298 6592.0% 369MiB +121.3% +2.8%
Full log
  Target:    localhost:8080/
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.26ms    912us   2.80ms   5.61ms   8.15ms

  2022666 requests in 5.00s, 2022670 responses
  Throughput: 404.35K req/s
  Bandwidth:  64.22MB/s
  Status codes: 2xx=2022670, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2022666 / 2022670 responses (100.0%)
  Reconnects: 202242
  Per-template: 674260,674465,673941
  Per-template-ok: 674260,674465,673941
[info] CPU 6104.2% | Mem 223MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.23ms    916us   2.73ms   5.32ms   7.07ms

  2059996 requests in 5.00s, 2059998 responses
  Throughput: 411.82K req/s
  Bandwidth:  65.42MB/s
  Status codes: 2xx=2059998, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2059994 / 2059998 responses (100.0%)
  Reconnects: 205993
  Per-template: 686598,686930,686466
  Per-template-ok: 686598,686930,686466
[info] CPU 6599.1% | Mem 245MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.24ms    932us   2.73ms   5.11ms   6.81ms

  2058441 requests in 5.00s, 2058443 responses
  Throughput: 411.52K req/s
  Bandwidth:  65.37MB/s
  Status codes: 2xx=2058443, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2058436 / 2058443 responses (100.0%)
  Reconnects: 205871
  Per-template: 686263,686287,685886
  Per-template-ok: 686263,686287,685886
[info] CPU 6590.7% | Mem 259MiB

=== Best: 411999 req/s (CPU: 6599.1%, Mem: 245MiB) ===
[info] input BW: 31.83MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/512/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache

==============================================
=== vinyl-cache / limited-conn / 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:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.65ms   1.35ms   8.95ms   27.00ms   227.90ms

  1855783 requests in 5.00s, 1854674 responses
  Throughput: 370.76K req/s
  Bandwidth:  58.95MB/s
  Status codes: 2xx=1854674, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1854671 / 1854674 responses (100.0%)
  Reconnects: 185267
  Per-template: 617040,619773,617858
  Per-template-ok: 617040,619773,617858
[info] CPU 6139.7% | Mem 335MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.13ms   1.32ms   10.80ms   27.30ms   231.70ms

  1890907 requests in 5.00s, 1891491 responses
  Throughput: 378.13K req/s
  Bandwidth:  60.13MB/s
  Status codes: 2xx=1891491, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1891483 / 1891491 responses (100.0%)
  Reconnects: 189246
  Per-template: 629147,631029,631307
  Per-template-ok: 629147,631029,631307
[info] CPU 6592.0% | Mem 369MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.48ms   1.40ms   8.87ms   28.00ms   233.40ms

  1885072 requests in 5.00s, 1884869 responses
  Throughput: 376.86K req/s
  Bandwidth:  59.93MB/s
  Status codes: 2xx=1884869, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1884862 / 1884869 responses (100.0%)
  Reconnects: 188651
  Per-template: 626933,630126,627803
  Per-template-ok: 626933,630126,627803
[info] CPU 6410.9% | Mem 391MiB

=== Best: 378298 req/s (CPU: 6592.0%, Mem: 369MiB) ===
[info] input BW: 29.22MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/4096/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache
[info] skip: vinyl-cache does not subscribe to json
[info] skip: vinyl-cache does not subscribe to json-comp
[info] skip: vinyl-cache does not subscribe to json-tls
[info] skip: vinyl-cache does not subscribe to upload
[info] skip: vinyl-cache does not subscribe to api-4
[info] skip: vinyl-cache does not subscribe to api-16
[info] skip: vinyl-cache does not subscribe to static
[info] skip: vinyl-cache does not subscribe to static-tls
[info] skip: vinyl-cache does not subscribe to async-db
[info] skip: vinyl-cache does not subscribe to crud
[info] skip: vinyl-cache does not subscribe to fortunes
[info] skip: vinyl-cache does not subscribe to baseline-h2
[info] skip: vinyl-cache does not subscribe to static-h2
[info] skip: vinyl-cache does not subscribe to baseline-h2c
[info] skip: vinyl-cache does not subscribe to json-h2c
[info] skip: vinyl-cache does not subscribe to baseline-h3
[info] skip: vinyl-cache does not subscribe to static-h3
[info] skip: vinyl-cache does not subscribe to gateway-64
[info] skip: vinyl-cache does not subscribe to gateway-h3
[info] skip: vinyl-cache does not subscribe to production-stack
[info] skip: vinyl-cache does not subscribe to unary-grpc
[info] skip: vinyl-cache does not subscribe to unary-grpc-tls
[info] skip: vinyl-cache does not subscribe to stream-grpc
[info] skip: vinyl-cache does not subscribe to stream-grpc-tls
[info] skip: vinyl-cache does not subscribe to echo-ws
[info] skip: vinyl-cache does not subscribe to echo-ws-pipeline
[info] skip: vinyl-cache does not subscribe to echo-ws-limited
[info] rebuilding site/data/*.json
[purged stale] zix-grpc.json (zix-grpc)
[purged stale] zix-ws.json (zix-ws)
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/vinyl-cache.json - 6 new, 6 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@nigoroll

Copy link
Copy Markdown
Contributor Author

I have added two more changes, taking advantage of the fact that the PR has not been reviewed yet

  • Turn override of a Makefile into a patch for better maintainability
  • Turn off logging to get comparable results
    @gquintard you might want to consider adding the same change for Varnish Cache

@nigoroll

Copy link
Copy Markdown
Contributor Author

/benchmark -f vinyl-cache

@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: vinyl-cache | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 801,002 6686.8% 183MiB +321.4% -7.1%
baseline 4096 791,801 6521.2% 319MiB +314.9% +67.9%
pipelined 512 2,267,948 6632.0% 109MiB +682.9% -21.0%
pipelined 4096 2,338,582 6535.8% 158MiB +657.5% -33.6%
limited-conn 512 420,404 6493.6% 207MiB +130.5% +8.4%
limited-conn 4096 417,080 6393.2% 230MiB +144.0% -35.9%
Full log
  Target:    localhost:8080/
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.21ms    852us   2.75ms   5.47ms   7.14ms

  2102018 requests in 5.00s, 2102022 responses
  Throughput: 420.28K req/s
  Bandwidth:  66.72MB/s
  Status codes: 2xx=2102022, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2102015 / 2102022 responses (100.0%)
  Reconnects: 210153
  Per-template: 700735,700431,700849
  Per-template-ok: 700735,700431,700849
[info] CPU 6493.6% | Mem 207MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.21ms    879us   2.73ms   5.27ms   7.18ms

  2095433 requests in 5.00s, 2095437 responses
  Throughput: 418.96K req/s
  Bandwidth:  66.55MB/s
  Status codes: 2xx=2095437, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2095432 / 2095437 responses (100.0%)
  Reconnects: 209556
  Per-template: 698417,698555,698460
  Per-template-ok: 698417,698555,698460
[info] CPU 6593.5% | Mem 232MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.21ms    902us   2.70ms   5.07ms   7.00ms

  2085558 requests in 5.00s, 2085560 responses
  Throughput: 416.93K req/s
  Bandwidth:  66.23MB/s
  Status codes: 2xx=2085560, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2085552 / 2085560 responses (100.0%)
  Reconnects: 208540
  Per-template: 694899,695469,695184
  Per-template-ok: 694899,695469,695184
[info] CPU 6578.1% | Mem 248MiB

=== Best: 420404 req/s (CPU: 6493.6%, Mem: 207MiB) ===
[info] input BW: 32.48MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/512/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache

==============================================
=== vinyl-cache / limited-conn / 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:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.10ms    972us   11.70ms   25.20ms   232.00ms

  2086167 requests in 5.00s, 2085401 responses
  Throughput: 416.84K req/s
  Bandwidth:  66.18MB/s
  Status codes: 2xx=2085401, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2085401 / 2085401 responses (100.0%)
  Reconnects: 208207
  Per-template: 694773,696430,694198
  Per-template-ok: 694773,696430,694198
[info] CPU 6393.2% | Mem 230MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.89ms   1.13ms   9.72ms   25.20ms   229.80ms

  2080888 requests in 5.00s, 2081264 responses
  Throughput: 416.06K req/s
  Bandwidth:  66.16MB/s
  Status codes: 2xx=2081264, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2081252 / 2081264 responses (100.0%)
  Reconnects: 208214
  Per-template: 691350,695991,693911
  Per-template-ok: 691350,695991,693911
[info] CPU 6602.4% | Mem 360MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.54ms   1.12ms   9.24ms   24.70ms   227.30ms

  2078371 requests in 5.00s, 2078058 responses
  Throughput: 415.33K req/s
  Bandwidth:  66.05MB/s
  Status codes: 2xx=2078058, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2078049 / 2078058 responses (100.0%)
  Reconnects: 207703
  Per-template: 691138,694292,692619
  Per-template-ok: 691138,694292,692619
[info] CPU 6412.4% | Mem 382MiB

=== Best: 417080 req/s (CPU: 6393.2%, Mem: 230MiB) ===
[info] input BW: 32.22MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/4096/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache
[info] skip: vinyl-cache does not subscribe to json
[info] skip: vinyl-cache does not subscribe to json-comp
[info] skip: vinyl-cache does not subscribe to json-tls
[info] skip: vinyl-cache does not subscribe to upload
[info] skip: vinyl-cache does not subscribe to api-4
[info] skip: vinyl-cache does not subscribe to api-16
[info] skip: vinyl-cache does not subscribe to static
[info] skip: vinyl-cache does not subscribe to static-tls
[info] skip: vinyl-cache does not subscribe to async-db
[info] skip: vinyl-cache does not subscribe to crud
[info] skip: vinyl-cache does not subscribe to fortunes
[info] skip: vinyl-cache does not subscribe to baseline-h2
[info] skip: vinyl-cache does not subscribe to static-h2
[info] skip: vinyl-cache does not subscribe to baseline-h2c
[info] skip: vinyl-cache does not subscribe to json-h2c
[info] skip: vinyl-cache does not subscribe to baseline-h3
[info] skip: vinyl-cache does not subscribe to static-h3
[info] skip: vinyl-cache does not subscribe to gateway-64
[info] skip: vinyl-cache does not subscribe to gateway-h3
[info] skip: vinyl-cache does not subscribe to production-stack
[info] skip: vinyl-cache does not subscribe to unary-grpc
[info] skip: vinyl-cache does not subscribe to unary-grpc-tls
[info] skip: vinyl-cache does not subscribe to stream-grpc
[info] skip: vinyl-cache does not subscribe to stream-grpc-tls
[info] skip: vinyl-cache does not subscribe to echo-ws
[info] skip: vinyl-cache does not subscribe to echo-ws-pipeline
[info] skip: vinyl-cache does not subscribe to echo-ws-limited
[info] rebuilding site/data/*.json
[purged stale] zix-grpc.json (zix-grpc)
[purged stale] zix-ws.json (zix-ws)
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/vinyl-cache.json - 6 new, 6 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV MDA2AV left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the contribution, here are just a few notes before I merge this.

Comment thread frameworks/vinyl-cache/meta.json Outdated
Comment thread frameworks/vinyl-cache/Dockerfile
The previous approach was just copying over a file, which could (and
did) lead to it being out of sync for updates.

Use a patch, which hopefully has a longer lifetime.
To achieve comparable results, avoid any logging related contention

This matches, for example, the nginx config, which has "access_log off;"

As an alternative, the project could decide to also include some logging
requirements.
@nigoroll

Copy link
Copy Markdown
Contributor Author

@MDA2AV feedback addressed in force push

@MDA2AV

MDA2AV commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Doing a final run with save flag to publish results and docker logs

/benchmark -f vinyl-cache --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 Results

Framework: vinyl-cache | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 788,894 6675.2% 186MiB +315.0% -5.6%
baseline 4096 797,101 6471.8% 309MiB +317.7% +62.6%
pipelined 512 2,325,451 6640.7% 109MiB +702.8% -21.0%
pipelined 4096 2,402,549 6482.9% 179MiB +678.2% -24.8%
limited-conn 512 418,468 6440.7% 202MiB +129.5% +5.8%
limited-conn 4096 411,566 6390.9% 231MiB +140.8% -35.7%
Full log
  Target:    localhost:8080/
  Threads:   64
  Conns:     512 (8/thread)
  Pipeline:  1
  Req/conn:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.22ms    857us   2.76ms   5.68ms   7.34ms

  2092340 requests in 5.00s, 2092343 responses
  Throughput: 418.33K req/s
  Bandwidth:  66.41MB/s
  Status codes: 2xx=2092343, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2092336 / 2092343 responses (100.0%)
  Reconnects: 209159
  Per-template: 697538,697333,697465
  Per-template-ok: 697538,697333,697465
[info] CPU 6440.7% | Mem 202MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.22ms    899us   2.73ms   5.18ms   7.00ms

  2086438 requests in 5.00s, 2086443 responses
  Throughput: 417.10K req/s
  Bandwidth:  66.25MB/s
  Status codes: 2xx=2086443, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2086438 / 2086443 responses (100.0%)
  Reconnects: 208604
  Per-template: 695751,695599,695088
  Per-template-ok: 695751,695599,695088
[info] CPU 6591.3% | Mem 226MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.22ms    905us   2.72ms   5.03ms   6.74ms

  2081807 requests in 5.00s, 2081812 responses
  Throughput: 416.19K req/s
  Bandwidth:  66.11MB/s
  Status codes: 2xx=2081812, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2081805 / 2081812 responses (100.0%)
  Reconnects: 208185
  Per-template: 693909,694012,693884
  Per-template-ok: 693909,694012,693884
[info] CPU 6554.2% | Mem 243MiB

=== Best: 418468 req/s (CPU: 6440.7%, Mem: 202MiB) ===
[info] input BW: 32.33MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/512/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache

==============================================
=== vinyl-cache / limited-conn / 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:  10
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.74ms   1.05ms   12.20ms   25.40ms   235.90ms

  2058200 requests in 5.00s, 2057832 responses
  Throughput: 411.41K req/s
  Bandwidth:  65.32MB/s
  Status codes: 2xx=2057832, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2057827 / 2057832 responses (100.0%)
  Reconnects: 205636
  Per-template: 685391,687463,684973
  Per-template-ok: 685391,687463,684973
[info] CPU 6390.9% | Mem 231MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.31ms   1.07ms   10.00ms   25.50ms   230.70ms

  2055532 requests in 5.00s, 2055168 responses
  Throughput: 410.88K req/s
  Bandwidth:  65.31MB/s
  Status codes: 2xx=2055168, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2055157 / 2055168 responses (100.0%)
  Reconnects: 205487
  Per-template: 684061,686285,684811
  Per-template-ok: 684061,686285,684811
[info] CPU 6588.7% | Mem 290MiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.30ms   1.14ms   9.00ms   25.00ms   225.30ms

  2045965 requests in 5.00s, 2045597 responses
  Throughput: 408.91K req/s
  Bandwidth:  65.03MB/s
  Status codes: 2xx=2045597, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2045591 / 2045597 responses (100.0%)
  Reconnects: 204382
  Per-template: 680785,683418,681388
  Per-template-ok: 680785,683418,681388
[info] CPU 6409.0% | Mem 370MiB

=== Best: 411566 req/s (CPU: 6390.9%, Mem: 231MiB) ===
[info] input BW: 31.79MB/s (avg template: 81 bytes)
[info] saved results/limited-conn/4096/vinyl-cache.json
httparena-bench-vinyl-cache
httparena-bench-vinyl-cache
[info] skip: vinyl-cache does not subscribe to json
[info] skip: vinyl-cache does not subscribe to json-comp
[info] skip: vinyl-cache does not subscribe to json-tls
[info] skip: vinyl-cache does not subscribe to upload
[info] skip: vinyl-cache does not subscribe to api-4
[info] skip: vinyl-cache does not subscribe to api-16
[info] skip: vinyl-cache does not subscribe to static
[info] skip: vinyl-cache does not subscribe to static-tls
[info] skip: vinyl-cache does not subscribe to async-db
[info] skip: vinyl-cache does not subscribe to crud
[info] skip: vinyl-cache does not subscribe to fortunes
[info] skip: vinyl-cache does not subscribe to baseline-h2
[info] skip: vinyl-cache does not subscribe to static-h2
[info] skip: vinyl-cache does not subscribe to baseline-h2c
[info] skip: vinyl-cache does not subscribe to json-h2c
[info] skip: vinyl-cache does not subscribe to baseline-h3
[info] skip: vinyl-cache does not subscribe to static-h3
[info] skip: vinyl-cache does not subscribe to gateway-64
[info] skip: vinyl-cache does not subscribe to gateway-h3
[info] skip: vinyl-cache does not subscribe to production-stack
[info] skip: vinyl-cache does not subscribe to unary-grpc
[info] skip: vinyl-cache does not subscribe to unary-grpc-tls
[info] skip: vinyl-cache does not subscribe to stream-grpc
[info] skip: vinyl-cache does not subscribe to stream-grpc-tls
[info] skip: vinyl-cache does not subscribe to echo-ws
[info] skip: vinyl-cache does not subscribe to echo-ws-pipeline
[info] skip: vinyl-cache does not subscribe to echo-ws-limited
[info] rebuilding site/data/*.json
[purged stale] zix-grpc.json (zix-grpc)
[purged stale] zix-ws.json (zix-ws)
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/vinyl-cache.json - 6 new, 6 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV
MDA2AV merged commit ef09cb2 into MDA2AV:main Aug 17, 2026
@nigoroll
nigoroll deleted the vinyl-polish branch August 17, 2026 13:20
@gquintard gquintard mentioned this pull request Aug 17, 2026
MDA2AV pushed a commit that referenced this pull request Aug 17, 2026
* Varnish polish

take a page out of #1197 and disable logs.

Also, lowercase `display_name` to align to the repository style.

* Benchmark results: varnish  [skip ci]

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
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