Reducing DRAM footprint to scale data store systems
Keywords: Electrical Engineering.

Data-intensive applications like databases, recommender systems, and key-value caches, typically consume a large amount of DRAM in order to provide high-performance operations. However, DRAM is a relatively expensive storage medium that is facing major scaling challenges. Storage technologies such as Non-Volatile Memory (NVM) and flash can potentially be a lower-cost alternative to DRAM, but introduce several challenges due to their limited read and write bandwidth, higher latency, and limited endurance. This dissertation focuses on how to exploit the application properties to mask these challenges. It provides the design and implementation of three novel and practical data-store systems that significantly reduce the DRAM footprint by utilizing various methods to overcome the device limitations. We present MyNVM, a SQL database that reduces DRAM usage by leveraging NVM as a second level cache, while providing comparable latency and queries-per-second (QPS) as MyRocks on a server with a much larger amount of DRAM. It introduces novel solutions to the challenges of replacing DRAM with NVM, including using small block sizes with a partitioned index, aligning blocks post-compression to reduce read bandwidth, utilizing dictionary compression, implementing an admission control policy, as well as replacing interrupts with a hybrid polling mechanism. Unfortunately, Using NVM solely as a cache may not be sufficient for highly performance-sensitive applications such as real-time recommender systems. We present Bandana, a storage system for deep learning models that uses NVM as the primary storage medium. Typical large-scale recommender systems use deep learning models that are stored on a large amount of DRAM and rely on embeddings, which consume most of the required memory. The main challenge in storing embeddings on NVM is its limited read bandwidth compared to DRAM. Bandana uses two primary techniques to address this limitation: first, it stores embedding vectors that are likely to be read together in the same physical location, using hypergraph partitioning, and second, it decides the number of embedding vectors to cache in DRAM by simulating dozens of small caches. These techniques allow Bandana to increase the effective read bandwidth of NVM by 2-3× and thereby significantly reduce the total cost of ownership. Even when providing sufficient performance, the adoption of NVM and flash has been limited in write-heavy use cases due to their limited durability. Key-value caches, for example, need to frequently insert, update and evict small objects. This causes excessive writes and erasures on flash storage, which significantly shortens the lifetime of flash. We present Flashield, a hybrid key-value cache that uses DRAM as a filter to control and limit writes to flash. Flashield performs lightweight machine learning admission control to predict which objects are likely to be read frequently without getting updated. These objects, which are prime candidates to be stored on flash, are written to flash in large chunks sequentially. In order to efficiently utilize the cache's available memory, Flashield utilizes a novel in-memory index for the variable-sized objects stored on flash that requires only 4 bytes per object in DRAM. Compared to state-of-the-art systems that suffer a write amplification of 2.5× or more, Flashield maintains a median write amplification of 0.5× (since many filtered objects are never written to flash at all), without any loss of hit rate or throughput