Skip to content

fulmine, fulmine-tuned: pg-telaio 0.1.2, and two handler loops that allocate less - #1255

Open
nigrosimone wants to merge 2 commits into
MDA2AV:mainfrom
nigrosimone:fulmine-telaio-overflow
Open

fulmine, fulmine-tuned: pg-telaio 0.1.2, and two handler loops that allocate less#1255
nigrosimone wants to merge 2 commits into
MDA2AV:mainfrom
nigrosimone:fulmine-telaio-overflow

Conversation

@nigrosimone

@nigrosimone nigrosimone commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

pg-telaio 0.1.2 fixes a false positive in its slow-query guard.

The guard itself is then turned off for this entry: every query these profiles run is a point read of a few milliseconds, so there is no slow query for it to catch, and it measured 5% to 12% here. It stays on by default in the library, where the workload is mixed.

Both entries also build the json items with a preallocated loop instead of slice().map(), and fortunes pushes the runtime row onto the driver rows and sorts them in place instead of copying them first. Same bytes out; a local microbench reads both changes inside its noise floor.

@nigrosimone

Copy link
Copy Markdown
Contributor Author

/benchmark -f fulmine-tuned -t production-stack

@github-actions

Copy link
Copy Markdown
Contributor

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

@nigrosimone
nigrosimone marked this pull request as ready for review August 22, 2026 07:09
@nigrosimone nigrosimone changed the title fulmine-tuned: pg-telaio 0.1.2, and turn off its slow-query guard fulmine, fulmine-tuned: pg-telaio 0.1.2, and two handler loops that allocate less Aug 22, 2026
@nigrosimone

Copy link
Copy Markdown
Contributor Author

/benchmark-multiple -f fulmine,fulmine-tuned --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: fulmine-tuned | Test: production-stack

Test Conn RPS CPU Mem Δ RPS Δ Mem
production-stack 256 59,317 4211.8% 3.4GiB +1.1% +6.2%
production-stack 1024 50,218 4168.4% 5.0GiB +21.8% -2.0%
Full log
[run 1/3]
=== h2load-reads ===
starting benchmark...

22.Main benchmark duration is started for thread #23.

35.Warm-up phase is over for thread #51.
.

.Main benchmark duration is started for thread #19.


.Main benchmark duration is started for thread #4.

.
26.
.
18.

40.
24.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

33. Stopping all clients.
15Stopped all clients for thread #61
. Stopping all clients.

finished in 5.06s, 43066.80 req/s, 464.35MB/s
requests: 215334 total, 231718 started, 215334 done, 213102 succeeded, 2232 failed, 0 errored, 0 timeout
status codes: 213532 2xx, 0 3xx, 799 4xx, 1433 5xx
traffic: 2.27GB (2434516179) total, 2.20MB (2309012) headers (space savings 93.11%), 2.26GB (2426888940) data
                     min         max         mean         sd        +/- sd
time for request:      146us       1.96s    332.83ms    225.30ms    60.77%
time for connect:    54.08ms    887.06ms    305.79ms    208.66ms    85.64%
time to 1st byte:    59.77ms       1.11s    410.61ms    232.13ms    75.98%
req/s           :      32.39       47.79       42.05        2.61    76.86%
=== h2load-writes ===
starting benchmark...
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2

finished in 5.00s, 1901.80 req/s, 33.47KB/s
requests: 9509 total, 10533 started, 9509 done, 9343 succeeded, 166 failed, 0 errored, 0 timeout
status codes: 9343 2xx, 0 3xx, 147 4xx, 19 5xx
traffic: 167.33KB (171350) total, 52.38KB (53640) headers (space savings 90.11%), 21.14KB (21643) data
                     min         max         mean         sd        +/- sd
time for request:      833us       1.50s    496.62ms    173.74ms    71.61%
time for connect:     5.07ms    570.96ms     63.04ms     66.43ms    91.41%
time to 1st byte:    49.36ms    997.73ms    299.10ms    293.06ms    70.31%
req/s           :      12.40       16.80       14.86        0.89    66.41%
[info] CPU 3931.4% | Mem 4.2GiB
[info]   server: 505% 1.6GiB | authsvc: 294% 237MiB | cache: 153% 10MiB | edge: 2979% 2.3GiB

[run 2/3]
=== h2load-reads ===
starting benchmark...
.
41.
53.
20.
18.
3Warm-up phase is over for thread #Main benchmark duration is started for thread #27.
56.
.
19.
46.
24Main benchmark duration is started for thread #39.
40.

.
.

.
.
23
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
31Main benchmark duration is over for thread #57. Stopping all clients.

. Stopping all clients.

. Stopping all clients.


finished in 5.07s, 46768.20 req/s, 499.57MB/s
requests: 233841 total, 250225 started, 233841 done, 233819 succeeded, 22 failed, 0 errored, 0 timeout
status codes: 234123 2xx, 0 3xx, 22 4xx, 0 5xx
traffic: 2.44GB (2619176018) total, 2.32MB (2435170) headers (space savings 93.29%), 2.43GB (2610987345) data
                     min         max         mean         sd        +/- sd
time for request:      174us       2.97s    321.21ms    221.20ms    61.74%
time for connect:     3.14ms    351.48ms     62.82ms     49.74ms    82.91%
time to 1st byte:     6.90ms    526.25ms    154.83ms     89.05ms    70.21%
req/s           :      34.39       53.40       45.66        2.89    73.05%
=== h2load-writes ===
starting benchmark...
progress: Main benchmark duration is started for thread #5.
31% of clients started
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
. Stopping all clients.

finished in 5.00s, 2282.60 req/s, 32.61KB/s
requests: 11413 total, 12437 started, 11413 done, 11408 succeeded, 5 failed, 0 errored, 0 timeout
status codes: 11408 2xx, 0 3xx, 5 4xx, 0 5xx
traffic: 163.04KB (166955) total, 52.09KB (53337) headers (space savings 91.51%), 720B (720) data
                     min         max         mean         sd        +/- sd
time for request:     1.83ms       2.84s    409.05ms    205.31ms    72.84%
time for connect:     3.86ms     31.45ms     18.48ms      8.18ms    57.81%
time to 1st byte:    11.95ms    124.99ms     66.96ms     41.21ms    57.81%
req/s           :      13.40       22.40       17.83        1.42    75.78%
[info] CPU 4261.5% | Mem 4.8GiB
[info]   server: 478% 2.0GiB | authsvc: 479% 249MiB | cache: 208% 11MiB | edge: 3097% 2.5GiB

[run 3/3]
=== h2load-reads ===
starting benchmark...
24.
43Main benchmark duration is started for thread #57.
.
.Warm-up phase is over for thread #25.22Warm-up phase is over for thread #.

28Main benchmark duration is started for thread #25.
14.
58.
.Main benchmark duration is started for thread #
4.
8.

37.


.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
2. Stopping all clients.
53. Stopping all clients.
39. Stopping all clients.
4. Stopping all clients.Main benchmark duration is over for thread #
21. Stopping all clients.
21
31. Stopping all clients.

58Stopped all clients for thread #. Stopping all clients.47



finished in 5.08s, 48606.20 req/s, 515.90MB/s
requests: 243031 total, 259415 started, 243031 done, 242889 succeeded, 142 failed, 0 errored, 0 timeout
status codes: 243224 2xx, 0 3xx, 142 4xx, 0 5xx
traffic: 2.52GB (2704823008) total, 2.39MB (2502091) headers (space savings 93.36%), 2.51GB (2696353799) data
                     min         max         mean         sd        +/- sd
time for request:      138us       3.35s    305.80ms    238.59ms    66.86%
time for connect:     4.04ms       1.28s    175.51ms    223.33ms    80.27%
time to 1st byte:     6.41ms       1.40s    295.45ms    294.25ms    83.11%
req/s           :      29.80       56.99       47.46        4.50    66.50%
=== h2load-writes ===
starting benchmark...
progress: Warm-up phase is over for thread #315% of clients started
.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_128_GCM_SHA256
Server Temp Key: X25519 253 bits
Application protocol: h2
6. Stopping all clients.

finished in 5.00s, 2378.40 req/s, 33.67KB/s
requests: 11892 total, 12916 started, 11892 done, 11884 succeeded, 8 failed, 0 errored, 0 timeout
status codes: 11884 2xx, 0 3xx, 8 4xx, 0 5xx
traffic: 168.37KB (172412) total, 52.72KB (53985) headers (space savings 91.76%), 1.13KB (1152) data
                     min         max         mean         sd        +/- sd
time for request:      465us       3.08s    405.32ms    226.75ms    74.41%
time for connect:     2.98ms     34.53ms     19.77ms      9.03ms    58.59%
time to 1st byte:     5.63ms    208.82ms     67.73ms     50.29ms    83.59%
req/s           :      14.40       23.00       18.58        1.61    68.75%
[info] CPU 4168.4% | Mem 5.0GiB
[info]   server: 455% 2.3GiB | authsvc: 449% 228MiB | cache: 174% 10MiB | edge: 3090% 2.5GiB

=== Best: 50218 req/s (CPU: 4168.4%, Mem: 5.0GiB) ===
[info] saved results/production-stack/1024/fulmine-tuned.json
[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/fulmine-tuned.json - 2 new, 38 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536

@nigrosimone

Copy link
Copy Markdown
Contributor Author

Wait for #1255 (comment)

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