WiredTiger OSU OSL benchmarks - wiredtiger/rocksdb GitHub Wiki

Introduction

These benchmarks are run on hardware provided by OSU OSL. The hardware configuration is:

  • 24 Intel(R) Xeon(R) CPU X5650 @ 2.67GHz (2 physical CPUs)
  • 144 GB RAM
  • 400 GB Intel s3700 SSD
  • 6+ disk SAS array using RAID-0 and xfs

Basic configurations:

The following tests are run using 500 million 200 byte records. All numbers are as reported by the benchmark - the throughput numbers do not necessarily reflect disk I/O.

The benchmarks run are based on the run_all script here: https://github.com/wiredtiger/rocksdb/blob/afb742f729fcffe41beb4b64862b215608555b29/run_all.sh and the subscripts it calls from rocksdb/runners/ at revision afb742f729fcffe41beb4b64862b215608555b29.

For my records: WiredTiger SSD is taken from wt_1386646429_500 RocksDB HDD is taken from rocks_1386718275_500 WiredTiger HDD is taken from wt_1386657211_500

Fill Random

Measurement WiredTiger SSD RocksDB HDD WiredTiger HDD
Ops/sec 394474 807852 401782
micros/op 2.535 1.24 2.49
Throughput (MB/s) 81 166 82
99% Latency 6.31 1.98 6.26
99.99% Latency 39.5 7.3 41
Max Latency 10013 342197 10211
DB size (GB) 88 67 86

NOTES:

  • I'm not entirely sure how the configuration options for RocksDB work, but I suspect RocksDB is allowed an additional 7.6GB of cache in this test via: `--write_buffer_size=268435456 --max_write_buffer_number=30". WiredTiger is configured with a single 1GB cache for the workload.

Fill Sequential

Measurement WiredTiger SSD RocksDB HDD WiredTiger HDD
Ops/sec 691312 725649 643382
micros/op 1.45 1.38 1.55
Throughput (MB/s) 142 149 132
99% Latency 4.67 2.28 4.68
99.99% Latency 45.61 8.59 43.35
Max Latency 10014 306481 10538
DB size (GB) 73 106 74

WiredTiger and RocksDB deliver similar performance in this test, even though RocksDB is configured to load directly into a single level of the LSM tree (thus avoiding the overhead of any background merge operations).

Overwrite

Measurement WiredTiger SSD RocksDB HDD WiredTiger HDD
Ops/sec 377543 135930 385427
micros/op 2.649 7.36 2.59
Throughput (MB/s) 77.8 28.0 79.4
99% Latency 6.52 11.39 6.44
99.99% Latency 41.04 1192 40
Max Latency 97248 341608 134240
DB size (GB) 147 117 147

NOTES:

  • WiredTiger is 2.8x faster than RocksDB for this test. This is the closest to a true insert test of the benchmarks on this page, since overwrite in an LSM tree (at least as implemented here) is simply an insert operation.

Read Random

Read random is run with 32 threads. Database size is large because no compression is used.

WiredTiger executed 20 million operations per thread RocksDB executed 1 million operations per thread (because it takes so long)

The above difference puts WiredTiger at a distinct disadvantage when it comes to tail latency measurements in this test.

Measurement WiredTiger SSD RocksDB HDD WiredTiger HDD
Ops/sec 273508 3747 173435
micros/op 3.66 266.8 5.77
99% Latency 1120 78658 1167
99.99% Latency 41444 208705 67045
Max Latency 6415292 1092593 7968930
DB size (GB) 207 107 209

Realistic read random

Database setup:

  • No compression
  • 180 byte items
  • 16 bit bloom filter keys
  • 16k leaf page size, 2 LSM merge threads for WiredTiger
  • 2GB cache
  • Sequential insert of 400 million. Allow LSM tree to merge.
  • Overwrite 50 million entries
  • Insert 8k items into the in-memory chunk
  • Read items using 32 threads
  • Reading 20 million items each in WiredTiger
  • Reading 10 million items each in RocksDB
Measurement WiredTiger HDD RocksDB SSD
Ops/sec 135171 59783
micros/op 7.398 16.727
99% Latency 2904 7779
99.99% Latency 64157 24937
Max Latency 1297245 227393
DB size (GB) 90 86

Similar, except:

  • 3 GB cache (to account for larger bloom filter size)
  • 20 threads - to avoid process switching
  • 20 million reads per thread (WiredTiger and RocksDB)
  • Allow WiredTiger to use mmap
  • Run on SSD
Measurement WiredTiger SSD RocksDB SSD
Ops/sec 253481 443969
micros/op 3.95 2.25
99% Latency 303 78
99.99% Latency 10667 417
Max Latency 2787967 363031
DB size (GB) 87 86