mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-12 03:12:11 +02:00
bench(engine): scenario benchmark harness — cold subprocess runs, wait4 peak-RSS, JSON lines
The dedicated cost/perf instrument testing.md's write_cost_s3 note has been promising: one cold, stateful macro-run per scenario in a fresh subprocess (self-respawn via current_exe), reaped with libc::wait4 so ru_maxrss gives kernel-exact peak RSS with no sampling; results are JSON lines and there are deliberately no assertions — a decision instrument, never a CI gate. Criterion is deliberately not used: statistics over warm in-process iterations is the wrong model for multi-second stateful scenarios, it measures no memory, and an OOM under --memory-cap-mb (setrlimit; enforced on Linux, best-effort on macOS) is a data point that needs crash isolation. Two scenarios ship with the skeleton: - merge-all-changed: an embedding table whose branch changed EVERY row's vector, merged three-way into a diverged main — the changed-delta concat + hash-join cost of branch_merge. --baseline re-runs the identical workload minus the merge so the peak-RSS delta isolates it (smoke, 20k rows x 256 dims: ~72 MB merge contribution on a 20.5 MB raw delta, ~3.5x). - nearest-prefilter: selectivity-s filtered nearest() where matching rows sit far from the query point — quantifies the post-filter ANN recall deficit (smoke, 20k rows, s=0.05, k=10: 1000 matching rows exist, 0 returned); becomes the prefilter latency comparison unchanged once the fix lands.
This commit is contained in:
parent
db96e7000d
commit
d426904ab6
3 changed files with 511 additions and 0 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -4946,6 +4946,7 @@ dependencies = [
|
|||
"lance-namespace",
|
||||
"lance-namespace-impls",
|
||||
"lance-table",
|
||||
"libc",
|
||||
"object_store",
|
||||
"omnigraph-compiler",
|
||||
"omnigraph-policy",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue