Skip to content

[rage] Add crud#773

Open
p8 wants to merge 1 commit into
MDA2AV:mainfrom
p8:rage/crud
Open

[rage] Add crud#773
p8 wants to merge 1 commit into
MDA2AV:mainfrom
p8:rage/crud

Conversation

@p8
Copy link
Copy Markdown
Contributor

@p8 p8 commented Jun 1, 2026

No description provided.

@p8 p8 force-pushed the rage/crud branch 4 times, most recently from 1df204e to ab3261c Compare June 2, 2026 07:39
@p8
Copy link
Copy Markdown
Contributor Author

p8 commented Jun 2, 2026

/benchmark -f rage -t crud

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

Benchmark Results

Framework: rage | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 53,128 6424.2% 9.6GiB 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: rage (rage, Ruby)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,upload,api-4,api-16,async-db,crud,static
[info] building image: httparena-rage
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 516B 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: 686B 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.1s done
#5 DONE 0.1s

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

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

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

#9 [2/7] RUN apt-get update &&     apt-get install -y --no-install-recommends build-essential libpq-dev libyaml-dev libjemalloc2 &&     rm -rf /var/lib/apt/lists/*
#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:fe440169852f57b792d5a3b7fc6dc51668221005b8eedf8bf611b4e524735131 done
#12 exporting config sha256:3182bc564e1836ac94d0b0810460e1d781a21d7632ebd1e54066000e8195a002 done
#12 exporting attestation manifest sha256:1f4fc123c62d002993ae84ca562b75ff4fcd678172c24203a23208e8492cf087 0.1s done
#12 exporting manifest list sha256:92adb39602753d59f69693dc0485856d5edd8d56d1313d41d8f8fea7db753764 0.0s done
#12 naming to docker.io/library/httparena-rage:latest
#12 naming to docker.io/library/httparena-rage:latest done
#12 unpacking to docker.io/library/httparena-rage: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

==============================================
=== rage / 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   56.98ms   1.28ms   9.26ms    1.62s    5.00s

  803364 requests in 15.00s, 799460 responses
  Throughput: 53.29K req/s
  Bandwidth:  22.31MB/s
  Status codes: 2xx=796933, 3xx=0, 4xx=0, 5xx=2527
  Latency samples: 799460 / 799460 responses (100.0%)
  Latency overflow (>5s): 3663
  Reconnects: 3672
  Per-template: 46077,45184,43008,41402,40307,39557,38030,37050,36252,35375,34176,33321,32524,31569,28862,26416,58550,52860,50921,48019
  Per-template-ok: 45957,45048,42852,41265,40188,39451,37895,36905,36109,35246,34061,33195,32396,31446,28721,26290,58495,52745,50789,47879

  WARNING: 2527/799460 responses (0.3%) had unexpected status (expected 2xx)
[info] CPU 6424.2% | Mem 9.6GiB

[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   95.77ms   5.15ms   57.70ms    3.26s    5.00s

  563605 requests in 15.00s, 559637 responses
  Throughput: 37.30K req/s
  Bandwidth:  17.24MB/s
  Status codes: 2xx=558817, 3xx=0, 4xx=0, 5xx=820
  Latency samples: 559637 / 559637 responses (100.0%)
  Latency overflow (>5s): 2907
  Reconnects: 2229
  Per-template: 28326,28680,27318,27965,26509,25032,25138,23567,23294,22860,22625,23395,22439,21729,22867,24989,56831,42642,34104,29327
  Per-template-ok: 28290,28637,27268,27928,26468,24983,25104,23511,23267,22813,22593,23344,22395,21680,22827,24942,56813,42604,34056,29294

  WARNING: 820/559637 responses (0.1%) had unexpected status (expected 2xx)
[info] CPU 6531.6% | Mem 13.4GiB

[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   105.02ms   5.34ms   66.30ms    3.20s    5.00s

  531243 requests in 15.00s, 527275 responses
  Throughput: 35.14K req/s
  Bandwidth:  16.56MB/s
  Status codes: 2xx=526424, 3xx=0, 4xx=0, 5xx=851
  Latency samples: 527275 / 527275 responses (100.0%)
  Latency overflow (>5s): 3074
  Reconnects: 2058
  Per-template: 23031,23245,22900,22319,23350,24271,22341,22464,22172,23312,23268,22263,24237,25436,25928,25392,56150,38954,30841,25401
  Per-template-ok: 22978,23202,22864,22272,23317,24235,22300,22433,22143,23276,23228,22216,24200,25393,25892,25338,56131,38884,30778,25344

  WARNING: 851/527275 responses (0.2%) had unexpected status (expected 2xx)
[info] CPU 6569.1% | Mem 17.2GiB

=== Best: 53128 req/s (CPU: 6424.2%, Mem: 9.6GiB) ===
[info] input BW: 4.56MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/rage.json
httparena-bench-rage
httparena-bench-rage
[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
[info] restoring CPU governor → performance

@p8
Copy link
Copy Markdown
Contributor Author

p8 commented Jun 2, 2026

/benchmark -f rage -t crud --save

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

Benchmark Results

Framework: rage | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 54,517 6428.4% 9.2GiB 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: rage (rage, Ruby)
[info] subscribed tests: baseline,pipelined,limited-conn,json,json-comp,upload,api-4,api-16,async-db,crud,static
[info] building image: httparena-rage
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 516B 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: 12.24kB done
#4 DONE 0.1s

#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 libyaml-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 [6/7] RUN bundle install --jobs=$(nproc)
#9 CACHED

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

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

#12 exporting to image
#12 exporting layers done
#12 exporting manifest sha256:b47b7dc5820b4021fcf66223d3e847062e7a3cb8fb1350356821325d4ae90efb done
#12 exporting config sha256:5e9b1f9962c6c8dfbecc275b21bfef1106219deed7246b30a1ebc074823c901a done
#12 exporting attestation manifest sha256:ae3174d92dd86f4569a361766da9addbc80d8c237500029fb840eeea9cf53915
#12 exporting attestation manifest sha256:ae3174d92dd86f4569a361766da9addbc80d8c237500029fb840eeea9cf53915 0.1s done
#12 exporting manifest list sha256:3269387330b3b18e3559e3ea014232046376755be112a6579965052a492315a2
#12 exporting manifest list sha256:3269387330b3b18e3559e3ea014232046376755be112a6579965052a492315a2 0.1s done
#12 naming to docker.io/library/httparena-rage:latest done
#12 unpacking to docker.io/library/httparena-rage:latest 0.0s done
#12 DONE 0.3s
[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

==============================================
=== rage / 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   55.53ms   1.27ms   8.12ms    1.47s    5.00s

  824497 requests in 15.00s, 820593 responses
  Throughput: 54.69K req/s
  Bandwidth:  23.17MB/s
  Status codes: 2xx=817761, 3xx=0, 4xx=0, 5xx=2832
  Latency samples: 820593 / 820593 responses (100.0%)
  Latency overflow (>5s): 4023
  Reconnects: 3783
  Per-template: 47413,44939,41975,40518,38580,38124,37117,36885,36878,36282,35817,35260,34429,33358,31618,29999,63018,55583,53093,49707
  Per-template-ok: 47268,44795,41837,40387,38421,37984,36964,36735,36727,36122,35664,35130,34279,33214,31456,29866,62966,55438,52944,49564

  WARNING: 2832/820593 responses (0.3%) had unexpected status (expected 2xx)
[info] CPU 6428.4% | Mem 9.2GiB

[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   212.22ms   22.40ms   256.30ms    4.68s    5.00s

  263604 requests in 15.00s, 259893 responses
  Throughput: 17.32K req/s
  Bandwidth:  9.76MB/s
  Status codes: 2xx=259227, 3xx=0, 4xx=0, 5xx=473
  Latency samples: 259699 / 259893 responses (99.9%)
  Latency overflow (>5s): 2220
  Reconnects: 608
  Per-template: 6663,11464,11313,12087,11756,11654,12399,12680,12524,12697,11759,11942,11185,11244,10430,9926,42416,19662,9126,6772
  Per-template-ok: 6639,11444,11286,12067,11734,11627,12372,12656,12506,12674,11742,11915,11159,11218,10399,9898,42406,19632,9097,6755

  WARNING: 666/259893 responses (0.3%) had unexpected status (expected 2xx)
[info] CPU 6808.0% | Mem 11.8GiB

[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   253.54ms   31.30ms   437.60ms    5.00s    5.00s

  217342 requests in 15.00s, 213374 responses
  Throughput: 14.22K req/s
  Bandwidth:  8.53MB/s
  Status codes: 2xx=212739, 3xx=0, 4xx=0, 5xx=635
  Latency samples: 213374 / 213374 responses (100.0%)
  Latency overflow (>5s): 2250
  Reconnects: 310
  Per-template: 4342,10534,10364,9684,9763,10715,9815,9680,10811,10233,9350,9063,8730,8843,9801,10520,39380,11732,5124,4890
  Per-template-ok: 4308,10497,10339,9652,9730,10688,9785,9646,10788,10203,9325,9034,8699,8798,9756,10484,39370,11695,5081,4861

  WARNING: 635/213374 responses (0.3%) had unexpected status (expected 2xx)
[info] CPU 7043.5% | Mem 13.8GiB

=== Best: 54517 req/s (CPU: 6428.4%, Mem: 9.2GiB) ===
[info] input BW: 4.68MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/rage.json
httparena-bench-rage
httparena-bench-rage
[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