Skip to content

Benchmarks

Review SlateDB performance results and learn how to run your own benchmarks

SlateDB publishes release benchmark results at benchmark.slatedb.io. The slatedb/slatedb-benchmark repository contains the runner and workload definitions. It also stores the raw results published on the site.

The release suite starts from a shared database with 300 million records, about 120 GiB of logical data. The runner applies a fixed workload catalog to each SlateDB revision. The catalog combines relevant workloads from YCSB Core and RocksDB’s db_bench. SlateDB-specific cases exercise idle behavior and transaction contention. Most workloads run 64 closed-loop clients after a five-minute warmup and record 15 minutes of activity.

  • slatedb-bencher runs configurable database, compaction, and transaction benchmarks against an object store. Its README documents the command-line options, and benchmark-db.sh provides an example workload matrix.

  • SlateDB uses Criterion for microbenchmarks of internal functions. The benchmark sources live in slatedb/benches.

The nightly workflow runs the Criterion microbenchmarks on WarpBuild’s warp-ubuntu-latest-arm64-8x ARM runners. It also records profiles with pprof-rs and uploads them to pprof.me. The GitHub Actions job summary links to each profile.

SlateDB benchmarks measure the database and object store together. Use MinIO Warp to measure raw S3-compatible object store performance without SlateDB in the request path. Warp runs concurrent GET, PUT, DELETE, and mixed-request benchmarks with configurable object sizes and concurrency. Run it from the same region and network used by your SlateDB clients, ideally on the same machine, so the network path and client capacity remain comparable.