Skip to the document
Madhuopen lab

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

Every run in this theme
#scorewrites/sreads/sverdictwhat changed
0073c15,712infoSOAK 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…
0074b18,262160infoSOAK 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…
0075b11,600infoSOAK 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…
0076b16,939162infoSOAK 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…
0077b16,267infoSOAK 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…
0082b6,582infoSOAK 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…
0083b19,0593,843infoSOAK 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…
0085b17,5123,073infoSOAK 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…
0087b23,0481,717infoSOAK 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…
0088b21,8702,252infoSOAK 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…
0091b22,5241,017infoSOAK 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…
0092b23,3371,478infoSOAK 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;…
0107ainfoVM: daily verify cron (/etc/cron.daily/hanudb-verify) run by hand: 174 segments, 2 snapshots checked, OK (both real buckets, hash chain + twin equality)
0107b22,462758infoSOAK 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…
hanudbsoaksautonomous loop