Recently we shared YCSB benchmark results for YugaByte DB. Apart from YCSB, Netflix Data Store Benchmark (NDBench) is another publicly available, cloud-enabled benchmark tool for data store systems. We ran NDBench against YugaByte DB for 7 days and want to share our results:
Setup
YugaByte DB machines:
- 6-node cluster in Amazon Web Service (AWS). Each node is a i3.2xlarge machine with:
- 8 vCPUs Intel® Xeon® CPU E5-2686 v4 (Broadwell) @2.3 GHz
- 61GB RAM
- 1.9TB direct attached SSD
- Same availability zone
- Replication factor = 3
- Default YugaByte DB configuration parameters were used.
NDBench machine:
- 1 c3.xlarge machine
- 4 vCPUs Intel® Xeon® CPU E5-2680 v4 (Ivy Bridge)
- 7.5GB RAM
- Same availability zone as YugaByte DB cluster.
NDBench configuration used:
# Data size
ndbench.config.numKeys=20000000 # Backfill keys
ndbench.config.numValues=1000
ndbench.config.dataSize=1024
ndbench.config.cass.colsPerRow=8
# Number of worker threads
ndbench.config.numReaders=8
ndbench.config.numWriters=8
# Consistency level
ndbench.config.cass.writeConsistencyLevel=LOCAL_QUORUM
ndbench.config.cass.readConsistencyLevel=LOCAL_QUORUM
# Request per second (RPS)
ndbench.config.readRateLimit=7200
ndbench.config.writeRateLimit=1800
Results
- Execution time: 7 days (163 hours)
- Total successful reads = 4.11 billion, writes = 1.05 billion
- Latencies (milliseconds) observed:
- Read: Avg = 1.368ms, P95 = 3.311ms, P99 = 5.722ms, P995 = 6.866ms
- Write: Avg = 1.803ms, P95 = 2.299ms, P99 = 3.311ms, P995 = 4.768ms
Throughout the entire run, compactions were enabled and running in the background. In spite of that, our P99 (99% percentile) read/write latencies were still under 6 ms. These contrast significantly to much higher P99s seen with Apache Cassandra - primarily due to architectural reasons (eventual consistency needs background anti-entropy/read-repairs; quorum reads to achieve higher consistency put multiple servers in the critical path of each request) as well as implementation choices (Java implementation, GC pauses, etc.).