Skip to content

yugabyte/ybbench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ybbench


License Documentation Status Ask in forum Slack chat Analytics

What is ybbench Docker Container?

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:

  1. TPCC
  2. Sysbench
  3. YCSB
  4. yb-sample-apps

How to use.

  • Pull the docker image

    docker pull yugabytedb/ybbench:latest
  • Get ybbench help

     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]  
    
    ******************************************************************************
  • Benchmark Help(-h/--help)

     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
  • Run specific Benchmark

    • Running TPCC

      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.

    • Running Sysbench

      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
    • Running ycsb

      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

    • Running yb-sample-apps

      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 

ybbench in interactive mode

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

Build from source

You can build the docker image from the specific branches of respective benchmark repositories.

  1. Clone Repository
    git clone https://github.com/yugabyte/ybbench.git
  2. Run docker build
    cd ybbench
    # master branches is used by default if not specified
    docker build -t ybbench:0.1 .
    Docker Build with Specific Branch
    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> .

YugabyteDB


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages