Skip to content

k-shortest-path: add correctness benchmark harness#95

Open
shiva-istari wants to merge 1 commit into
mainfrom
skharse/k-shortest-path
Open

k-shortest-path: add correctness benchmark harness#95
shiva-istari wants to merge 1 commit into
mainfrom
skharse/k-shortest-path

Conversation

@shiva-istari

Copy link
Copy Markdown

End-to-end benchmark for Dgraph's k-shortest path algorithm. Compares Dgraph's path-cost vector against a gonum Yen oracle across a maxfrontiersize sweep to detect the eviction-correctness bug reported in dgraph-io/dgraph#9577.

One command from zero to results:

./scripts/bench.sh --dataset-url [branch ...]

The script downloads the dataset, builds each branch, bulk-loads the graph into Dgraph, sweeps maxfrontiersize, and prints a cross-branch correctness table. Supports detached runs inside a memory-capped systemd transient unit (--detach) for long sweeps on a remote VM.

Components:

  • cmd/prepare: download + convert a DIMACS/CSV road graph to LDBC format
  • cmd/convert: LDBC -> Dgraph RDF + schema
  • cmd/bench: sweep maxfrontiersize, compare costs vs gonum Yen oracle
  • internal/oracle: gonum YenKShortestPaths wrapper
  • internal/compare: path-cost vector diff (ok/count_mismatch/weight_mismatch)
  • internal/client: Dgraph DQL shortest-path query + self-consistency check
  • scripts/bench.sh: end-to-end orchestration (dataset → zero → bulk → sweep)
  • scripts/lib/alpha.sh: Dgraph alpha lifecycle helpers (start/stop/reset/health)

End-to-end benchmark for Dgraph's k-shortest path algorithm. Compares
Dgraph's path-cost vector against a gonum Yen oracle across a
maxfrontiersize sweep to detect the eviction-correctness bug reported in
dgraph-io/dgraph#9577.

One command from zero to results:

  ./scripts/bench.sh --dataset-url <url> [branch ...]

The script downloads the dataset, builds each branch, bulk-loads the
graph into Dgraph, sweeps maxfrontiersize, and prints a cross-branch
correctness table. Supports detached runs inside a memory-capped systemd
transient unit (--detach) for long sweeps on a remote VM.

Components:
- cmd/prepare:   download + convert a DIMACS/CSV road graph to LDBC format
- cmd/convert:   LDBC -> Dgraph RDF + schema
- cmd/bench:     sweep maxfrontiersize, compare costs vs gonum Yen oracle
- internal/oracle:   gonum YenKShortestPaths wrapper
- internal/compare:  path-cost vector diff (ok/count_mismatch/weight_mismatch)
- internal/client:   Dgraph DQL shortest-path query + self-consistency check
- scripts/bench.sh:  end-to-end orchestration (dataset → zero → bulk → sweep)
- scripts/lib/alpha.sh: Dgraph alpha lifecycle helpers (start/stop/reset/health)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant