HanuDB, tuned while I slept · part 6 of 6
insight14 September 2026cost: local CPU; a free-tier VM for the real runs
Soaks: ten minutes, fourteen million documents
The runs that are not scored but catch what a 20-second bench cannot
The question
Of 14 attempts in this theme, which ones survived two benchmark runs, the correctness suite and the gates?
insight
Docker --cpus=1 (CFS quota) is a bad stand-in for a small VM: 50 ms throttling stalls and ±8 % noise. Pin a core instead.
Attempts14
Kept0
Discarded or crashed0
Every run in this theme
| # | score | writes/s | reads/s | verdict | what changed |
|---|---|---|---|---|---|
| 0073c | — | 15,712 | — | info | SOAK with snapshot_min_growth 0.25: packs of 1-3 GB every ~2 min, memory guard on 5x, still OOM-killed at ~7 min: the pack's own writes (3 GB in 30 s) pile up dirty… |
| 0074b | — | 18,262 | 160 | info | SOAK growth 0.25 with bounded packing: 10.96M docs at 18.3k/s, 0 errors, no OOM during writes; reads over 11M docs 160/s (8 GB on disk vs 768 MB); OOM-killed during the… |
| 0075b | — | 11,600 | — | info | SOAK growth 0.25 with streaming unpack: OOM-killed at ~5.5 min in the write phase; RSS crept 710 -> 793 with the memory guard on (writes throttled), i.e. growth from… |
| 0076b | — | 16,939 | 162 | info | SOAK growth 0.25 with the 2M-doc segment cap: 10.16M docs at 16.9k/s, 0 errors, no OOM during writes (guard on 5x); reads 162/s (page-cache-bound); OOM during the… |
| 0077b | — | 16,267 | — | info | SOAK growth 0.25 with the replay pause: 9.76M docs at 16.3k/s in 600 s, 213786 client timeouts (32 s pack of a 3.2 GB snapshot starves requests on one core), OOM-KILLED… |
| 0082b | — | 6,582 | — | info | SOAK of 0081+0082 (growth 0.25): OOM-KILLED after 184 s / 3.95M docs, right after packing a 955 MB snapshot (41.7 s at nice 10, 4x slower than at normal priority). Root… |
| 0083b | — | 19,059 | 3,843 | info | SOAK of 0083 (growth 0.25): 11.44M docs at 19.1k/s with 0 errors (0077b: 213k timeouts) while a 3.16 GB snapshot packed in 131 s at nice 10; anon flat at 447 MB through… |
| 0085b | — | 17,512 | 3,073 | info | SOAK of 0085 (growth 0.25): write phase 10.51M docs at 17.5k/s, 0 errors, anon <= 575 MB, 3.1 GB snapshot packed in 151 s in the background; reads 3073/s. REBUILD… |
| 0087b | — | 23,048 | 1,717 | info | SOAK of 0087 (jemalloc, growth 0.25): 13.83M docs at 23.0k/s (0077b: 16.3k), 0 errors, anon 260-320 MB all through (glibc: 447), 2.7 GB snapshot packed in 173 s in the… |
| 0088b | — | 21,870 | 2,252 | info | SOAK of 0088 (growth 0.25) PASSES END TO END: 13.12M docs at 21.9k/s, 0 errors, anon 260-330 MB live; reads 2252/s over 13.1M docs; crash + rebuild from a 1.9 GB… |
| 0091b | — | 22,524 | 1,017 | info | SOAK of 0091: write phase 13.52M docs at 22.5k/s, 0 errors, anon ~300 MB; REBUILD FAILED (0 docs): the crash hit while the 4.36 GB snapshot at seq 1650 was still being… |
| 0092b | — | 23,337 | 1,478 | info | SOAK of 0092 PASSES END TO END: 14.00M docs at 23.3k/s, 0 errors, anon 240-340 MB live (7 snapshots up to 4.5 GB packed in the background); reads 1478/s over 14M docs;… |
| 0107a | — | — | — | info | VM: daily verify cron (/etc/cron.daily/hanudb-verify) run by hand: 174 segments, 2 snapshots checked, OK (both real buckets, hash chain + twin equality) |
| 0107b | — | 22,462 | 758 | info | SOAK with the VM's settings (snapshot every 50 segments, growth 0.5) + the new point-in-time restore check in scripts/soak.sh: 13.48M docs at 22.5k/s, 0 errors, anon… |