Abstract
Flash is a non-volatile memory technology that sits conveniently in the huge gap between RAM and hard disk in terms of both cost and performance. With its properties of low power consumption, physical ruggedness, and small size, flash has enabled new experiences with many consumer electronic devices. However, it is only recently that flash is seeing widespread adoption in desktop and server applications, in the form of Solid State Drives (SSDs). The new applications of flash involve different storage access patterns (vs. in typical consumer devices) and pose new challenges to flash, due to its device properties, to deliver sustained high throughput and low latency. We advocate that innovation at the system/application software layer when using flash memory can lead to several factors of improvement in performance over simply using it as a drop-in hardware replacement for existing storage technologies. The key to deploying flash in the data center lies in (i) designing the software in a flash-aware manner so as to exploit its unique properties and work around its constraints, and (ii) identifying applications that can utilize the sweet spot between cost and performance. As an example of (i), we will present FlashStore, a high throughput, low latency persistent key-value store, that illustrates some guiding principles for designing software for flash -- exploiting fast random reads, minimizing random writes, using RAM space efficient techniques to index data on flash, and recognizing its non-volatile property. As concrete examples for (ii), we will present and evaluate two cloud/server applications that can benefit from a flash-based key-value store – (a) game state backend for Xbox LIVE online multiplayer gaming, and (b) ChunkStash, a flash-assisted inline data deduplication system.
Learning Objectives
Flash memory aware software design
Exploit benefits of flash memory
Design around peculiarities of flash memory
Identify applications for flash memory to exploit sweet spot between cost and performance
New cloud/server applications for flash memory