Project

General

Profile

Bug #21685 » puma_bench_results.txt

luke-gru (Luke Gruber), 01/22/2026 07:04 PM

 
AMD Ryzen 7 9700X 8-Core Processor with 32 GB DDR5 6000
6.17.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 14 Nov 2025 06:54:20 +0000 x86_64 GNU/Linux
Puma version: 7.2.0 ("On The Corner")

Before: ruby 4.1.0dev (2026-01-06T04:38:13Z master ad6b85450d) +PRISM [x86_64-linux]
After: https://github.com/ruby/ruby/pull/15840/changes/66eec4a8c97c7927087a288fb8714532cbf7ac9d

---

Before:
Each worker sleeps for 5ms during each request with many requests
./benchmarks/local/long_tail_hey.sh -w2 -t5:5 -R100 -d0.005
Mult RPS 50% 99% ───────────────────── Hey Command ─────────────────────
6.00 1954 0.0306 0.0317 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.005
4.00 1954 0.0204 0.0212 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.005
3.00 1957 0.0153 0.0156 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.005
2.00 1952 0.0102 0.0104 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.005
1.50 1871 0.0067 0.0101 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.005
1.00 1937 0.0051 0.0057 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.005
Avg RPS: 1937

After:
./benchmarks/local/long_tail_hey.sh -w2 -t5:5 -R100 -d0.005
Mult RPS 50% 99% ───────────────────── Hey Command ─────────────────────
6.00 1913 0.0306 0.0348 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.005
4.00 1953 0.0204 0.0214 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.005
3.00 1955 0.0153 0.0155 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.005
2.00 1953 0.0102 0.0106 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.005
1.50 1901 0.0068 0.0103 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.005
1.00 1936 0.0051 0.0055 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.005
Avg RPS: 1935 (No difference)

---

Before:
Small sleep (100 micros) with many requests
./benchmarks/local/long_tail_hey.sh -w2 -t5:5 -R100 -d0.0001

Mult RPS 50% 99% ───────────────────── Hey Command ─────────────────────
6.00 35663 0.0014 0.0128 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.0001
4.00 38265 0.0009 0.0023 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.0001
3.00 44723 0.0006 0.0012 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.0001
2.00 41101 0.0004 0.0013 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.0001
1.50 43513 0.0003 0.0009 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.0001
1.00 32079 0.0002 0.0010 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.0001
Avg RPS: 39224

After:

Mult RPS 50% 99% ───────────────────── Hey Command ─────────────────────
6.00 37598 0.0013 0.0156 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.0001
4.00 42681 0.0008 0.0022 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.0001
3.00 42236 0.0006 0.0019 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.0001
2.00 46691 0.0004 0.0010 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.0001
1.50 43714 0.0003 0.0010 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.0001
1.00 32928 0.0002 0.0010 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.0001
Avg RPS: 40974 (increase 4.5%)


---

Before:
Even smaller sleep (1/100 ms) = 10 microseconds
./benchmarks/local/long_tail_hey.sh -w2 -t5:5 -R100 -d0.00001

Mult RPS 50% 99% ────────────────────── Hey Command ──────────────────────
6.00 36688 0.0013 0.0128 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.00001
4.00 38687 0.0009 0.0029 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.00001
3.00 45955 0.0006 0.0012 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.00001
2.00 46138 0.0004 0.0012 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.00001
1.50 44064 0.0003 0.0009 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.00001
1.00 40188 0.0002 0.0009 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.00001
Avg RPS: 41953

After:

Mult RPS 50% 99% ────────────────────── Hey Command ──────────────────────
6.00 40325 0.0012 0.0098 hey -c 60 -n 6000 http://127.0.0.1:40001/sleep0.00001
4.00 40766 0.0008 0.0027 hey -c 40 -n 4000 http://127.0.0.1:40001/sleep0.00001
3.00 49218 0.0006 0.0013 hey -c 30 -n 3000 http://127.0.0.1:40001/sleep0.00001
2.00 44074 0.0004 0.0014 hey -c 20 -n 2000 http://127.0.0.1:40001/sleep0.00001
1.50 42861 0.0003 0.0010 hey -c 15 -n 1500 http://127.0.0.1:40001/sleep0.00001
1.00 41182 0.0002 0.0008 hey -c 10 -n 1000 http://127.0.0.1:40001/sleep0.00001
Avg RPS: 43071 (increase 2.7%)

=====

Before
./benchmarks/local/response_time_wrk.sh -s tcp -w2 -t8

wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a1' http://127.0.0.1:40001 | 635610 requests in 10.10s, 44.26MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c1' http://127.0.0.1:40001 | 629108 requests in 10.10s, 43.81MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s1' http://127.0.0.1:40001 | 625136 requests in 10.10s, 43.53MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i1' http://127.0.0.1:40001 | 624840 requests in 10.10s, 43.51MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a10' http://127.0.0.1:40001 | 626204 requests in 10.10s, 43.61MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c10' http://127.0.0.1:40001 | 629091 requests in 10.10s, 43.81MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s10' http://127.0.0.1:40001 | 623521 requests in 10.10s, 43.42MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i10' http://127.0.0.1:40001 | 622795 requests in 10.10s, 43.37MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a100' http://127.0.0.1:40001 | 625776 requests in 10.10s, 43.58MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c100' http://127.0.0.1:40001 | 621155 requests in 10.10s, 43.25MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s100' http://127.0.0.1:40001 | 625699 requests in 10.10s, 43.57MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i100' http://127.0.0.1:40001 | 621540 requests in 10.10s, 43.28MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a256' http://127.0.0.1:40001 | 626027 requests in 10.10s, 43.59MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c256' http://127.0.0.1:40001 | 623811 requests in 10.10s, 43.44MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s256' http://127.0.0.1:40001 | 619864 requests in 10.10s, 43.16MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i256' http://127.0.0.1:40001 | 616002 requests in 10.10s, 42.90MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a512' http://127.0.0.1:40001 | 616503 requests in 10.10s, 42.93MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c512' http://127.0.0.1:40001 | 623171 requests in 10.10s, 43.40MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s512' http://127.0.0.1:40001 | 625244 requests in 10.10s, 43.54MB read

After
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a1' http://127.0.0.1:40001 | 685349 requests in 10.10s, 47.72MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c1' http://127.0.0.1:40001 | 676782 requests in 10.10s, 47.13MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s1' http://127.0.0.1:40001 | 669920 requests in 10.10s, 46.65MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i1' http://127.0.0.1:40001 | 674729 requests in 10.10s, 46.99MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a10' http://127.0.0.1:40001 | 680236 requests in 10.10s, 47.37MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c10' http://127.0.0.1:40001 | 672238 requests in 10.10s, 46.81MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s10' http://127.0.0.1:40001 | 665337 requests in 10.10s, 46.33MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i10' http://127.0.0.1:40001 | 672931 requests in 10.10s, 46.86MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a100' http://127.0.0.1:40001 | 678857 requests in 10.10s, 47.27MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c100' http://127.0.0.1:40001 | 672657 requests in 10.10s, 46.84MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s100' http://127.0.0.1:40001 | 666323 requests in 10.10s, 46.40MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i100' http://127.0.0.1:40001 | 672034 requests in 10.10s, 46.80MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a256' http://127.0.0.1:40001 | 673171 requests in 10.10s, 46.88MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c256' http://127.0.0.1:40001 | 672113 requests in 10.10s, 46.80MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s256' http://127.0.0.1:40001 | 670322 requests in 10.10s, 46.68MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: i256' http://127.0.0.1:40001 | 670511 requests in 10.10s, 46.69MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: a512' http://127.0.0.1:40001 | 665171 requests in 10.10s, 46.32MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: c512' http://127.0.0.1:40001 | 664028 requests in 10.10s, 46.24MB read
wrk -t12 -c24 -d10s --latency -H 'Body-Conf: s512' http://127.0.0.1:40001 | 668110 requests in 10.10s, 46.52MB read

Before avg: 624268
After avg: 672148
Increase 7.6%

---

Before:
./benchmarks/local/response_time_wrk.sh -s tcp -w2 -t16

wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a1' http://127.0.0.1:40001 | 623502 requests in 10.10s, 43.42MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c1' http://127.0.0.1:40001 | 616437 requests in 10.10s, 42.93MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s1' http://127.0.0.1:40001 | 612220 requests in 10.10s, 42.63MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i1' http://127.0.0.1:40001 | 605980 requests in 10.10s, 42.20MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a10' http://127.0.0.1:40001 | 600353 requests in 10.10s, 41.81MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c10' http://127.0.0.1:40001 | 608470 requests in 10.10s, 42.37MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s10' http://127.0.0.1:40001 | 617892 requests in 10.10s, 43.03MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i10' http://127.0.0.1:40001 | 610860 requests in 10.10s, 42.54MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a100' http://127.0.0.1:40001 | 607454 requests in 10.10s, 42.30MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c100' http://127.0.0.1:40001 | 603170 requests in 10.10s, 42.00MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s100' http://127.0.0.1:40001 | 597098 requests in 10.10s, 41.58MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i100' http://127.0.0.1:40001 | 596787 requests in 10.10s, 41.56MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a256' http://127.0.0.1:40001 | 604227 requests in 10.10s, 42.08MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c256' http://127.0.0.1:40001 | 599670 requests in 10.10s, 41.76MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s256' http://127.0.0.1:40001 | 614165 requests in 10.10s, 42.77MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i256' http://127.0.0.1:40001 | 608335 requests in 10.10s, 42.36MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a512' http://127.0.0.1:40001 | 602950 requests in 10.10s, 41.99MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c512' http://127.0.0.1:40001 | 598934 requests in 10.10s, 41.71MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s512' http://127.0.0.1:40001 | 593387 requests in 10.10s, 41.32MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i512' http://127.0.0.1:40001 | 587209 requests in 10.10s, 40.89MB read

Avg: 605455

After:
./benchmarks/local/response_time_wrk.sh -s tcp -w2 -t16

wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a1' http://127.0.0.1:40001 | 665302 requests in 10.10s, 46.33MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c1' http://127.0.0.1:40001 | 658080 requests in 10.10s, 45.83MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s1' http://127.0.0.1:40001 | 654259 requests in 10.10s, 45.56MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i1' http://127.0.0.1:40001 | 644970 requests in 10.10s, 44.91MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a10' http://127.0.0.1:40001 | 649780 requests in 10.10s, 45.25MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c10' http://127.0.0.1:40001 | 653826 requests in 10.10s, 45.53MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s10' http://127.0.0.1:40001 | 657356 requests in 10.10s, 45.78MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i10' http://127.0.0.1:40001 | 650105 requests in 10.10s, 45.27MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a100' http://127.0.0.1:40001 | 644248 requests in 10.10s, 44.86MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c100' http://127.0.0.1:40001 | 637471 requests in 10.10s, 44.39MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s100' http://127.0.0.1:40001 | 630748 requests in 10.10s, 43.92MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i100' http://127.0.0.1:40001 | 625006 requests in 10.10s, 43.52MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a256' http://127.0.0.1:40001 | 618438 requests in 10.10s, 43.07MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c256' http://127.0.0.1:40001 | 634689 requests in 10.10s, 44.20MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s256' http://127.0.0.1:40001 | 660912 requests in 10.10s, 46.02MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i256' http://127.0.0.1:40001 | 652599 requests in 10.10s, 45.44MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: a512' http://127.0.0.1:40001 | 646365 requests in 10.10s, 45.01MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: c512' http://127.0.0.1:40001 | 640518 requests in 10.10s, 44.60MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: s512' http://127.0.0.1:40001 | 635738 requests in 10.10s, 44.27MB read
wrk -t25 -c50 -d10s --latency -H 'Body-Conf: i512' http://127.0.0.1:40001 | 629550 requests in 10.10s, 43.84MB read

Avg: 644498
Increase: 6.5%
(1-1/2)