This benchmark docker container is a way to easily run various benchmarks on the YugabyteDB.
This includes following benchmarks pre-installed and ready to be used:
-
docker pull yugabytedb/ybbench:latest
-
docker run --name ybbench --rm -it yugabytedb/ybbench:latest
Above run command will print out following help
****************************************************************************** * * * YugabyteDB Benchmark Help * * * ****************************************************************************** * This tool is used to run the benchmarks on YugabyteDB * Syntax: ./run [tpccbenchmark | sysbench | yb-sample-apps | ycsb] [params] ******************************************************************************
-
docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run <benchmark> --help # example: # docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run tpccbenchmark -h
-
-
Info about TPCC specific parameters can be found here.
# create tpcc db docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run tpccbenchmark --create=true --nodes=<node1-ip,node2-ip,node3-ip> # load the data docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run tpccbenchmark --load=true --nodes=<node1-ip,node2-ip,node3-ip> --warehouses=10 --loaderthreads=10 # execute phase docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run tpccbenchmark --execute=true --nodes=<node1-ip,node2-ip,node3-ip> --warehouses=10 --warmup-time-secs=0
To modify the workload related properties in TPCC -workload_all.xml, you can mount the file as a volume.
# download the file wget https://raw.githubusercontent.com/yugabyte/tpcc/master/config/workload_all.xml # modify workload_all.xml in any editor and run the benchmark docker run -v $(pwd)/workload_all.xml:/home/centos/code/tpcc/config/workload_all.xml --name ybbench --rm -it \ yugabytedb/ybbench:latest ./run tpccbenchmark \ --create=true --nodes=<node1-ip,node2-ip,node3-ip>
Alternatively, you can run ybbench in interactive mode.
-
Info about Sysbench specific parameters can be found here.
# cleanup phase docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run sysbench oltp_insert --threads=10 --time=30 --table_size=10000 --tables=1 --warmup-time=0 --range_key_partitioning=false --range_selects=true --thread-init-timeout=30 --serial_cache_size=1000 --db-driver=pgsql --pgsql-db=yugabyte --pgsql-port=5433 --pgsql-user=yugabyte --pgsql-host=<node1-ip,node2-ip,node3-ip> cleanup # prepare phase docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run sysbench oltp_insert --threads=10 --time=30 --table_size=10000 --tables=1 --warmup-time=0 --range_key_partitioning=false --range_selects=true --thread-init-timeout=30 --serial_cache_size=1000 --db-driver=pgsql --pgsql-db=yugabyte --pgsql-port=5433 --pgsql-user=yugabyte --pgsql-host=<node1-ip,node2-ip,node3-ip> prepare # run phase docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run sysbench oltp_insert --threads=10 --time=30 --table_size=10000 --tables=1 --warmup-time=0 --range_key_partitioning=false --range_selects=true --thread-init-timeout=30 --serial_cache_size=1000 --db-driver=pgsql --pgsql-db=yugabyte --pgsql-port=5433 --pgsql-user=yugabyte --pgsql-host=<node1-ip,node2-ip,node3-ip> run
-
Info about ycsb specific parameters can be found here.
# load docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run ycsb load yugabyteCQL -P yugabyteCQL/db.properties -P workloads/workloada # run docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run ycsb run yugabyteCQL -P yugabyteCQL/db.properties -P workloads/workloada
To modify the workload related properties in YCSB -db.properties, you can mount the file as a volume.
# download the file wget https://raw.githubusercontent.com/yugabyte/YCSB/master/yugabyteSQL/db.properties # modify the db.properties in any editor and run the benchmark docker run -v $(pwd)/db.properties:/home/centos/code/YCSB/yugabyteSQL/db.properties \ --name ybbench --rm -it yugabytedb/ybbench:latest ./run ycsb load basic -P workloads/workloada
Alternatively, you can run ybbench in interactive mode
-
Info about yb-sample-apps parameters can be found here.
docker run --name ybbench --rm -it yugabytedb/ybbench:latest ./run yb-sample-apps --workload CassandraKeyValue --value_size 16 --num_unique_keys 1000000 --num_threads_read 0 --num_threads_write 256 --nodes <node1-ip>:9042,<node2-ip>:9042,<node3-ip>:9042 --use_ascii_values create_table_name PerfTest_0 --output_json_metrics
-
You can run ybbench using docker's interactive mode.
docker run --name ybbench --rm -it yugabytedb/ybbench:latest bash
# Run the benchmark
./run <benchmark> <params>
You can also run ybbench in detached mode.
# -d for detached mode
docker run -d --name ybbench --rm -it yugabytedb/ybbench:latest bash
# docker exec into the running container
docker exec -it ybbench bash
You can build the docker image from the specific branches of respective benchmark repositories.
- Clone Repository
git clone https://github.com/yugabyte/ybbench.git
- Run docker build
Docker Build with Specific Branch
cd ybbench # master branches is used by default if not specified docker build -t ybbench:0.1 .
docker build -t ybbench:0.1 --build-arg tpcc_branch=<my-branch> \ --build-arg sysbench_branch=<my-branch> --build-arg sample_apps_branch=<my-branch> \ --build-arg ycsb_branch=<my-branch> .