Skip to content

[sinatra] Add crud#792

Open
p8 wants to merge 2 commits into
MDA2AV:mainfrom
p8:sinatra/crud
Open

[sinatra] Add crud#792
p8 wants to merge 2 commits into
MDA2AV:mainfrom
p8:sinatra/crud

Conversation

@p8
Copy link
Copy Markdown
Contributor

@p8 p8 commented Jun 3, 2026

No description provided.

@p8 p8 force-pushed the sinatra/crud branch from 85dce15 to 23e6a57 Compare June 3, 2026 16:06
@p8
Copy link
Copy Markdown
Contributor Author

p8 commented Jun 3, 2026

/benchmark -f sinatra -t crud

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

Benchmark Results

Framework: sinatra | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 63,051 3183.2% 3.9GiB NEW NEW
Full log
[info] crud experiment CPU layout: redis=0,64 | server=1-31,65-95 | gcannon=32-63,96-127 | postgres=unpinned
[info] available CPUs: 128
[info] framework: sinatra (sinatra, Ruby)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,json-tls,upload,api-4,api-16,async-db,crud,static
[info] building image: httparena-sinatra
#0 building with "default" instance using docker driver

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

#2 [internal] load metadata for docker.io/library/ruby:4.0-slim
#2 DONE 0.9s

#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.1s

#4 [internal] load build context
#4 transferring context: 10.57kB done
#4 DONE 0.0s

#5 [1/7] FROM docker.io/library/ruby:4.0-slim@sha256:86a2ff44ce474c1c9bd11dfb2fd7fe5408a5bfe8236b9bc6013e2c6ef4c02d39
#5 resolve docker.io/library/ruby:4.0-slim@sha256:86a2ff44ce474c1c9bd11dfb2fd7fe5408a5bfe8236b9bc6013e2c6ef4c02d39
#5 resolve docker.io/library/ruby:4.0-slim@sha256:86a2ff44ce474c1c9bd11dfb2fd7fe5408a5bfe8236b9bc6013e2c6ef4c02d39 0.1s done
#5 DONE 0.1s

#6 [2/7] RUN apt-get update &&     apt-get install -y --no-install-recommends build-essential libpq-dev libjemalloc2 &&     rm -rf /var/lib/apt/lists/*
#6 CACHED

#7 [3/7] WORKDIR /app
#7 CACHED

#8 [5/7] RUN bundle config set deployment 'true'
#8 CACHED

#9 [4/7] COPY Gemfile* .
#9 CACHED

#10 [6/7] RUN bundle install --jobs=$(nproc)
#10 CACHED

#11 [7/7] COPY . .
#11 CACHED

#12 exporting to image
#12 exporting layers done
#12 exporting manifest sha256:1ac6e2efc6f2ce9959c99ed6983e0a6fa0f3117c3ec0749d686e1e6f1d0f507f done
#12 exporting config sha256:885e43923e42a6c7224fb5b5d044c238e47c0fe26522310431249c4484039193 done
#12 exporting attestation manifest sha256:4470ca6874fea2db8d27de8f11e004f2e0bf1627edb0c3fcbe84b07e316a7229 0.1s done
#12 exporting manifest list sha256:a845c8533091ed6b4cd3322e2772cb0f35eb0fb895254a24abda3f92b073c630
#12 exporting manifest list sha256:a845c8533091ed6b4cd3322e2772cb0f35eb0fb895254a24abda3f92b073c630 0.0s done
#12 naming to docker.io/library/httparena-sinatra:latest done
#12 unpacking to docker.io/library/httparena-sinatra:latest 0.0s done
#12 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

==============================================
=== sinatra / 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   64.91ms   65.00ms   74.40ms   89.00ms   281.10ms

  904826 requests in 15.00s, 902228 responses
  Throughput: 60.14K req/s
  Bandwidth:  18.96MB/s
  Status codes: 2xx=902228, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 902228 / 902228 responses (100.0%)
  Reconnects: 3591
  Per-template: 45503,45528,44782,44977,44813,44910,45011,44908,44617,45257,44807,44777,45091,44928,45112,44866,44963,46528,45668,45182
  Per-template-ok: 45503,45528,44782,44977,44813,44910,45011,44908,44617,45257,44807,44777,45091,44928,45112,44866,44963,46528,45668,45182
[info] CPU 3319.5% | Mem 3.7GiB

[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   61.98ms   63.80ms   71.40ms   84.60ms   268.80ms

  948471 requests in 15.00s, 945766 responses
  Throughput: 63.04K req/s
  Bandwidth:  19.61MB/s
  Status codes: 2xx=945766, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 945765 / 945766 responses (100.0%)
  Reconnects: 3962
  Per-template: 47483,47740,47475,47259,47266,47244,47377,47061,46874,47253,47271,47011,46958,47374,46891,47174,46501,49003,47421,47129
  Per-template-ok: 47483,47740,47475,47259,47266,47244,47377,47061,46874,47253,47271,47011,46958,47374,46891,47174,46501,49003,47421,47129
[info] CPU 3183.2% | Mem 3.9GiB

[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   65.17ms   67.00ms   73.50ms   86.10ms   237.30ms

  911169 requests in 15.00s, 909233 responses
  Throughput: 60.60K req/s
  Bandwidth:  18.81MB/s
  Status codes: 2xx=909233, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 909230 / 909233 responses (100.0%)
  Reconnects: 3715
  Per-template: 45415,45554,45429,45331,45203,45474,45500,45412,45519,45758,45513,45483,45277,45411,45337,45305,44331,47005,45595,45378
  Per-template-ok: 45415,45554,45429,45331,45203,45474,45500,45412,45519,45758,45513,45483,45277,45411,45337,45305,44331,47005,45595,45378
[info] CPU 3188.4% | Mem 3.9GiB

=== Best: 63051 req/s (CPU: 3183.2%, Mem: 3.9GiB) ===
[info] input BW: 5.41MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/sinatra.json
httparena-bench-sinatra
httparena-bench-sinatra
[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/crud-4096.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

@p8
Copy link
Copy Markdown
Contributor Author

p8 commented Jun 3, 2026

/benchmark -f sinatra -t crud --save

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

Benchmark Results

Framework: sinatra | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 64,585 2974.9% 3.9GiB NEW NEW
Full log
[info] crud experiment CPU layout: redis=0,64 | server=1-31,65-95 | gcannon=32-63,96-127 | postgres=unpinned
[info] available CPUs: 128
[info] framework: sinatra (sinatra, Ruby)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,json-tls,upload,api-4,api-16,async-db,crud,static
[info] building image: httparena-sinatra
#0 building with "default" instance using docker driver

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

#2 [internal] load metadata for docker.io/library/ruby:4.0-slim
#2 DONE 0.8s

#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [internal] load build context
#4 transferring context: 10.57kB done
#4 DONE 0.0s

#5 [1/7] FROM docker.io/library/ruby:4.0-slim@sha256:86a2ff44ce474c1c9bd11dfb2fd7fe5408a5bfe8236b9bc6013e2c6ef4c02d39
#5 resolve docker.io/library/ruby:4.0-slim@sha256:86a2ff44ce474c1c9bd11dfb2fd7fe5408a5bfe8236b9bc6013e2c6ef4c02d39 0.0s done
#5 DONE 0.0s

#6 [2/7] RUN apt-get update &&     apt-get install -y --no-install-recommends build-essential libpq-dev libjemalloc2 &&     rm -rf /var/lib/apt/lists/*
#6 CACHED

#7 [3/7] WORKDIR /app
#7 CACHED

#8 [4/7] COPY Gemfile* .
#8 CACHED

#9 [5/7] RUN bundle config set deployment 'true'
#9 CACHED

#10 [6/7] RUN bundle install --jobs=$(nproc)
#10 CACHED

#11 [7/7] COPY . .
#11 CACHED

#12 exporting to image
#12 exporting layers done
#12 exporting manifest sha256:1ac6e2efc6f2ce9959c99ed6983e0a6fa0f3117c3ec0749d686e1e6f1d0f507f done
#12 exporting config sha256:885e43923e42a6c7224fb5b5d044c238e47c0fe26522310431249c4484039193 done
#12 exporting attestation manifest sha256:3210c281f1a7b7bc99fe2dcf18bfb2f119384e3e8f80ac4616c49bd9fedc4d28
#12 exporting attestation manifest sha256:3210c281f1a7b7bc99fe2dcf18bfb2f119384e3e8f80ac4616c49bd9fedc4d28 0.0s done
#12 exporting manifest list sha256:a0a9fc3b291c32cb759fddda8084f63316a8ced865b0938e2688778fd54ece39 0.0s done
#12 naming to docker.io/library/httparena-sinatra:latest done
#12 unpacking to docker.io/library/httparena-sinatra:latest done
#12 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

==============================================
=== sinatra / 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   65.83ms   65.30ms   75.10ms   94.60ms   288.40ms

  899965 requests in 15.00s, 897662 responses
  Throughput: 59.83K req/s
  Bandwidth:  18.84MB/s
  Status codes: 2xx=897662, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 897662 / 897662 responses (100.0%)
  Reconnects: 3620
  Per-template: 45042,45036,44865,44983,44759,45222,45000,44958,44613,44624,44774,44496,44635,44818,44575,44296,44493,46908,44815,44750
  Per-template-ok: 45042,45036,44865,44983,44759,45222,45000,44958,44613,44624,44774,44496,44635,44818,44575,44296,44493,46908,44815,44750
[info] CPU 3126.1% | Mem 3.7GiB

[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   61.16ms   62.60ms   69.20ms   82.00ms   101.20ms

  972751 requests in 15.00s, 968783 responses
  Throughput: 64.57K req/s
  Bandwidth:  20.10MB/s
  Status codes: 2xx=968783, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 968783 / 968783 responses (100.0%)
  Reconnects: 4070
  Per-template: 48386,48921,48210,48416,48060,48411,48492,48272,48100,48551,48315,48378,48155,48697,48565,48153,47712,50234,48392,48363
  Per-template-ok: 48386,48921,48210,48416,48060,48411,48492,48272,48100,48551,48315,48378,48155,48697,48565,48153,47712,50234,48392,48363
[info] CPU 2974.9% | Mem 3.9GiB

[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   61.83ms   63.60ms   69.60ms   80.60ms   261.20ms

  957720 requests in 15.00s, 955455 responses
  Throughput: 63.69K req/s
  Bandwidth:  19.75MB/s
  Status codes: 2xx=955455, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 955455 / 955455 responses (100.0%)
  Reconnects: 4074
  Per-template: 47594,48010,47732,47581,47845,47715,47507,47517,47695,48011,47848,47647,47737,47874,47795,47576,46485,49640,47771,47875
  Per-template-ok: 47594,48010,47732,47581,47845,47715,47507,47517,47695,48011,47848,47647,47737,47874,47795,47576,46485,49640,47771,47875
[info] CPU 3101.4% | Mem 4.0GiB

=== Best: 64585 req/s (CPU: 2974.9%, Mem: 3.9GiB) ===
[info] input BW: 5.54MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/sinatra.json
httparena-bench-sinatra
httparena-bench-sinatra
[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/crud-4096.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

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