Optimization of RocksDB for Redis on Flash

RocksDB is a popular key-value store, optimized for fast storage. With Solid-State Drives (SSDs) becoming prevalent, RocksDB gained widespread adoption and is now common in production settings. Specifically, various software stacks embed RocksDB as a storage engine to optimize access to block storage. Unfortunately, tuning RocksDB is a complex task, involving many parameters with different degrees of dependencies. As we show in this paper, a highly tuned configuration can improve performance by an order of magnitude over the baseline configuration. In this paper, we describe our experience optimizing RocksDB for Redis-on-Flash (RoF) - a commercial implementation of the Redis in-memory key-value store that uses SSDs as RAM extension to dramatically increase the effective per-node capacity. RoF stores hot values in RAM, and utilizes RocksDB to store and manage cold data on SSD drives. We describe our methodology for tuning RocksDB parameters and present our experiments and findings (including both positive and negative tuning results) on two clouds: EC2 and GCE. Overall, we show how tuning RocksDB improved the database replication time for RoF by more than 11x. We hope that our experience will help others adopt, configure, and tune RocksDB in order to realize its full performance potential.