Elastic Prefetching for High-Performance Storage Devices Open Access
Downloadable ContentDownload PDF
The spectrum of storage devices has expanded dramatically in the last several years with the increasing popularity of NAND flash memory. While hard drives hold on to the capacity advantage, flash based solid-state drives (SSD) with high IOPS and low latencies have become good candidates for data-intensive applications. As scientific and enterprise data requirements continue to grow rapidly, high-performance storage systems will consistently be in high demand. Although commonly used to improve the I/O performance of data-intensive applications, data prefetching, if inappropriately controlled, is likely interfere with normal I/O requests and result in lower application performance. In this work, we demonstrate that good performance benefits from data prefetching can be achieved with the help of accurate prediction and an adaptive feedback directed prefetching rate that scales with application needs and is also sensitive to varying storage device architectures. We call this combined approach elastic prefetching.We have designed prefetchd, an elastic data prefetcher, that understands the architectural characteristics of heterogeneous storage devices and carefully prefetches data in a manner that closely matches application needs in runtime. We have implemented a Linux-based prototype that runs in userpsace, monitors application read requests, predicts which pages are likely to be read in the near future, and issues readahead system calls to load those pages into the system page cache, monitors its performance in time and space, and adjusts its operating parameters based on the results. We have evaluated the prototype on different SSDs, as well as SSD RAIDs, with a wide range of data intensive applications and benchmarks. The prototype achieves 65 70% prefetching accuracy and delivers average 20% speedups on replayed web search engine traces, BLAST, and TPC-H like benchmarks across various storage drives.