Go to file
2026-03-04 21:18:21 +08:00
.vscode adapt new mace 0.0.14 2025-10-12 18:29:40 +08:00
coreid add coreid 2025-08-15 16:38:03 +08:00
docs docs: rewrite README quickstart and add full repro guide 2026-03-04 09:59:50 +08:00
heap_trace adapt new mace 0.0.14 2025-10-12 18:29:40 +08:00
logger update scripts 2025-08-27 15:32:15 +08:00
rocksdb phase4: add soak/restart runner and recovery checks 2026-03-03 22:21:34 +08:00
scripts scripts: fix flag usage and phase4 crash-loop process kill 2026-03-04 08:01:16 +08:00
src phase4: add soak/restart runner and recovery checks 2026-03-03 22:21:34 +08:00
.gitignore update .gitignore 2026-03-04 21:18:21 +08:00
Cargo.toml refine test & support mace-0.0.27 2026-02-20 21:41:22 +08:00
maritx.md init 2025-08-02 16:14:27 +08:00
plan_exec.md docs: finalize phase commit records in plan_exec 2026-03-03 22:21:59 +08:00
README.md docs: rewrite README quickstart and add full repro guide 2026-03-04 09:59:50 +08:00

kv_bench (Mace vs RocksDB)

Quick start for reproducible comparison. Full guide: docs/repro.md.

5-Minute Quickstart

  1. Set your storage root (any mount path, not hardcoded to /nvme):
export KV_BENCH_STORAGE_ROOT=/path/to/your/storage/kvbench
mkdir -p "${KV_BENCH_STORAGE_ROOT}"
  1. Initialize Python env once:
cd /home/abby/kv_bench/scripts
./init.sh
source ./bin/activate
cd /home/abby/kv_bench
  1. Run baseline comparison (both engines write to the same CSV):
rm -rf "${KV_BENCH_STORAGE_ROOT}/basic_mace" "${KV_BENCH_STORAGE_ROOT}/basic_rocks"
mkdir -p "${KV_BENCH_STORAGE_ROOT}/basic_mace" "${KV_BENCH_STORAGE_ROOT}/basic_rocks"

./scripts/mace.sh "${KV_BENCH_STORAGE_ROOT}/basic_mace" ./scripts/benchmark_results.csv
./scripts/rocksdb.sh "${KV_BENCH_STORAGE_ROOT}/basic_rocks" ./scripts/benchmark_results.csv
  1. View and plot results:
./scripts/bin/python ./scripts/plot.py ./scripts/benchmark_results.csv ./scripts

Fast Result Reading

  • Raw input CSV: ./scripts/benchmark_results.csv
  • Key columns:
    • engine (mace / rocksdb)
    • workload_id (W1..W6)
    • ops_per_sec (higher is better)
    • p99_us (lower is better)
    • error_ops (must be 0 before drawing conclusions)

Phase Reports

  • Phase 1 (stability CV):
./scripts/bin/python ./scripts/phase1_eval.py ./scripts/phase1_results.csv
  • Phase 2 (core median + slow scenarios):
./scripts/bin/python ./scripts/phase2_report.py ./scripts/phase2_results.csv
  • Phase 3 (durability cost):
./scripts/bin/python ./scripts/phase3_report.py ./scripts/phase3_results.csv
  • Phase 4 (restart/recovery):
./scripts/bin/python ./scripts/phase4_report.py ./scripts/phase4_restart_mace.csv
./scripts/bin/python ./scripts/phase4_report.py ./scripts/phase4_restart_rocks.csv

Full Reproduction

For phase-by-phase commands, knobs, and interpretation rules, use docs/repro.md.