A tool to simplify benchmarking graph analytics platforms & graph databases
- rust
- python
- ansible
- terraform
- vagrant also requires plugins:
- Clone the repo
git clone https://github.com/graph-benchmarks/graph-benchmarks
Check the example.config.toml for an example configuration for the benchmark runner, with all options explained
- Build everything
./build.sh
A graph benchmarking platform based on graphalytics
Usage: bench [OPTIONS] <COMMAND>
Commands:
setup Setup platform & kubernetes
benchmark Run benchmarks
destroy Teardown platform & kubernetes
ls List Resources
dashboard Port forward dashboard
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose Verbose logging
-f, --file <FILE> Configuration file [default: config.toml]
-h, --help Print help
-V, --version Print version
Use the environment variable
LOG
for debug logging, eg.LOG=info
- Run setup
You might need sudo/root access
bin/bench setup
- List resources
bin/bench ls
- Run benchmarks
bin/bench benchmark
- Destroy resources
bin/bench destroy
Datasets are placed in the datasets
folder, with a vertex and edge file.
eg:
├── twitter
│ ├── twitter.v
│ ├── twitter.e
│ ├── config.toml
├── facebook
│ ├── facebook.v
│ ├── facebook.e
│ ├── config.toml
The config.toml
file contains these parameters:
weights = false
directed = false
Arguments to specific graph platforms can be provided in the config file and are driver specific.
[setup.graph_platform_args.graphscope]
cpu = 4
memory = "2Gi"
Specify cpu and memory for nodes using vagrant
[setup.master_platform_env]
cpu = "8"
memory = "8192"
[setup.worker_platform_env]
cpu = "8"
memory = "8192"
Arguments to [setup.worker_platform_env]
prefixed with worker-{n}
, eg. worker-0some_argument=3
to pass arguments to the object map used to spin up nodes
Arguments can be passed to platforms on a provider like shown below, for vagrant-libvirt
[setup.platform_args]
storage_pool_path = "/path/to/storage_pool"
Comes with drivers for:
Build arguments are specified in build.config.toml. If you want to build and run a minimal setup, remove unnecessary drivers & platforms from the build config file, and re-run build.sh
Follow one of the reference implementations for a more detailed guide.
- Create a rust library with the name
driver-config
inside the driver folder - Write your driver code
- Write a dockerfile to containerize your driver
- Add a
setup.yaml
, and aremove.yaml
for creating and destroying the graph platforms - The
driver-config
rust crate must implement theDriverConfig
trait present incommon/src/driver_config.rs
- Add it to
build.config.toml
The driver should take a single argument, to a yaml config file with the following format:
config:
id: 32 # integer database ID given for each run, provided by the runner
algo: sssp # the algorithm to run
log_file: /path/to/log/file
postgres:
host: postgres host
port: 5432
db: postgres db
user: postgres user
ps: postgres password
platform:
host: host of graph platform
port: port of graph platform
dataset:
vertex: /path/to/vertex/file
edges: /path/to/edge/file
name: dataset name
- Implement the
Platform
trait as a rust crate present incommon/src/provider.rs