# Bitalostored

  • There are currently several well-known open source storage systems (compatible with the redis protocol), two products (*d* & *i*) with excellent performance are chosen. This benchmark is bases on bitalostored v6.0 and two procudcts (*d* & *i*) newest version.

# Hardware

CPU:    Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
Memory: 384GB
Disk:   2*3.5TB SSD
  • Disk(File) IOPS(BW)
BlockSize Write RandWrite Read RandRead
4KB 294K(1150MiB/s) 232K(905MiB/s) 446K(1742MiB/s) 446K(1743MiB/s)
8KB 266K(2080MiB/s) 244K(1902MiB/s) 309K(2414MiB/s) 404K(3159MiB/s)

# Program

  • Benchmark: memtier_benchmark (redis official tool)

  • NoSQL Program: thread number(8), cgroup cpu(8 core)

  • Command args: 3 data spec

--data-size=1024 --key-maximum=40672038 -t 16 -c 32 -n 317750 # items=40672000 (8*16*317750)
--data-size=128 --key-maximum=335544320 -t 16 -c 32 -n 2621440 # items=335544320 (8*16*2621440)
  • Command (e.g., --data-size=1024)
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="set __key__ __data__" --key-prefix="performance_test_key_prefix_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="get __key__" --key-prefix="performance_test_key_prefix_" --key-minimum=1 --key-maximum=40672038 --test-time=300
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="incr __key__" --key-prefix="int_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="lpush __key__ __data__" --key-prefix="list_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="sadd __key__ __data__" --key-prefix="set_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="zadd __key__ __key__ __data__" --key-prefix="" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750
./memtier_benchmark -t 16 -c 32 -s 127.0.0.1 -p xxxx --distinct-client-seed --command="hset __key__ __data__ __key__" --key-prefix="hash_" --key-minimum=1 --key-maximum=40672038 --random-data --data-size=1024 -n 317750

incr is irrelevant to data size, only needs to be tested once.

# Data

  • Total data size:40GB

  • Comparison dimensions: comand(SET、GET、LPUSH、SADD、ZADD、HSET) x value-size&count(1KB & 40,672,000、128B & 335,544,320), INCR

  • Comparison standard: QPS on single-core (multi-core QPS / core number), single-core performance reflects cost advantage better.

# Config

  • *d* & *i*
Threads:8
Memtable:512MB
WAL:enable
Binlog:disable
Cache:40GB

Other parameters are set as same as the official recommended benchmark configuration
  • bitalostored
Threads:8
Memtable:512MB
WAL:enable
Raftlog:disable
Cache:0GB~40GB

# Result

  • QPS

benchmark

  • QPS (Horizontal)

benchmark

ZUOYEBANG