# kv_bench (Mace vs RocksDB) Quick start for reproducible comparison. Full guide: [docs/repro.md](./docs/repro.md). ## 5-Minute Quickstart 1. Set your storage root (any mount path, not hardcoded to `/nvme`): ```bash export KV_BENCH_STORAGE_ROOT=/path/to/your/storage/kvbench mkdir -p "${KV_BENCH_STORAGE_ROOT}" ``` 2. Initialize Python env once: ```bash cd /home/abby/kv_bench/scripts ./init.sh source ./bin/activate cd /home/abby/kv_bench ``` 3. Run baseline comparison (both engines write to the same CSV): ```bash 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 ``` 4. View and plot results: ```bash ./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): ```bash ./scripts/bin/python ./scripts/phase1_eval.py ./scripts/phase1_results.csv ``` - Phase 2 (core median + slow scenarios): ```bash ./scripts/bin/python ./scripts/phase2_report.py ./scripts/phase2_results.csv ``` - Phase 3 (durability cost): ```bash ./scripts/bin/python ./scripts/phase3_report.py ./scripts/phase3_results.csv ``` - Phase 4 (restart/recovery): ```bash ./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](./docs/repro.md).