RocksDB use case
How to reproduce
This page describes how to reproduce the results presented in the paper for three setups:
- Vanilla: without tracing I/O events
- strace: tracing system calls with strace
- DIO: tracing and analyzing system calls with DIO
RocksDB configuration
- Source code: https://github.com/facebook/rocksdb
- Version: 5.17.2
- Congigurations:
level0_slowdown_writes_trigger = -1;
level0_stop_writes_trigger = 100;
- compaction threads =
7;
- flush threads =
1;
- Env Configurations:
- Memory limit: 1024 MiB
- I/O limit (bytes per write operation): 200mb
Benchmark configuration
- Benchmark: db_bench
- Docker image: elastic/rally
- Configurations:
- workload: YCSB A - a mixture of read-write requests in a close-loop.
- client threads:
8
- number of operations: 100,000,000
DIO configuration
- Tracer Configurations:
- Filter events by system call type (
target_events
): - open, openat, creat
- read, pread64, readv
- write, pwrite64, writev
- close
- Filter events by file paths (
target_paths
): - RocksDB folder:
/rocksdb/test/kvstore
- Filter events by system call type (
Docker images
- Docker image: taniaesteves/dio-rocksdb:v5.17.2
- Load databae:
docker run -it --rm --name rocksdb --pid=host --privileged --cap-add=ALL --net=host -v /lib/modules:/lib/modules -v /usr/src:/usr/src -v /sys/kernel/debug/:/sys/kernel/debug/ -v rocksdb_data/kvstore:/rocksdb/test/kvstore -v rocksdb_data/results:/rocksdb/test/results -e ROCKSDB_LOAD=100000000 -e DB_BENCH_OPS=100000000 taniaesteves/dio-rocksdb:v5.17.2 load - Run db_bench (YCSB A):
- Vanilla:
- strace:
- DIO:
docker run -it --rm --name rocksdb --pid=host --privileged --cap-add=ALL --net=host -v /lib/modules:/lib/modules -v /usr/src:/usr/src -v /sys/kernel/debug/:/sys/kernel/debug/ --device-write-bps /dev/sda:200mb --memory=1G -v rocksdb_data/kvstore:/rocksdb/test/kvstore -v rocksdb_data/results:/rocksdb/test/results -e ROCKSDB_LOAD=100000000 -e DB_BENCH_OPS=100000000 taniaesteves/dio-rocksdb:v5.17.2 ycsbwa docker run -it --rm --name rocksdb --pid=host --privileged --cap-add=ALL --net=host -v /lib/modules:/lib/modules -v /usr/src:/usr/src -v /sys/kernel/debug/:/sys/kernel/debug/ --device-write-bps /dev/sda:200mb --memory=1G -v strace_data:/strace_data -v rocksdb_data/kvstore:/rocksdb/test/kvstore -v rocksdb_data/results:/rocksdb/test/results -e ROCKSDB_LOAD=100000000 -e DB_BENCH_OPS=100000000 taniaesteves/dio-rocksdb:v5.17.2 strace ycsbwa docker run -it --rm --name rocksdb --pid=host --privileged --cap-add=ALL --net=host -v /lib/modules:/lib/modules -v /usr/src:/usr/src -v /sys/kernel/debug/:/sys/kernel/debug/ --device-write-bps /dev/sda:200mb --memory=1G -v dio_data:/dio_data -v dio.yaml:/usr/share/dio/conf/config.yaml -v rocksdb_data/kvstore:/rocksdb/test/kvstore -v rocksdb_data/results:/rocksdb/test/results -e ROCKSDB_LOAD=100000000 -e DB_BENCH_OPS=100000000 taniaesteves/dio-rocksdb:v5.17.2 dio ycsbwa