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 |