Flower / Field notes

Across the garden.

Independent kitchens. Parallel Raft groups. One measured rush.
8 groups × 3 replicas · 16 tenants · 4 stores per tenant.

Passed

2026-09-25T05:44:52.947Z → 2026-09-25T05:45:53.082Z

Global customer goodput54,754.1 / sSuccessful customer calls divided by the union load window.
Customer readsCustomer reads: 2,303,662 calls; p50 1.03 ms, p99 11.1 ms, max 1.16 s. Log axis from 0.0426 ms to 103 ms; 0.093% of calls fall outside it.p50 1.03 ms · p99 11.1 ms · merged across groups
Customer writesCustomer writes: 988,978 calls; p50 107 ms, p99 213 ms, max 1.01 s. Log axis from 31.2 ms to 1.03 s; 0.015% of calls fall outside it.p50 107 ms · p99 213 ms · merged across groups
Independent auditsPassed768 orders · 1,924 pizzas · 99,199 replay checks
Replica-local customer reads · lag is allowed. Each read uses one coherent locally applied committed replica snapshot without a per-read quorum fence. Startup recovery can first require quorum. State, code, and aliases may lag without a bound; requests across replicas can go backward in revision. This policy must not be confused with fresh-read performance. Mutations and the final per-group audit retain their fresh correctness requirements.

What the total means

Successful primary customer logical calls across all groups divided by the union of their synchronized load intervals, including in-flight tails. Excludes retries, explicit replays, workers, errors, warmup and drain. Percentiles merge bucket counts; they are not averages of group percentiles.

Static tenant-to-group assignment. Each tenant's stores, queues and rankings stay within one independent Raft group. No cross-group transaction or global atomic snapshot in this workload.

Successful customer calls
3,292,640
Successful reads / writes
2,303,662 / 988,978
Failed customer calls
0
Measured union window
60.14 s
Shared overlap
60.08 s
Start skew
3.0 ms
Actual successful read / mutation mix
70.0% / 30.0%
Correctness
Passed
Global and individual group goodputGlobal uses the union window. Each group uses its own measured interval; adding those rates is not the global measurement. Global: 54,754.1 successful customer calls/s; group-0: 6,831.8 successful customer calls/s; group-1: 6,953.2 successful customer calls/s; group-2: 6,878.3 successful customer calls/s; group-3: 6,828.7 successful customer calls/s; group-4: 6,886.5 successful customer calls/s; group-5: 6,745.9 successful customer calls/s; group-6: 6,825.4 successful customer calls/s; group-7: 6,819.0 successful customer calls/sGlobal54,754.1group-06,831.8group-16,953.2group-26,878.3group-36,828.7group-46,886.5group-56,745.9group-66,825.4group-76,819.0successful customer calls/s · linear scale
Global uses the union window. Each group uses its own measured interval; adding those rates is not the global measurement.

Every group keeps its own books.

Group outcomes. Open the child reports for per-node routing, full invariant checks, lifecycle timing, and diagnostics.
Raft groupPartitionGoodput / sCompletedFailedReadsWritesFresh auditQuorum recoveryDetails
group-02 tenantstenant-0, tenant-16,831.8410,7710group-0 reads: 287,581 calls; p50 1.04 ms, p99 12 ms, max 1.16 s. Log axis from 0.0405 ms to 168 ms; 0.090% of calls fall outside it.p99 12 msgroup-0 writes: 123,190 calls; p50 108 ms, p99 207 ms, max 976 ms. Log axis from 30 ms to 1.12 s; 0.0073% of calls fall outside it.p99 207 msPassed96 / 96 delivered622.2 msHTML · JSON
group-12 tenantstenant-2, tenant-36,953.2418,0830group-1 reads: 292,489 calls; p50 1.03 ms, p99 12.6 ms, max 657 ms. Log axis from 0.0405 ms to 168 ms; 0.089% of calls fall outside it.p99 12.6 msgroup-1 writes: 125,594 calls; p50 105 ms, p99 217 ms, max 736 ms. Log axis from 30 ms to 1.12 s; 0.018% of calls fall outside it.p99 217 msPassed96 / 96 delivered559.7 msHTML · JSON
group-22 tenantstenant-4, tenant-56,878.3413,5680group-2 reads: 289,356 calls; p50 1.03 ms, p99 10.4 ms, max 1.16 s. Log axis from 0.0405 ms to 168 ms; 0.089% of calls fall outside it.p99 10.4 msgroup-2 writes: 124,212 calls; p50 106 ms, p99 215 ms, max 929 ms. Log axis from 30 ms to 1.12 s; 0.014% of calls fall outside it.p99 215 msPassed96 / 96 delivered672.4 msHTML · JSON
group-32 tenantstenant-6, tenant-76,828.7410,2830group-3 reads: 287,612 calls; p50 1.04 ms, p99 11.8 ms, max 1.02 s. Log axis from 0.0405 ms to 168 ms; 0.090% of calls fall outside it.p99 11.8 msgroup-3 writes: 122,671 calls; p50 108 ms, p99 213 ms, max 806 ms. Log axis from 30 ms to 1.12 s; 0.019% of calls fall outside it.p99 213 msPassed96 / 96 delivered616.7 msHTML · JSON
group-42 tenantstenant-8, tenant-96,886.5414,0500group-4 reads: 289,480 calls; p50 1.02 ms, p99 9.84 ms, max 1.01 s. Log axis from 0.0405 ms to 168 ms; 0.089% of calls fall outside it.p99 9.84 msgroup-4 writes: 124,570 calls; p50 107 ms, p99 205 ms, max 1.01 s. Log axis from 30 ms to 1.12 s; 0.014% of calls fall outside it.p99 205 msPassed96 / 96 delivered693.3 msHTML · JSON
group-52 tenantstenant-10, tenant-116,745.9405,6470group-5 reads: 283,559 calls; p50 1.04 ms, p99 10.9 ms, max 1.09 s. Log axis from 0.0405 ms to 168 ms; 0.091% of calls fall outside it.p99 10.9 msgroup-5 writes: 122,088 calls; p50 108 ms, p99 215 ms, max 944 ms. Log axis from 30 ms to 1.12 s; 0.0057% of calls fall outside it.p99 215 msPassed96 / 96 delivered704.3 msHTML · JSON
group-62 tenantstenant-12, tenant-136,825.4410,3910group-6 reads: 287,005 calls; p50 1.04 ms, p99 11.2 ms, max 1.09 s. Log axis from 0.0405 ms to 168 ms; 0.090% of calls fall outside it.p99 11.2 msgroup-6 writes: 123,386 calls; p50 108 ms, p99 217 ms, max 880 ms. Log axis from 30 ms to 1.12 s; 0.0073% of calls fall outside it.p99 217 msPassed96 / 96 delivered592.9 msHTML · JSON
group-72 tenantstenant-14, tenant-156,819.0409,8470group-7 reads: 286,580 calls; p50 1.03 ms, p99 10.5 ms, max 1.02 s. Log axis from 0.0405 ms to 168 ms; 0.090% of calls fall outside it.p99 10.5 msgroup-7 writes: 123,267 calls; p50 107 ms, p99 213 ms, max 980 ms. Log axis from 30 ms to 1.12 s; 0.013% of calls fall outside it.p99 213 msPassed96 / 96 delivered676.9 msHTML · JSON

Read and write histograms use each group's own primary customer calls, excluding worker polls and explicit replays. Each column shares one log axis (reads 0.0405 ms to 168 ms, writes 30 ms to 1.12 s); the line marks p99. Missing or empty populations remain unavailable. Recovery is measured separately per injected crash; it is not a cluster-wide failover time.

The tail belongs to the customers.

Customer reads2,303,662 calls

Customer reads: 2,303,662 calls; p50 1.03 ms, p99 11.1 ms, max 1.16 s. Log axis from 0.0456 ms to 81.1 ms; 0.1% of calls fall outside it.0.1 ms1 ms10 ms0.0456 ms–0.0535 ms: 0.043% of calls (989)0.0535 ms–0.0628 ms: 0.2% of calls (3,471)0.0628 ms–0.0736 ms: 0.3% of calls (6,277)0.0736 ms–0.0863 ms: 0.4% of calls (9,286)0.0863 ms–0.101 ms: 0.6% of calls (13,559)0.101 ms–0.119 ms: 0.8% of calls (19,268)0.119 ms–0.139 ms: 1.1% of calls (26,215)0.139 ms–0.163 ms: 1.5% of calls (33,934)0.163 ms–0.191 ms: 1.8% of calls (41,885)0.191 ms–0.224 ms: 2.2% of calls (50,101)0.224 ms–0.263 ms: 2.5% of calls (58,569)0.263 ms–0.308 ms: 2.9% of calls (66,518)0.308 ms–0.362 ms: 3.2% of calls (74,820)0.362 ms–0.424 ms: 3.7% of calls (84,508)0.424 ms–0.497 ms: 4.2% of calls (95,783)0.497 ms–0.583 ms: 4.7% of calls (108,766)0.583 ms–0.684 ms: 5.2% of calls (120,714)0.684 ms–0.802 ms: 5.6% of calls (129,799)0.802 ms–0.94 ms: 5.8% of calls (133,282)0.94 ms–1.1 ms: 5.9% of calls (134,807)1.1 ms–1.29 ms: 5.7% of calls (131,737)1.29 ms–1.52 ms: 5.6% of calls (128,520)1.52 ms–1.78 ms: 5.5% of calls (126,023)1.78 ms–2.08 ms: 5.5% of calls (126,716)2.08 ms–2.44 ms: 5.4% of calls (124,564)2.44 ms–2.86 ms: 4.9% of calls (113,544)2.86 ms–3.36 ms: 4.1% of calls (94,796)3.36 ms–3.94 ms: 3.1% of calls (71,309)3.94 ms–4.62 ms: 2.1% of calls (48,856)4.62 ms–5.42 ms: 1.5% of calls (34,942)5.42 ms–6.35 ms: 1.0% of calls (24,020)6.35 ms–7.45 ms: 0.7% of calls (17,261)7.45 ms–8.73 ms: 0.6% of calls (12,704)8.73 ms–10.2 ms: 0.4% of calls (9,398)10.2 ms–12 ms: 0.3% of calls (6,880)12 ms–14.1 ms: 0.2% of calls (5,327)14.1 ms–16.5 ms: 0.2% of calls (4,083)16.5 ms–19.4 ms: 0.1% of calls (2,435)19.4 ms–22.7 ms: 0.068% of calls (1,565)22.7 ms–26.6 ms: 0.058% of calls (1,329)26.6 ms–31.2 ms: 0.048% of calls (1,106)31.2 ms–36.6 ms: 0.031% of calls (722)36.6 ms–42.9 ms: 0.021% of calls (484)42.9 ms–50.3 ms: 0.011% of calls (251)50.3 ms–59 ms: 0.0043% of calls (98)59 ms–69.2 ms: 0.0045% of calls (103)69.2 ms–81.1 ms: 0.000043% of calls (1)p50 1.03 msp99 11.1 ms

Customer writes988,978 calls

Customer writes: 988,978 calls; p50 107 ms, p99 213 ms, max 1.01 s. Log axis from 34.5 ms to 910 ms; 0.085% of calls fall outside it.50 ms100 ms200 ms500 ms34.5 ms–37 ms: 0.030% of calls (299)37 ms–39.6 ms: 0.055% of calls (540)39.6 ms–42.5 ms: 0.1% of calls (1,187)42.5 ms–45.5 ms: 0.2% of calls (2,160)45.5 ms–48.8 ms: 0.4% of calls (3,886)48.8 ms–52.4 ms: 0.7% of calls (7,285)52.4 ms–56.1 ms: 1.4% of calls (13,883)56.1 ms–60.2 ms: 2.4% of calls (23,456)60.2 ms–64.5 ms: 3.3% of calls (33,042)64.5 ms–69.2 ms: 4.2% of calls (41,634)69.2 ms–74.2 ms: 4.6% of calls (45,875)74.2 ms–79.5 ms: 4.6% of calls (45,896)79.5 ms–85.2 ms: 4.2% of calls (41,098)85.2 ms–91.4 ms: 4.5% of calls (44,465)91.4 ms–98 ms: 6.6% of calls (64,991)98 ms–105 ms: 9.9% of calls (97,700)105 ms–113 ms: 11.8% of calls (116,900)113 ms–121 ms: 11.7% of calls (115,391)121 ms–129 ms: 10.0% of calls (99,025)129 ms–139 ms: 7.1% of calls (69,777)139 ms–149 ms: 4.4% of calls (43,765)149 ms–160 ms: 3.0% of calls (29,675)160 ms–171 ms: 1.6% of calls (15,449)171 ms–183 ms: 1.1% of calls (10,546)183 ms–197 ms: 0.6% of calls (6,243)197 ms–211 ms: 0.4% of calls (4,165)211 ms–226 ms: 0.3% of calls (2,914)226 ms–242 ms: 0.1% of calls (1,135)242 ms–260 ms: 0.1% of calls (1,072)260 ms–279 ms: 0.077% of calls (764)279 ms–299 ms: 0.066% of calls (657)299 ms–320 ms: 0.062% of calls (617)320 ms–343 ms: 0.019% of calls (188)343 ms–368 ms: 0.046% of calls (454)368 ms–395 ms: 0.016% of calls (160)395 ms–423 ms: 0.026% of calls (256)423 ms–454 ms: 0.0079% of calls (78)454 ms–486 ms: 0.014% of calls (143)599 ms–643 ms: 0.00030% of calls (3)643 ms–689 ms: 0.018% of calls (182)689 ms–739 ms: 0.022% of calls (220)739 ms–792 ms: 0.011% of calls (109)792 ms–849 ms: 0.038% of calls (376)849 ms–910 ms: 0.048% of calls (477)p50 107 msp99 213 ms

All customer calls3,292,640 calls

All customer calls: 3,292,640 calls; p50 1.91 ms, p99 173 ms, max 1.16 s. Log axis from 0.0413 ms to 976 ms; 0.032% of calls fall outside it.0.1 ms1 ms10 ms100 ms0.0413 ms–0.0514 ms: 0.020% of calls (674)0.0514 ms–0.064 ms: 0.1% of calls (4,510)0.064 ms–0.0797 ms: 0.3% of calls (9,870)0.0797 ms–0.0992 ms: 0.5% of calls (16,608)0.0992 ms–0.123 ms: 0.8% of calls (27,230)0.123 ms–0.154 ms: 1.2% of calls (40,651)0.154 ms–0.191 ms: 1.7% of calls (55,449)0.191 ms–0.238 ms: 2.2% of calls (71,076)0.238 ms–0.296 ms: 2.6% of calls (86,972)0.296 ms–0.369 ms: 3.1% of calls (102,172)0.369 ms–0.459 ms: 3.7% of calls (120,603)0.459 ms–0.572 ms: 4.4% of calls (143,945)0.572 ms–0.711 ms: 5.1% of calls (167,037)0.711 ms–0.885 ms: 5.5% of calls (180,682)0.885 ms–1.1 ms: 5.6% of calls (185,180)1.1 ms–1.37 ms: 5.5% of calls (179,859)1.37 ms–1.71 ms: 5.3% of calls (175,160)1.71 ms–2.13 ms: 5.3% of calls (173,751)2.13 ms–2.65 ms: 5.1% of calls (167,517)2.65 ms–3.29 ms: 4.2% of calls (138,788)3.29 ms–4.1 ms: 2.9% of calls (96,120)4.1 ms–5.1 ms: 1.8% of calls (58,422)5.1 ms–6.35 ms: 1.1% of calls (35,410)6.35 ms–7.9 ms: 0.7% of calls (22,523)7.9 ms–9.84 ms: 0.4% of calls (14,660)9.84 ms–12.2 ms: 0.3% of calls (9,813)12.2 ms–15.2 ms: 0.2% of calls (6,689)15.2 ms–19 ms: 0.1% of calls (4,144)19 ms–23.6 ms: 0.065% of calls (2,129)23.6 ms–29.4 ms: 0.059% of calls (1,951)29.4 ms–36.6 ms: 0.046% of calls (1,501)36.6 ms–45.5 ms: 0.1% of calls (4,472)45.5 ms–56.7 ms: 0.9% of calls (28,210)56.7 ms–70.6 ms: 3.3% of calls (107,887)70.6 ms–87.8 ms: 4.2% of calls (138,636)87.8 ms–109 ms: 7.7% of calls (254,978)109 ms–136 ms: 9.7% of calls (318,255)136 ms–169 ms: 3.2% of calls (104,138)169 ms–211 ms: 0.7% of calls (22,598)211 ms–262 ms: 0.2% of calls (5,364)262 ms–327 ms: 0.059% of calls (1,953)327 ms–407 ms: 0.026% of calls (870)407 ms–506 ms: 0.0098% of calls (323)506 ms–630 ms: 0.0048% of calls (159)630 ms–784 ms: 0.021% of calls (687)784 ms–976 ms: 0.060% of calls (1,971)p50 1.91 msp99 173 ms
Show as tables
Customer reads, all groups
LatencyCallsShareCumulative
0.0332 ms–0.0389 ms6<0.01%0.00%
0.0389 ms–0.0456 ms1230.01%0.01%
0.0456 ms–0.0535 ms9890.04%0.05%
0.0535 ms–0.0628 ms3,4710.15%0.20%
0.0628 ms–0.0736 ms6,2770.27%0.47%
0.0736 ms–0.0863 ms9,2860.40%0.87%
0.0863 ms–0.101 ms13,5590.59%1.46%
0.101 ms–0.119 ms19,2680.84%2.30%
0.119 ms–0.139 ms26,2151.14%3.44%
0.139 ms–0.163 ms33,9341.47%4.91%
0.163 ms–0.191 ms41,8851.82%6.73%
0.191 ms–0.224 ms50,1012.17%8.90%
0.224 ms–0.263 ms58,5692.54%11.45%
0.263 ms–0.308 ms66,5182.89%14.33%
0.308 ms–0.362 ms74,8203.25%17.58%
0.362 ms–0.424 ms84,5083.67%21.25%
0.424 ms–0.497 ms95,7834.16%25.41%
0.497 ms–0.583 ms108,7664.72%30.13%
0.583 ms–0.684 ms120,7145.24%35.37%
0.684 ms–0.802 ms129,7995.63%41.00%
0.802 ms–0.94 ms133,2825.79%46.79%
0.94 ms–1.1 ms134,8075.85%52.64%
1.1 ms–1.29 ms131,7375.72%58.36%
1.29 ms–1.52 ms128,5205.58%63.94%
1.52 ms–1.78 ms126,0235.47%69.41%
1.78 ms–2.08 ms126,7165.50%74.91%
2.08 ms–2.44 ms124,5645.41%80.32%
2.44 ms–2.86 ms113,5444.93%85.25%
2.86 ms–3.36 ms94,7964.12%89.36%
3.36 ms–3.94 ms71,3093.10%92.46%
3.94 ms–4.62 ms48,8562.12%94.58%
4.62 ms–5.42 ms34,9421.52%96.09%
5.42 ms–6.35 ms24,0201.04%97.14%
6.35 ms–7.45 ms17,2610.75%97.89%
7.45 ms–8.73 ms12,7040.55%98.44%
8.73 ms–10.2 ms9,3980.41%98.85%
10.2 ms–12 ms6,8800.30%99.14%
12 ms–14.1 ms5,3270.23%99.38%
14.1 ms–16.5 ms4,0830.18%99.55%
16.5 ms–19.4 ms2,4350.11%99.66%
19.4 ms–22.7 ms1,5650.07%99.73%
22.7 ms–26.6 ms1,3290.06%99.78%
26.6 ms–31.2 ms1,1060.05%99.83%
31.2 ms–36.6 ms7220.03%99.86%
36.6 ms–42.9 ms4840.02%99.88%
42.9 ms–50.3 ms2510.01%99.90%
50.3 ms–59 ms98<0.01%99.90%
59 ms–69.2 ms103<0.01%99.90%
69.2 ms–81.1 ms1<0.01%99.90%
81.1 ms–95.1 ms114<0.01%99.91%
112 ms–131 ms28<0.01%99.91%
131 ms–153 ms17<0.01%99.91%
153 ms–180 ms1<0.01%99.91%
180 ms–211 ms2<0.01%99.91%
211 ms–247 ms2<0.01%99.91%
247 ms–290 ms3<0.01%99.91%
290 ms–340 ms3<0.01%99.91%
340 ms–399 ms10<0.01%99.91%
399 ms–467 ms32<0.01%99.91%
467 ms–548 ms66<0.01%99.92%
548 ms–643 ms1290.01%99.92%
643 ms–753 ms1360.01%99.93%
753 ms–884 ms2900.01%99.94%
884 ms–1.04 s8850.04%99.98%
1.04 s–1.21 s4900.02%100%
Customer writes, all groups
LatencyCallsShareCumulative
13.9 ms–14.9 ms1<0.01%0.00%
14.9 ms–16 ms1<0.01%0.00%
16 ms–17.2 ms2<0.01%0.00%
17.2 ms–18.4 ms1<0.01%0.00%
18.4 ms–19.7 ms3<0.01%0.00%
19.7 ms–21.2 ms2<0.01%0.00%
21.2 ms–22.7 ms6<0.01%0.00%
22.7 ms–24.3 ms14<0.01%0.00%
24.3 ms–26.1 ms31<0.01%0.01%
26.1 ms–28 ms36<0.01%0.01%
28 ms–30 ms24<0.01%0.01%
30 ms–32.2 ms49<0.01%0.02%
32.2 ms–34.5 ms1720.02%0.03%
34.5 ms–37 ms2990.03%0.06%
37 ms–39.6 ms5400.05%0.12%
39.6 ms–42.5 ms1,1870.12%0.24%
42.5 ms–45.5 ms2,1600.22%0.46%
45.5 ms–48.8 ms3,8860.39%0.85%
48.8 ms–52.4 ms7,2850.74%1.59%
52.4 ms–56.1 ms13,8831.40%2.99%
56.1 ms–60.2 ms23,4562.37%5.36%
60.2 ms–64.5 ms33,0423.34%8.70%
64.5 ms–69.2 ms41,6344.21%12.91%
69.2 ms–74.2 ms45,8754.64%17.55%
74.2 ms–79.5 ms45,8964.64%22.19%
79.5 ms–85.2 ms41,0984.16%26.35%
85.2 ms–91.4 ms44,4654.50%30.84%
91.4 ms–98 ms64,9916.57%37.42%
98 ms–105 ms97,7009.88%47.30%
105 ms–113 ms116,90011.82%59.12%
113 ms–121 ms115,39111.67%70.78%
121 ms–129 ms99,02510.01%80.80%
129 ms–139 ms69,7777.06%87.85%
139 ms–149 ms43,7654.43%92.28%
149 ms–160 ms29,6753.00%95.28%
160 ms–171 ms15,4491.56%96.84%
171 ms–183 ms10,5461.07%97.91%
183 ms–197 ms6,2430.63%98.54%
197 ms–211 ms4,1650.42%98.96%
211 ms–226 ms2,9140.29%99.25%
226 ms–242 ms1,1350.11%99.37%
242 ms–260 ms1,0720.11%99.48%
260 ms–279 ms7640.08%99.55%
279 ms–299 ms6570.07%99.62%
299 ms–320 ms6170.06%99.68%
320 ms–343 ms1880.02%99.70%
343 ms–368 ms4540.05%99.75%
368 ms–395 ms1600.02%99.76%
395 ms–423 ms2560.03%99.79%
423 ms–454 ms780.01%99.80%
454 ms–486 ms1430.01%99.81%
599 ms–643 ms3<0.01%99.81%
643 ms–689 ms1820.02%99.83%
689 ms–739 ms2200.02%99.85%
739 ms–792 ms1090.01%99.86%
792 ms–849 ms3760.04%99.90%
849 ms–910 ms4770.05%99.95%
910 ms–976 ms3390.03%99.98%
976 ms–1.05 s1590.02%100%
All customer calls, all groups
LatencyCallsShareCumulative
0.0332 ms–0.0413 ms21<0.01%0.00%
0.0413 ms–0.0514 ms6740.02%0.02%
0.0514 ms–0.064 ms4,5100.14%0.16%
0.064 ms–0.0797 ms9,8700.30%0.46%
0.0797 ms–0.0992 ms16,6080.50%0.96%
0.0992 ms–0.123 ms27,2300.83%1.79%
0.123 ms–0.154 ms40,6511.23%3.02%
0.154 ms–0.191 ms55,4491.68%4.71%
0.191 ms–0.238 ms71,0762.16%6.87%
0.238 ms–0.296 ms86,9722.64%9.51%
0.296 ms–0.369 ms102,1723.10%12.61%
0.369 ms–0.459 ms120,6033.66%16.27%
0.459 ms–0.572 ms143,9454.37%20.65%
0.572 ms–0.711 ms167,0375.07%25.72%
0.711 ms–0.885 ms180,6825.49%31.21%
0.885 ms–1.1 ms185,1805.62%36.83%
1.1 ms–1.37 ms179,8595.46%42.29%
1.37 ms–1.71 ms175,1605.32%47.61%
1.71 ms–2.13 ms173,7515.28%52.89%
2.13 ms–2.65 ms167,5175.09%57.98%
2.65 ms–3.29 ms138,7884.22%62.19%
3.29 ms–4.1 ms96,1202.92%65.11%
4.1 ms–5.1 ms58,4221.77%66.89%
5.1 ms–6.35 ms35,4101.08%67.96%
6.35 ms–7.9 ms22,5230.68%68.64%
7.9 ms–9.84 ms14,6600.45%69.09%
9.84 ms–12.2 ms9,8130.30%69.39%
12.2 ms–15.2 ms6,6890.20%69.59%
15.2 ms–19 ms4,1440.13%69.72%
19 ms–23.6 ms2,1290.06%69.78%
23.6 ms–29.4 ms1,9510.06%69.84%
29.4 ms–36.6 ms1,5010.05%69.89%
36.6 ms–45.5 ms4,4720.14%70.02%
45.5 ms–56.7 ms28,2100.86%70.88%
56.7 ms–70.6 ms107,8873.28%74.16%
70.6 ms–87.8 ms138,6364.21%78.37%
87.8 ms–109 ms254,9787.74%86.11%
109 ms–136 ms318,2559.67%95.78%
136 ms–169 ms104,1383.16%98.94%
169 ms–211 ms22,5980.69%99.62%
211 ms–262 ms5,3640.16%99.79%
262 ms–327 ms1,9530.06%99.85%
327 ms–407 ms8700.03%99.87%
407 ms–506 ms3230.01%99.88%
506 ms–630 ms159<0.01%99.89%
630 ms–784 ms6870.02%99.91%
784 ms–976 ms1,9710.06%99.97%
976 ms–1.21 s1,0220.03%100%

All groups' bucket counts are merged before binning. Each log time axis spans its population's p0.1 to p99.9, so the rarest calls lie beyond its ends; the tables list every bin. Bins merge whole 1% buckets, and p50 and p99 are nearest-rank bucket upper bounds, within 1%. These are logical customer calls, including retries until success or terminal failure: failures add latency observations but no goodput. Empty populations stay unavailable, and group percentiles are never averaged.

Recovery and the full delivery cycle.

Leader failure under customer load

One row per recorded leader crash. Recovery and catch-up both start at the crash, not at each other.
GroupCrashTime into loadLeader before → afterServing quorumRestarted replica caught up
group-0130.01 s1 → 3622.2 ms2,733.6 ms
group-1130.03 s1 → 2559.7 ms2,718.3 ms
group-2130.01 s1 → 3672.4 ms2,806.1 ms
group-3130.02 s1 → 2616.7 ms2,730.0 ms
group-4130.02 s1 → 2693.3 ms2,824.3 ms
group-5130.03 s1 → 2704.3 ms2,871.8 ms
group-6130.02 s1 → 2592.9 ms2,742.1 ms
group-7130.02 s1 → 3676.9 ms2,744.1 ms

A serving quorum can resume before the killed replica rejoins. These polling observations are per group; they do not measure the time until every client succeeds. Missing milestones remain unavailable.

Orders, timers, and safety probes

Audited orders
768
Audited pizzas
1,924
Exact receipt replay checks
99,199
Expired-lease rejection checks
105
Configured baking delay
250.0 ms
Configured lease duration
2,000.0 ms
Delivery and timer sample counts include load and drain. Safety-probe counts cover the complete run.
GroupDeliveriesOrder to deliveryTimersTimer latenessReplaysStale leases
group-096group-0 order to delivery: 96 samples; p50 3.97 s, p99 7.58 s, max 7.58 s. Log axis from 565 ms to 10.8 s.p99 7.58 s96group-0 timer lateness: 96 samples; p50 70.6 ms, p99 127 ms, max 127 ms. Log axis from 1.5 ms to 343 ms.p99 127 ms12,37814
group-196group-1 order to delivery: 96 samples; p50 4.34 s, p99 8.37 s, max 8.37 s. Log axis from 565 ms to 10.8 s.p99 8.37 s96group-1 timer lateness: 96 samples; p50 54.5 ms, p99 221 ms, max 221 ms. Log axis from 1.5 ms to 343 ms.p99 221 ms12,5779
group-296group-2 order to delivery: 96 samples; p50 4.38 s, p99 8.87 s, max 8.87 s. Log axis from 565 ms to 10.8 s.p99 8.87 s96group-2 timer lateness: 96 samples; p50 136 ms, p99 228 ms, max 228 ms. Log axis from 1.5 ms to 343 ms.p99 228 ms12,43110
group-396group-3 order to delivery: 96 samples; p50 4.38 s, p99 8.45 s, max 8.45 s. Log axis from 565 ms to 10.8 s.p99 8.45 s96group-3 timer lateness: 96 samples; p50 96.1 ms, p99 263 ms, max 263 ms. Log axis from 1.5 ms to 343 ms.p99 263 ms12,39115
group-496group-4 order to delivery: 96 samples; p50 4.09 s, p99 7.36 s, max 7.36 s. Log axis from 565 ms to 10.8 s.p99 7.36 s96group-4 timer lateness: 96 samples; p50 84.4 ms, p99 178 ms, max 178 ms. Log axis from 1.5 ms to 343 ms.p99 178 ms12,42811
group-596group-5 order to delivery: 96 samples; p50 4.38 s, p99 8.7 s, max 8.7 s. Log axis from 565 ms to 10.8 s.p99 8.7 s96group-5 timer lateness: 96 samples; p50 129 ms, p99 231 ms, max 231 ms. Log axis from 1.5 ms to 343 ms.p99 231 ms12,15311
group-696group-6 order to delivery: 96 samples; p50 4.17 s, p99 7.95 s, max 7.95 s. Log axis from 565 ms to 10.8 s.p99 7.95 s96group-6 timer lateness: 96 samples; p50 92.3 ms, p99 151 ms, max 151 ms. Log axis from 1.5 ms to 343 ms.p99 151 ms12,42419
group-796group-7 order to delivery: 96 samples; p50 3.97 s, p99 8.5 s, max 8.5 s. Log axis from 565 ms to 10.8 s.p99 8.5 s96group-7 timer lateness: 96 samples; p50 69.2 ms, p99 166 ms, max 166 ms. Log axis from 1.5 ms to 343 ms.p99 166 ms12,41716

Order-to-delivery includes baking, queueing, abandoned leases, and delivery. Timer lateness measures callback execution after its due time, excluding the configured baking delay. These per-group lifecycle distributions are separate from customer request latency and are never merged into a global one. Each column shares one log axis: delivery 565 ms to 10.8 s, lateness 1.5 ms to 343 ms. Replay and expired-lease probes contribute to correctness checks, not customer goodput. Expected stale-lease rejections appear as HTTP errors in the child reports.

The garden shares a machine.

Server RSS sums add per-process sampled peaks; those peaks need not coincide. CPU is the sum of sampled per-node mean cores.
GroupServer peak sums, MiBNode peak, MiBSampled server coresNode load coresNode user CPUNode system CPUNode loop p99Rust driver peak, MiBRust driver coresDisk, MiB
group-0910.6431.20.960.053,797.7 ms549.7 ms47.2 ms20.60.13133.6
group-1915.7416.00.970.053,738.3 ms559.6 ms50.5 ms20.60.13135.0
group-2919.4415.50.970.053,727.4 ms554.6 ms55.1 ms20.60.13134.7
group-3893.0411.90.960.053,855.5 ms439.9 ms59.6 ms20.30.13134.0
group-4921.1433.30.970.053,813.7 ms571.6 ms48.4 ms20.60.13135.1
group-5932.0439.40.960.053,886.3 ms511.1 ms59.4 ms20.80.12137.5
group-6896.7406.40.960.053,939.2 ms540.2 ms51.7 ms20.60.13137.7
group-7911.4404.40.960.053,698.2 ms444.6 ms50.5 ms20.60.13137.3

Each child generator and every replica run on this host. Adding Raft groups adds writer lanes, replication work, drivers, memory, and disk contention; these results do not establish multi-host capacity or linear scaling. Node user/system CPU covers the whole run; Node load cores and optional Rust driver cores cover sampled load intervals. Both processes count toward driver cost. Sampling can miss short peaks; missing measurements are shown as unavailable.

Enough detail to repeat it.

CPU
Apple M5 Pro
OS / architecture
darwin 27.2.0 / arm64
Logical CPUs
18
Database processes
24
Generator/controller processes
16
Customer driver
rust
Node.js controller
v26.10.0
Driver SHA-256
b3ce2a3e598826cd14bf319d0f65cee7a47b3b3822b7474bd1b987d2d5808e7f
Customer loops per group
256
Drone loops per group
4
Tenants per group / stores per tenant
2 / 4
Hot stores per tenant
1
Hot-set mixture weight
80.0%
Read endpoints
replicas
Customer read policy
replica-local
Application transport
HTTP/2 · pooled h2c
Requested load / warmup
60.0 s / 1.0 s
Order cap per group
96
Maximum drain
60.0 s
Initialization
static
Binary SHA-256
a53ad2ae79f74da0f9ddf5d79a2450beebd0efb0e7e00f0cdfcd70929f34d35d
Bundle hash
d3b5c3e6fa9e51548200e79cde504fc967a5d7100a49af12a43f27560721ad64
Engine
quickjs

Hot-set weight is mixed with uniform store selection; it is not the final observed hot-store probability. Tenant selection is spread independently. Each tenant's stores and derived ranking remain in its assigned group. A busy tenant still shares one ordered writer lane; adding unrelated groups does not speed up that tenant's serial mutations.

Customer loops are closed-loop: each waits before issuing its next call. After the order cap, order choices become reads. Compare runs with the same workload, consistency, host, binary, and runtime settings. These are simultaneous independent-group measurements, not a globally atomic transaction or snapshot benchmark.

Runtime settings and complete workload options
{
  "runtime": {
    "engine": "quickjs",
    "settings": {
      "TOKIO_WORKER_THREADS": "2",
      "FLOWER_WRITER_BATCH_MODE": "adaptive",
      "FLOWER_WRITER_QUEUE_CAPACITY": "1024",
      "FLOWER_QUERY_WORKERS": "16",
      "FLOWER_PREPARATION_WORKERS": "16",
      "FLOWER_WRITER_PREPARATION_WORKERS": "1",
      "FLOWER_WRITER_WINDOW_MS": "50",
      "FLOWER_WRITER_BATCH_MS": "50"
    }
  },
  "environment": {
    "node": "v26.10.0",
    "os": "darwin 27.2.0",
    "arch": "arm64",
    "cpu": "Apple M5 Pro",
    "logicalCpus": 18,
    "colocatedNodes": 24,
    "replicasPerGroup": 3,
    "colocatedDrivers": 16,
    "colocatedControllers": 8,
    "colocatedNativeDrivers": 8
  },
  "options": {
    "offeredRate": 0,
    "groups": 8,
    "tenants": 2,
    "duration": 60,
    "warmup": 1,
    "drain": 60,
    "concurrency": 256,
    "workers": 4,
    "shops": 4,
    "hotShops": 1,
    "hotProbability": 0.8,
    "maxOrders": 96,
    "bakeMs": 250,
    "leaseMs": 2000,
    "duplicateRate": 0.1,
    "abandonRate": 0.1,
    "pollMs": 150,
    "requestTimeoutMs": 2000,
    "retryBudgetMs": 15000,
    "nodes": 3,
    "seed": "42",
    "initialization": "static",
    "queryRouting": "replicas",
    "readConsistency": "replica-local",
    "driver": "rust",
    "driverBinary": "/Users/pcarrier/src/flower/target/release/flower-bench-driver",
    "binary": "/Users/pcarrier/src/flower/target/release/flower",
    "json": "/Users/pcarrier/src/flower/bench/results/latest.json",
    "html": "/Users/pcarrier/src/flower/bench/results/latest.html",
    "baseline": null,
    "cpuProfile": null,
    "chaos": true,
    "http2": true,
    "keepData": false,
    "help": false
  }
}
Group failures and replica routing
[
  {
    "group": "group-0",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62799",
          "attempts": 97231,
          "completed": 97026,
          "failures": 205
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62808",
          "attempts": 101336,
          "completed": 101336,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62813",
          "attempts": 101336,
          "completed": 101336,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12378,
      "claims": 110,
      "emptyClaims": 872,
      "reclaimed": 14,
      "abandoned": 14,
      "lostLeases": 0,
      "staleLeaseChecks": 14
    }
  },
  {
    "group": "group-1",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62804",
          "attempts": 98016,
          "completed": 97831,
          "failures": 185
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62818",
          "attempts": 102759,
          "completed": 102759,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62821",
          "attempts": 102759,
          "completed": 102759,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12577,
      "claims": 105,
      "emptyClaims": 855,
      "reclaimed": 9,
      "abandoned": 9,
      "lostLeases": 0,
      "staleLeaseChecks": 9
    }
  },
  {
    "group": "group-2",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62805",
          "attempts": 97205,
          "completed": 97061,
          "failures": 144
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62819",
          "attempts": 101704,
          "completed": 101704,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62822",
          "attempts": 101704,
          "completed": 101704,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12431,
      "claims": 106,
      "emptyClaims": 843,
      "reclaimed": 10,
      "abandoned": 10,
      "lostLeases": 0,
      "staleLeaseChecks": 10
    }
  },
  {
    "group": "group-3",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62801",
          "attempts": 96694,
          "completed": 96505,
          "failures": 189
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62811",
          "attempts": 101384,
          "completed": 101384,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62816",
          "attempts": 101383,
          "completed": 101383,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12391,
      "claims": 111,
      "emptyClaims": 850,
      "reclaimed": 15,
      "abandoned": 15,
      "lostLeases": 0,
      "staleLeaseChecks": 15
    }
  },
  {
    "group": "group-4",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62802",
          "attempts": 97646,
          "completed": 97555,
          "failures": 91
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62810",
          "attempts": 102068,
          "completed": 102068,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62815",
          "attempts": 102068,
          "completed": 102068,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12428,
      "claims": 107,
      "emptyClaims": 859,
      "reclaimed": 11,
      "abandoned": 11,
      "lostLeases": 0,
      "staleLeaseChecks": 11
    }
  },
  {
    "group": "group-5",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62803",
          "attempts": 96030,
          "completed": 95839,
          "failures": 191
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62809",
          "attempts": 100019,
          "completed": 100019,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62814",
          "attempts": 100018,
          "completed": 100018,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12153,
      "claims": 107,
      "emptyClaims": 842,
      "reclaimed": 11,
      "abandoned": 11,
      "lostLeases": 0,
      "staleLeaseChecks": 11
    }
  },
  {
    "group": "group-6",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62806",
          "attempts": 97194,
          "completed": 97062,
          "failures": 132
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62817",
          "attempts": 100781,
          "completed": 100781,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62820",
          "attempts": 100780,
          "completed": 100780,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12424,
      "claims": 115,
      "emptyClaims": 844,
      "reclaimed": 19,
      "abandoned": 19,
      "lostLeases": 0,
      "staleLeaseChecks": 19
    }
  },
  {
    "group": "group-7",
    "failures": [],
    "queryRouting": {
      "mode": "replicas",
      "consistency": "replica-local",
      "auditConsistency": "fresh",
      "nodes": [
        {
          "id": 1,
          "url": "http://127.0.0.1:62800",
          "attempts": 96081,
          "completed": 95869,
          "failures": 212
        },
        {
          "id": 2,
          "url": "http://127.0.0.1:62807",
          "attempts": 100601,
          "completed": 100601,
          "failures": 0
        },
        {
          "id": 3,
          "url": "http://127.0.0.1:62812",
          "attempts": 100600,
          "completed": 100600,
          "failures": 0
        }
      ]
    },
    "counters": {
      "issuedOrders": 96,
      "delivered": 96,
      "replayChecks": 12417,
      "claims": 112,
      "emptyClaims": 845,
      "reclaimed": 16,
      "abandoned": 16,
      "lostLeases": 0,
      "staleLeaseChecks": 16
    }
  }
]