Skip to content

chore(vector/bench): resolve the mmap/OnDemand HNSW 50k bench class verdict after #853 #856

Description

@mosuka

Background

During #853's A/B (PR #854), the mmap/OnDemand f32 HNSW benches at n=50000 could not produce a verdict on this bench host:

  • HNSW Graph Search/top10/50000 measured +17% vs main, while HNSW Graph Search Rerank/top10/50000 — which runs the same traversal plus a rerank tail — measured −0.2% in one branch run and +20.4% in another.
  • The +20.4% run executed a strictly lighter binary than the −0.2% run (it skips an entire prefetch pass on this path), which is direct evidence the case cannot resolve ±20% on this host.
  • The untouched HNSW Fallback Search benches (code not modified by perf(vector/hnsw): segment-local u32 ordinal graph + LVS1 v2 format (sub-issue of #686) #853) swung −6.2%..+9.6% across the same sessions.

Full tables: the final A/B comment on #853. The store-level eager-int8 benches (the actual production VectorStore path) resolved cleanly at −56..−86%, so this is a measurement-quality question, not a known regression.

What to do

Observe whether a consistent post-#853 delta exists on the OnDemand/mmap path at 50k, using measurement the local host cannot provide:

  • pinned methodology (./scripts/bench-stable.sh --bench vector_search_bench -- "HNSW Graph Search/top10/50000"), and/or a second host / CI runner
  • interleaved A/B/A/B with medians, A/A null pair first

If a consistent regression is confirmed, file a targeted fix issue — candidate mechanisms to check: the graph.doc_id(ord) array read added to the f32 fallback distance path, and graph memory layout after v1→ordinal load translation.

Acceptance criteria

  • Pinned measurement done (bench-stable.sh, worktree A/B, shared corpus, interleaved; 5 A runs + 3 B runs)
  • Verdict: within noise — no consistent regression (+1.2–3.8% on tight pairs; the flagged +17–22% was host interference, proven by untouched-code spikes). Closed, no fix issue needed

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions