Skip to content

[roda] Add crud#734

Open
p8 wants to merge 3 commits into
MDA2AV:mainfrom
p8:roda/crud
Open

[roda] Add crud#734
p8 wants to merge 3 commits into
MDA2AV:mainfrom
p8:roda/crud

Conversation

@p8
Copy link
Copy Markdown
Contributor

@p8 p8 commented May 18, 2026

No description provided.

@p8 p8 marked this pull request as draft May 18, 2026 19:45
@p8 p8 force-pushed the roda/crud branch 26 times, most recently from 65e9ae2 to 93a4bbe Compare May 19, 2026 20:09
@p8
Copy link
Copy Markdown
Contributor Author

p8 commented May 19, 2026

/benchmark -f roda -t crud --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: roda | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 62,393 2506.6% 3.3GiB 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: roda (roda, 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-roda
#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.0s

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

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

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

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

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

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

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

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

#12 exporting to image
#12 exporting layers done
#12 exporting manifest sha256:bcd5fa440c7720861c7aa99d62cf4e00f4ff1de93ccd03c70daadfd896b88d09 done
#12 exporting config sha256:bd802784434ddb34b2370712230c0557911234080ac7dc3c0d9b947f110525f1 done
#12 exporting attestation manifest sha256:ff1cdb39965e2fb4c05e8f21b9a1697885e4870df9dc973b67ac77cff796ab63 0.0s done
#12 exporting manifest list sha256:862abc03c5ffc2eeecf2151901d690c55d43f984cde97576057bf4d9fa5b49cd 0.0s done
#12 naming to docker.io/library/httparena-roda:latest
#12 naming to docker.io/library/httparena-roda:latest done
#12 unpacking to docker.io/library/httparena-roda:latest 0.0s 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

==============================================
=== roda / 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   67.60ms   66.70ms   77.80ms   98.50ms   280.60ms

  878059 requests in 15.00s, 875705 responses
  Throughput: 58.37K req/s
  Bandwidth:  19.04MB/s
  Status codes: 2xx=875705, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 875705 / 875705 responses (100.0%)
  Reconnects: 3122
  Per-template: 44292,44280,43679,43098,43245,43857,43446,43591,43536,43365,43267,43470,43595,43533,43216,43703,43495,46274,44221,44542
  Per-template-ok: 44292,44280,43679,43098,43245,43857,43446,43591,43536,43365,43267,43470,43595,43533,43216,43703,43495,46274,44221,44542
[info] CPU 2805.2% | Mem 3.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   63.38ms   64.60ms   71.80ms   85.90ms   241.70ms

  938100 requests in 15.00s, 935904 responses
  Throughput: 62.38K req/s
  Bandwidth:  20.27MB/s
  Status codes: 2xx=935904, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 935904 / 935904 responses (100.0%)
  Reconnects: 3923
  Per-template: 46663,47331,46689,46011,46577,46501,46538,46717,46650,46639,46811,46458,46724,46935,46760,46346,46016,49890,46957,46691
  Per-template-ok: 46663,47331,46689,46011,46577,46501,46538,46717,46650,46639,46811,46458,46724,46935,46760,46346,46016,49890,46957,46691
[info] CPU 2506.6% | Mem 3.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   65.00ms   65.60ms   73.20ms   89.50ms   102.10ms

  924007 requests in 15.00s, 921979 responses
  Throughput: 61.45K req/s
  Bandwidth:  19.97MB/s
  Status codes: 2xx=921979, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 921978 / 921979 responses (100.0%)
  Reconnects: 3910
  Per-template: 46422,46489,46122,45700,45789,46033,45996,45779,45972,46055,45806,45836,45942,45897,46035,45980,45308,48847,46077,45893
  Per-template-ok: 46422,46489,46122,45700,45789,46033,45996,45779,45972,46055,45806,45836,45942,45897,46035,45980,45308,48847,46077,45893
[info] CPU 2572.5% | Mem 3.3GiB

=== Best: 62393 req/s (CPU: 2506.6%, Mem: 3.3GiB) ===
[info] input BW: 5.36MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/roda.json
httparena-bench-roda
httparena-bench-roda
[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 → powersave

@p8 p8 force-pushed the roda/crud branch 2 times, most recently from fe8531f to fce9bc4 Compare May 20, 2026 19:45
@p8
Copy link
Copy Markdown
Contributor Author

p8 commented May 20, 2026

/benchmark -f roda -t crud --save

@github-actions
Copy link
Copy Markdown
Contributor

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

@p8 p8 marked this pull request as ready for review May 20, 2026 19:53
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ /benchmark --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@p8
Copy link
Copy Markdown
Contributor Author

p8 commented May 20, 2026

/benchmark -f roda -t crud --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: roda | Test: crud

Test Conn RPS CPU Mem Δ RPS Δ Mem
crud 4096 60,025 2591.6% 3.3GiB NEW NEW
Full log
#6 12.89 Setting up libhwasan0:amd64 (14.2.0-19) ...
#6 12.91 Setting up libcrypt-dev:amd64 (1:4.4.38-1) ...
#6 12.93 Setting up libasan8:amd64 (14.2.0-19) ...
#6 12.95 Setting up libkrb5-3:amd64 (1.21.3-5) ...
#6 12.97 Setting up libtsan2:amd64 (14.2.0-19) ...
#6 12.99 Setting up libbinutils:amd64 (2.44-3) ...
#6 13.01 Setting up libisl23:amd64 (0.27-1) ...
#6 13.02 Setting up libc-dev-bin (2.41-12+deb13u3) ...
#6 13.04 Setting up libcc1-0:amd64 (14.2.0-19) ...
#6 13.06 Setting up libldap2:amd64 (2.6.10+dfsg-1) ...
#6 13.09 Setting up liblsan0:amd64 (14.2.0-19) ...
#6 13.10 Setting up libitm1:amd64 (14.2.0-19) ...
#6 13.12 Setting up libctf0:amd64 (2.44-3) ...
#6 13.14 Setting up libperl5.40:amd64 (5.40.1-6) ...
#6 13.16 Setting up perl (5.40.1-6) ...
#6 13.19 Setting up libgprofng0:amd64 (2.44-3) ...
#6 13.20 Setting up libgssapi-krb5-2:amd64 (1.21.3-5) ...
#6 13.22 Setting up cpp-14-x86-64-linux-gnu (14.2.0-19) ...
#6 13.25 Setting up libdpkg-perl (1.22.22) ...
#6 13.27 Setting up cpp-14 (14.2.0-19) ...
#6 13.29 Setting up libc6-dev:amd64 (2.41-12+deb13u3) ...
#6 13.31 Setting up libgcc-14-dev:amd64 (14.2.0-19) ...
#6 13.32 Setting up libstdc++-14-dev:amd64 (14.2.0-19) ...
#6 13.34 Setting up binutils-x86-64-linux-gnu (2.44-3) ...
#6 13.36 Setting up cpp-x86-64-linux-gnu (4:14.2.0-1) ...
#6 13.38 Setting up libpq5:amd64 (17.10-0+deb13u1) ...
#6 13.40 Setting up libpq-dev (17.10-0+deb13u1) ...
#6 13.41 Setting up binutils (2.44-3) ...
#6 13.44 Setting up dpkg-dev (1.22.22) ...
#6 13.47 Setting up cpp (4:14.2.0-1) ...
#6 13.50 Setting up gcc-14-x86-64-linux-gnu (14.2.0-19) ...
#6 13.51 Setting up gcc-x86-64-linux-gnu (4:14.2.0-1) ...
#6 13.54 Setting up gcc-14 (14.2.0-19) ...
#6 13.56 Setting up g++-14-x86-64-linux-gnu (14.2.0-19) ...
#6 13.58 Setting up g++-x86-64-linux-gnu (4:14.2.0-1) ...
#6 13.60 Setting up g++-14 (14.2.0-19) ...
#6 13.61 Setting up gcc (4:14.2.0-1) ...
#6 13.65 Setting up g++ (4:14.2.0-1) ...
#6 13.66 update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
#6 13.67 Setting up build-essential (12.12) ...
#6 13.69 Processing triggers for libc-bin (2.41-12+deb13u3) ...
#6 DONE 14.2s

#7 [3/7] WORKDIR /app
#7 DONE 0.1s

#8 [4/7] COPY Gemfile* .
#8 DONE 0.1s

#9 [5/7] RUN bundle config set deployment 'true'
#9 DONE 0.5s

#10 [6/7] RUN bundle install --jobs=$(nproc)
#10 1.710 Fetching gem metadata from https://rubygems.org/....
#10 2.120 Fetching concurrent-ruby 1.3.6
#10 2.126 Fetching connection_pool 3.0.2
#10 2.126 Fetching json 2.19.3
#10 2.126 Fetching pg 1.6.3 (x86_64-linux)
#10 2.126 Fetching nio4r 2.7.5
#10 2.126 Fetching puma 8.0.1
#10 2.140 Fetching rack 3.2.5
#10 2.140 Fetching redis-client 0.29.0
#10 2.140 Fetching redis 5.4.1
#10 2.140 Fetching roda 3.102.0
#10 2.412 Installing connection_pool 3.0.2
#10 2.415 Installing redis-client 0.29.0
#10 2.435 Installing redis 5.4.1
#10 2.454 Installing json 2.19.3 with native extensions
#10 2.461 Installing rack 3.2.5
#10 2.469 Installing nio4r 2.7.5 with native extensions
#10 2.493 Installing roda 3.102.0
#10 2.527 Installing concurrent-ruby 1.3.6
#10 2.823 Installing pg 1.6.3 (x86_64-linux)
#10 5.094 Installing puma 8.0.1 with native extensions
#10 8.647 Bundle complete! 7 Gemfile dependencies, 10 gems now installed.
#10 8.647 Bundled gems are installed into `./vendor/bundle`
#10 DONE 8.8s

#11 [7/7] COPY . .
#11 DONE 0.1s

#12 exporting to image
#12 exporting layers
#12 exporting layers 10.2s done
#12 exporting manifest sha256:205afa3cfa716549103498febde23994901fe754813febe71f10267f685ae61b 0.0s done
#12 exporting config sha256:3a0356a738ae2466d3b060853f0391582625b99425679e4025752c712da1fa49 0.0s done
#12 exporting attestation manifest sha256:10a0d76052ba056e42e53e56049c75e85d7b45691453f3b443d7b74c119d2069 0.0s done
#12 exporting manifest list sha256:4ce8b6fb8e4ab590cff37400b5fd06b25c611a8297890963996285d4715935af
#12 exporting manifest list sha256:4ce8b6fb8e4ab590cff37400b5fd06b25c611a8297890963996285d4715935af 0.0s done
#12 naming to docker.io/library/httparena-roda:latest done
#12 unpacking to docker.io/library/httparena-roda:latest
#12 unpacking to docker.io/library/httparena-roda:latest 3.5s done
#12 DONE 13.9s
[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

==============================================
=== roda / 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   69.05ms   68.50ms   79.50ms   96.00ms   272.20ms

  858929 requests in 15.00s, 856605 responses
  Throughput: 57.10K req/s
  Bandwidth:  18.39MB/s
  Status codes: 2xx=856605, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 856605 / 856605 responses (100.0%)
  Reconnects: 2957
  Per-template: 43459,43322,42795,42696,42514,42517,42402,42309,42275,42549,42844,42811,42414,42624,42705,42671,43128,44496,43028,43046
  Per-template-ok: 43459,43322,42795,42696,42514,42517,42402,42309,42275,42549,42844,42811,42414,42624,42705,42671,43128,44496,43028,43046
[info] CPU 2948.3% | Mem 3.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   65.23ms   67.40ms   74.30ms   83.00ms   279.60ms

  902898 requests in 15.00s, 900375 responses
  Throughput: 60.02K req/s
  Bandwidth:  19.17MB/s
  Status codes: 2xx=900375, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 900371 / 900375 responses (100.0%)
  Reconnects: 3340
  Per-template: 45077,45315,45084,44670,44767,44822,44813,44864,44695,44934,45001,44783,44720,45041,45107,44649,44078,47757,45105,45089
  Per-template-ok: 45077,45315,45084,44670,44767,44822,44813,44864,44695,44934,45001,44783,44720,45041,45107,44649,44078,47757,45105,45089
[info] CPU 2591.6% | Mem 3.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   66.81ms   67.60ms   74.50ms   91.80ms   124.90ms

  902031 requests in 15.00s, 899944 responses
  Throughput: 59.99K req/s
  Bandwidth:  19.18MB/s
  Status codes: 2xx=899944, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 899940 / 899944 responses (100.0%)
  Reconnects: 3849
  Per-template: 45231,45237,44748,44584,44813,44827,44970,44731,44822,44804,44818,44858,44889,45132,44798,44828,44238,47512,45040,45060
  Per-template-ok: 45231,45237,44748,44584,44813,44827,44970,44731,44822,44804,44818,44858,44889,45132,44798,44828,44238,47512,45040,45060
[info] CPU 2662.5% | Mem 3.4GiB

=== Best: 60025 req/s (CPU: 2591.6%, Mem: 3.3GiB) ===
[info] input BW: 5.15MB/s (avg template: 90 bytes)
[info] saved results/crud/4096/roda.json
httparena-bench-roda
httparena-bench-roda
[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 → powersave

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