Skip to content

fishcake: add static, json-comp and json-tls profiles#803

Merged
MDA2AV merged 3 commits into
mainfrom
add-fishcake-profiles
Jun 4, 2026
Merged

fishcake: add static, json-comp and json-tls profiles#803
MDA2AV merged 3 commits into
mainfrom
add-fishcake-profiles

Conversation

@MDA2AV
Copy link
Copy Markdown
Owner

@MDA2AV MDA2AV commented Jun 4, 2026

Adds the three remaining isolated HTTP/1.1 profiles to the fishcake (CodeGreen / Kotlin) entry. ./scripts/validate.sh fishcake passes 41/0 across 12 profiles (was 9), via the real Docker build (clones CodeGreen main).

Profile Implementation
static StaticFiles.kt serves /data/static with pre-compressed variant selection — serves the on-disk .br/.gz sibling (original Content-Type + matching Content-Encoding) when the client accepts it, else the raw file; 404 for missing.
json-comp Enables the gzip compression concern on the host (.add(Compression.default())) so /json carries Content-Encoding: gzip only when Accept-Encoding is sent.
json-tls Binds HTTPS on :8081 with the harness certificate (/certs), serving HTTP/1.1 over TLS.

These rely on CodeGreen features now merged to main — PR dotnet-web-stack/CodeGreen#9 (response compression + TLS + pipelined flush-coalescing) and #10 (request-body streaming) — so the Dockerfile clones main.

🤖 Generated with Claude Code

Adds the three remaining isolated HTTP/1.1 profiles to the CodeGreen entry:

- static: serves /data/static with pre-compressed variant selection (serves the
  on-disk .br/.gz sibling with the original file's Content-Type when the client
  accepts it, else the raw file; 404 for a missing file). Implemented in the entry
  (StaticFiles.kt) on CodeGreen's IO primitives.
- json-comp: enables the gzip compression concern on the host (.add(Compression.default()))
  so /json responses carry Content-Encoding: gzip only when Accept-Encoding is sent.
- json-tls: binds HTTPS on :8081 with the harness certificate (/certs), serving HTTP/1.1
  over TLS.

json-comp and json-tls rely on the response-compression module + TLS engine support added
in CodeGreen PR dotnet-web-stack/CodeGreen#9; the Dockerfile temporarily clones that branch
(add-compression-tls) until it merges to stream-bodies.

./scripts/validate.sh fishcake passes 41/0 (12 profiles).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented Jun 4, 2026

/benchmark -f fishcake

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Benchmark Results

Framework: fishcake | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,885,577 6491.9% 8.3GiB NEW NEW
baseline 4096 1,898,569 6173.1% 8.3GiB NEW NEW
pipelined 512 3,716,289 6472.6% 3.8GiB NEW NEW
pipelined 4096 3,236,878 6384.7% 7.2GiB NEW NEW
limited-conn 512 591,193 3492.6% 3.1GiB NEW NEW
limited-conn 4096 595,394 3312.6% 3.3GiB NEW NEW
json 4096 455,712 2840.7% 5.3GiB NEW NEW
json-comp 512 340,814 5244.4% 5.8GiB NEW NEW
json-comp 4096 372,466 5395.5% 5.6GiB NEW NEW
json-comp 16384 346,770 4633.4% 6.1GiB NEW NEW
json-tls 4096 412,987 2964.7% 11.2GiB NEW NEW
upload 32 1,915 4208.2% 5.8GiB NEW NEW
upload 256 2,017 6218.2% 23.8GiB NEW NEW
api-4 256 52,386 402.2% 686MiB NEW NEW
api-16 1024 125,752 1642.1% 1.3GiB NEW NEW
static 1024 371,736 4192.6% 7.5GiB NEW NEW
static 4096 366,015 4147.0% 7.8GiB NEW NEW
static 6800 376,124 4111.4% 9.5GiB NEW NEW
async-db 1024 211,882 4617.5% 5.5GiB NEW NEW
crud 4096 445,279 3603.8% 5.3GiB NEW NEW
Full log


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.21ms   3.99ms   7.05ms   33.50ms   121.50ms

  1805536 requests in 10.00s, 1805540 responses
  Throughput: 180.51K req/s
  Bandwidth:  696.50MB/s
  Status codes: 2xx=1805540, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1805540 / 1805540 responses (100.0%)
  Reconnects: 71713
  Per-template: 360039,360931,362049,362202,360319
  Per-template-ok: 360039,360931,362049,362202,360319
[info] CPU 4126.4% | Mem 5.5GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.34ms   4.24ms   4.94ms   7.45ms   11.10ms

  2106619 requests in 10.00s, 2106623 responses
  Throughput: 210.61K req/s
  Bandwidth:  812.59MB/s
  Status codes: 2xx=2106623, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2106616 / 2106623 responses (100.0%)
  Reconnects: 84104
  Per-template: 420361,421181,422153,422220,420701
  Per-template-ok: 420361,421181,422153,422220,420701
[info] CPU 4600.3% | Mem 5.5GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.22ms   4.13ms   4.83ms   7.22ms   10.50ms

  2118825 requests in 10.00s, 2118828 responses
  Throughput: 211.83K req/s
  Bandwidth:  817.39MB/s
  Status codes: 2xx=2118828, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2118827 / 2118828 responses (100.0%)
  Reconnects: 84644
  Per-template: 422368,423768,424793,424923,422975
  Per-template-ok: 422368,423768,424793,424923,422975
[info] CPU 4617.5% | Mem 5.5GiB

=== Best: 211882 req/s (CPU: 4617.5%, Mem: 5.5GiB) ===
[info] input BW: 14.14MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake

==============================================
=== fishcake / crud / 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:  200
  Templates: 20
  Expected:  200
  Duration:  15s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.82ms   2.27ms   24.50ms   108.50ms   207.10ms

  5909168 requests in 15.00s, 5905264 responses
  Throughput: 393.62K req/s
  Bandwidth:  152.20MB/s
  Status codes: 2xx=5905264, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5905264 / 5905264 responses (100.0%)
  Reconnects: 27531
  Per-template: 133771,158912,186150,214078,242501,268852,293748,324569,349935,370747,385715,392451,393995,392959,391175,390668,371141,301401,204066,138430
  Per-template-ok: 133771,158912,186150,214078,242501,268852,293748,324569,349935,370747,385715,392451,393995,392959,391175,390668,371141,301401,204066,138430
[info] CPU 3588.8% | Mem 5.3GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.26ms   1.94ms   24.90ms   98.40ms   180.90ms

  6304501 requests in 15.00s, 6302104 responses
  Throughput: 420.07K req/s
  Bandwidth:  163.55MB/s
  Status codes: 2xx=6302104, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6302100 / 6302104 responses (100.0%)
  Reconnects: 29617
  Per-template: 146650,171021,196489,224027,252572,280776,307831,334726,360566,384889,404333,415336,420394,421457,424320,424784,408887,334915,231780,156347
  Per-template-ok: 146650,171021,196489,224027,252572,280776,307831,334726,360566,384889,404333,415336,420394,421457,424320,424784,408887,334915,231780,156347
[info] CPU 3408.6% | Mem 5.3GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   8.78ms   1.58ms   23.00ms   104.60ms   184.70ms

  6681535 requests in 15.00s, 6679197 responses
  Throughput: 445.21K req/s
  Bandwidth:  172.36MB/s
  Status codes: 2xx=6679197, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6679188 / 6679197 responses (100.0%)
  Reconnects: 31510
  Per-template: 185263,196315,216812,240352,264517,291490,318562,343691,368247,389866,411446,426088,436111,441931,441325,440730,423315,357470,275036,210621
  Per-template-ok: 185263,196315,216812,240352,264517,291490,318562,343691,368247,389866,411446,426088,436111,441931,441325,440730,423315,357470,275036,210621
[info] CPU 3603.8% | Mem 5.3GiB

=== Best: 445279 req/s (CPU: 3603.8%, Mem: 5.3GiB) ===
[info] input BW: 38.22MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake
[info] skip: fishcake does not subscribe to fortunes
[info] skip: fishcake does not subscribe to baseline-h2
[info] skip: fishcake does not subscribe to static-h2
[info] skip: fishcake does not subscribe to baseline-h2c
[info] skip: fishcake does not subscribe to json-h2c
[info] skip: fishcake does not subscribe to baseline-h3
[info] skip: fishcake does not subscribe to static-h3
[info] skip: fishcake does not subscribe to gateway-64
[info] skip: fishcake does not subscribe to gateway-h3
[info] skip: fishcake does not subscribe to production-stack
[info] skip: fishcake does not subscribe to unary-grpc
[info] skip: fishcake does not subscribe to unary-grpc-tls
[info] skip: fishcake does not subscribe to stream-grpc
[info] skip: fishcake does not subscribe to stream-grpc-tls
[info] skip: fishcake does not subscribe to echo-ws
[info] skip: fishcake does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

CodeGreen PRs #9 (response compression + TLS + pipelined flush coalescing) and #10
(request-body streaming) are merged to main, so the build no longer needs the temporary
add-compression-tls branch. Clone main, which carries everything these profiles use.

Validated via the real (clone-from-main) Docker build: ./scripts/validate.sh fishcake = 41/0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented Jun 4, 2026

/benchmark -f fishcake -t pipelined

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Benchmark Results

Framework: fishcake | Test: pipelined

Test Conn RPS CPU Mem Δ RPS Δ Mem
pipelined 512 3,736,019 6461.2% 3.9GiB NEW NEW
pipelined 4096 3,248,836 6314.1% 6.8GiB NEW NEW
Full log

#8 [build 2/6] RUN apt-get update  && apt-get install -y --no-install-recommends git  && rm -rf /var/lib/apt/lists/*
#8 CACHED

#9 [build 4/6] COPY . .
#9 CACHED

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

#11 [build 5/6] RUN git clone --depth 1 --branch main https://github.com/dotnet-web-stack/CodeGreen.git codegreen
#11 CACHED

#12 [build 3/6] WORKDIR /app
#12 CACHED

#13 [build 6/6] RUN chmod +x ./gradlew && ./gradlew shadowJar --no-daemon
#13 CACHED

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

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:8e4b80ddea3ca0f031c6d5ce2d1fd5bdbdad861324a2af4cc0f4f1e3ea56787d done
#15 exporting config sha256:43da023c4129bf2717fb4900197a19ee8f83a7da07ed5aae368f7ac66833efa5 done
#15 exporting attestation manifest sha256:c5ff191255ec35b17fa35da3cb6a6b4df3bdbd8b529275e0b55d9058d8e494e5 0.0s done
#15 exporting manifest list sha256:b4cf4695c0b7d14ad3ed6faccfddc04c3992eb6a5e20307d88b8e279364b5c41
#15 exporting manifest list sha256:b4cf4695c0b7d14ad3ed6faccfddc04c3992eb6a5e20307d88b8e279364b5c41 0.0s done
#15 naming to docker.io/library/httparena-fishcake:latest done
#15 unpacking to docker.io/library/httparena-fishcake:latest done
#15 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

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

[run 1/3]
gcannon v0.5.3
  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   2.47ms   1.10ms   4.68ms   13.00ms   97.80ms

  16718843 requests in 5.00s, 16718846 responses
  Throughput: 3.34M req/s
  Bandwidth:  408.07MB/s
  Status codes: 2xx=16718846, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 16718845 / 16718846 responses (100.0%)
[info] CPU 6321.2% | Mem 4.9GiB

[run 2/3]
gcannon v0.5.3
  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   2.31ms   1.10ms   4.20ms   13.10ms   61.50ms

  17815001 requests in 5.00s, 17815001 responses
  Throughput: 3.56M req/s
  Bandwidth:  434.76MB/s
  Status codes: 2xx=17815001, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 17814929 / 17815001 responses (100.0%)
[info] CPU 6324.6% | Mem 3.9GiB

[run 3/3]
gcannon v0.5.3
  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   2.19ms   1.08ms   4.19ms   13.00ms   49.20ms

  18680098 requests in 5.00s, 18680097 responses
  Throughput: 3.73M req/s
  Bandwidth:  455.90MB/s
  Status codes: 2xx=18680097, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 18680034 / 18680097 responses (100.0%)
[info] CPU 6461.2% | Mem 3.9GiB

=== Best: 3736019 req/s (CPU: 6461.2%, Mem: 3.9GiB) ===
[info] saved results/pipelined/512/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake

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

[run 1/3]
gcannon v0.5.3
  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   18.73ms   15.90ms   31.10ms   98.80ms   237.70ms

  14578672 requests in 5.00s, 14531696 responses
  Throughput: 2.91M req/s
  Bandwidth:  354.68MB/s
  Status codes: 2xx=14531696, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 14531693 / 14531696 responses (100.0%)
[info] CPU 6331.0% | Mem 6.8GiB

[run 2/3]
gcannon v0.5.3
  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   18.91ms   10.80ms   34.20ms   101.30ms   281.10ms

  15205163 requests in 5.00s, 15161833 responses
  Throughput: 3.03M req/s
  Bandwidth:  370.06MB/s
  Status codes: 2xx=15161833, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 15161788 / 15161833 responses (100.0%)
[info] CPU 6323.6% | Mem 6.8GiB

[run 3/3]
gcannon v0.5.3
  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   17.66ms   12.50ms   31.50ms   82.00ms   229.70ms

  16287015 requests in 5.00s, 16244181 responses
  Throughput: 3.25M req/s
  Bandwidth:  396.46MB/s
  Status codes: 2xx=16244181, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 16244146 / 16244181 responses (100.0%)
[info] CPU 6314.1% | Mem 6.8GiB

=== Best: 3248836 req/s (CPU: 6314.1%, Mem: 6.8GiB) ===
[info] saved results/pipelined/4096/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake
[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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented Jun 4, 2026

/benchmark -f fishcake -t pipelined

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Benchmark Results

Framework: fishcake | Test: pipelined

Test Conn RPS CPU Mem Δ RPS Δ Mem
pipelined 512 3,791,154 6434.9% 3.8GiB NEW NEW
pipelined 4096 3,293,115 6346.3% 7.3GiB NEW NEW
Full log

#8 [build 3/6] WORKDIR /app
#8 CACHED

#9 [build 4/6] COPY . .
#9 CACHED

#10 [build 5/6] RUN git clone --depth 1 --branch main https://github.com/dotnet-web-stack/CodeGreen.git codegreen
#10 CACHED

#11 [build 6/6] RUN chmod +x ./gradlew && ./gradlew shadowJar --no-daemon
#11 CACHED

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

#13 [build 2/6] RUN apt-get update  && apt-get install -y --no-install-recommends git  && rm -rf /var/lib/apt/lists/*
#13 CACHED

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

#15 exporting to image
#15 exporting layers done
#15 exporting manifest sha256:8e4b80ddea3ca0f031c6d5ce2d1fd5bdbdad861324a2af4cc0f4f1e3ea56787d done
#15 exporting config sha256:43da023c4129bf2717fb4900197a19ee8f83a7da07ed5aae368f7ac66833efa5 done
#15 exporting attestation manifest sha256:3b9d9bd249ad96e9e85024b95a937c5778673486cc46767683595909e4310a11 0.0s done
#15 exporting manifest list sha256:a3c45394c12e220d848820dafadc82870aece3a76ee68a69a8aaac4eb0db46f7 0.0s done
#15 naming to docker.io/library/httparena-fishcake:latest
#15 naming to docker.io/library/httparena-fishcake:latest done
#15 unpacking to docker.io/library/httparena-fishcake: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

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

[run 1/3]
gcannon v0.5.3
  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   2.42ms   1.08ms   5.09ms   13.00ms   83.00ms

  17023874 requests in 5.00s, 17023874 responses
  Throughput: 3.40M req/s
  Bandwidth:  415.51MB/s
  Status codes: 2xx=17023874, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 17023869 / 17023874 responses (100.0%)
[info] CPU 6334.6% | Mem 4.9GiB

[run 2/3]
gcannon v0.5.3
  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   2.27ms   1.08ms   4.17ms   13.00ms   58.80ms

  18056883 requests in 5.00s, 18056881 responses
  Throughput: 3.61M req/s
  Bandwidth:  440.72MB/s
  Status codes: 2xx=18056881, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 18056814 / 18056881 responses (100.0%)
[info] CPU 6331.4% | Mem 3.8GiB

[run 3/3]
gcannon v0.5.3
  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   2.16ms   1.07ms   4.16ms   11.20ms   55.10ms

  18955773 requests in 5.00s, 18955772 responses
  Throughput: 3.79M req/s
  Bandwidth:  462.64MB/s
  Status codes: 2xx=18955772, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 18955684 / 18955772 responses (100.0%)
[info] CPU 6434.9% | Mem 3.8GiB

=== Best: 3791154 req/s (CPU: 6434.9%, Mem: 3.8GiB) ===
[info] saved results/pipelined/512/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake

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

[run 1/3]
gcannon v0.5.3
  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   18.78ms   11.10ms   34.10ms   88.80ms   377.50ms

  14807751 requests in 5.00s, 14760823 responses
  Throughput: 2.95M req/s
  Bandwidth:  360.28MB/s
  Status codes: 2xx=14760823, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 14760823 / 14760823 responses (100.0%)
[info] CPU 6378.5% | Mem 4.4GiB

[run 2/3]
gcannon v0.5.3
  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   18.37ms   10.50ms   33.80ms   99.50ms   452.60ms

  15425829 requests in 5.00s, 15384787 responses
  Throughput: 3.08M req/s
  Bandwidth:  375.50MB/s
  Status codes: 2xx=15384787, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 15384731 / 15384787 responses (100.0%)
[info] CPU 6275.8% | Mem 7.3GiB

[run 3/3]
gcannon v0.5.3
  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   17.38ms   10.70ms   31.90ms   79.40ms   248.90ms

  16508717 requests in 5.00s, 16465579 responses
  Throughput: 3.29M req/s
  Bandwidth:  401.88MB/s
  Status codes: 2xx=16465579, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 16465469 / 16465579 responses (100.0%)
[info] CPU 6346.3% | Mem 7.3GiB

=== Best: 3293115 req/s (CPU: 6346.3%, Mem: 7.3GiB) ===
[info] saved results/pipelined/4096/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake
[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/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
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV
Copy link
Copy Markdown
Owner Author

MDA2AV commented Jun 4, 2026

/benchmark -f fishcake --save

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 4, 2026

Benchmark Results

Framework: fishcake | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,887,468 6477.9% 9.5GiB NEW NEW
baseline 4096 1,918,113 6236.7% 10.6GiB NEW NEW
pipelined 512 3,712,021 6469.1% 3.7GiB NEW NEW
pipelined 4096 3,250,416 6338.4% 7.0GiB NEW NEW
limited-conn 512 596,007 3572.3% 3.2GiB NEW NEW
limited-conn 4096 602,123 3445.7% 3.1GiB NEW NEW
json 4096 451,305 2853.7% 3.5GiB NEW NEW
json-comp 512 346,093 5432.2% 5.2GiB NEW NEW
json-comp 4096 365,339 5178.8% 6.1GiB NEW NEW
json-comp 16384 362,427 5033.1% 5.9GiB NEW NEW
json-tls 4096 454,763 3297.8% 5.8GiB NEW NEW
upload 32 1,896 4220.6% 5.6GiB NEW NEW
upload 256 1,993 6154.5% 15.3GiB NEW NEW
api-4 256 52,583 401.3% 607MiB NEW NEW
api-16 1024 127,641 1634.4% 2.0GiB NEW NEW
static 1024 366,300 4001.1% 7.5GiB NEW NEW
static 4096 352,737 3938.0% 7.7GiB NEW NEW
static 6800 352,388 3990.6% 8.2GiB NEW NEW
async-db 1024 211,839 4568.6% 5.8GiB NEW NEW
crud 4096 450,035 3709.0% 5.0GiB NEW NEW
Full log


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   5.24ms   4.14ms   6.77ms   26.10ms   163.30ms

  1802015 requests in 10.00s, 1802017 responses
  Throughput: 180.16K req/s
  Bandwidth:  695.02MB/s
  Status codes: 2xx=1802017, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1802017 / 1802017 responses (100.0%)
  Reconnects: 71594
  Per-template: 359348,360353,361514,361283,359519
  Per-template-ok: 359348,360353,361514,361283,359519
[info] CPU 4202.6% | Mem 5.9GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.37ms   4.29ms   4.89ms   7.31ms   9.77ms

  2113157 requests in 10.00s, 2113160 responses
  Throughput: 211.27K req/s
  Bandwidth:  815.27MB/s
  Status codes: 2xx=2113160, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2113157 / 2113160 responses (100.0%)
  Reconnects: 84398
  Per-template: 421475,422290,423650,423616,422126
  Per-template-ok: 421475,422290,423650,423616,422126
[info] CPU 4607.9% | Mem 5.8GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   4.30ms   4.22ms   4.85ms   7.40ms   10.10ms

  2118384 requests in 10.00s, 2118391 responses
  Throughput: 211.79K req/s
  Bandwidth:  817.21MB/s
  Status codes: 2xx=2118391, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2118387 / 2118391 responses (100.0%)
  Reconnects: 84711
  Per-template: 422468,423397,424825,424730,422967
  Per-template-ok: 422468,423397,424825,424730,422967
[info] CPU 4568.6% | Mem 5.8GiB

=== Best: 211839 req/s (CPU: 4568.6%, Mem: 5.8GiB) ===
[info] input BW: 14.14MB/s (avg template: 70 bytes)
[info] saved results/async-db/1024/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake

==============================================
=== fishcake / crud / 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:  200
  Templates: 20
  Expected:  200
  Duration:  15s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.81ms   2.88ms   24.20ms   103.90ms   204.80ms

  5857511 requests in 15.00s, 5854559 responses
  Throughput: 390.25K req/s
  Bandwidth:  151.90MB/s
  Status codes: 2xx=5854559, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5854559 / 5854559 responses (100.0%)
  Reconnects: 27237
  Per-template: 124028,149208,175223,205963,236472,262752,291112,323264,350205,372745,389964,396538,394795,396926,395471,395824,378421,302787,188914,123947
  Per-template-ok: 124028,149208,175223,205963,236472,262752,291112,323264,350205,372745,389964,396538,394795,396926,395471,395824,378421,302787,188914,123947
[info] CPU 3669.8% | Mem 5.0GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   9.31ms   2.55ms   24.90ms   91.50ms   171.50ms

  6280786 requests in 15.00s, 6278211 responses
  Throughput: 418.48K req/s
  Bandwidth:  163.94MB/s
  Status codes: 2xx=6278211, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6278205 / 6278211 responses (100.0%)
  Reconnects: 29495
  Per-template: 136667,157522,185850,216035,245816,269735,300518,333213,359261,385682,407503,418557,426103,430463,432629,433067,417768,348113,228765,144938
  Per-template-ok: 136667,157522,185850,216035,245816,269735,300518,333213,359261,385682,407503,418557,426103,430463,432629,433067,417768,348113,228765,144938
[info] CPU 3494.0% | Mem 5.0GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   8.63ms   1.87ms   22.10ms   104.10ms   181.30ms

  6753142 requests in 15.00s, 6750528 responses
  Throughput: 449.97K req/s
  Bandwidth:  175.87MB/s
  Status codes: 2xx=6750528, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6750523 / 6750528 responses (100.0%)
  Reconnects: 31864
  Per-template: 161519,180090,207643,234366,262201,290823,319985,347569,375223,400604,423596,439106,450259,458109,464040,461404,445065,373918,269253,185750
  Per-template-ok: 161519,180090,207643,234366,262201,290823,319985,347569,375223,400604,423596,439106,450259,458109,464040,461404,445065,373918,269253,185750
[info] CPU 3709.0% | Mem 5.0GiB

=== Best: 450035 req/s (CPU: 3709.0%, Mem: 5.0GiB) ===
[info] input BW: 38.63MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/fishcake.json
httparena-bench-fishcake
httparena-bench-fishcake
[info] skip: fishcake does not subscribe to fortunes
[info] skip: fishcake does not subscribe to baseline-h2
[info] skip: fishcake does not subscribe to static-h2
[info] skip: fishcake does not subscribe to baseline-h2c
[info] skip: fishcake does not subscribe to json-h2c
[info] skip: fishcake does not subscribe to baseline-h3
[info] skip: fishcake does not subscribe to static-h3
[info] skip: fishcake does not subscribe to gateway-64
[info] skip: fishcake does not subscribe to gateway-h3
[info] skip: fishcake does not subscribe to production-stack
[info] skip: fishcake does not subscribe to unary-grpc
[info] skip: fishcake does not subscribe to unary-grpc-tls
[info] skip: fishcake does not subscribe to stream-grpc
[info] skip: fishcake does not subscribe to stream-grpc-tls
[info] skip: fishcake does not subscribe to echo-ws
[info] skip: fishcake does not subscribe to echo-ws-pipeline
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536

@MDA2AV MDA2AV merged commit 44800e2 into main Jun 4, 2026
@MDA2AV MDA2AV deleted the add-fishcake-profiles branch June 7, 2026 14:31
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