FLIN: Enabling Fairness and Enhancing Performance in Modern NVMe Solid State Drives
Proc. of the International Symposium on Computer Architecture (ISCA), Los Angeles, CA, June 2018.
Arash Tavakkol†, Mohammad Sadrosadati†, Saugata Ghose‡, Jeremie S. Kim‡†, Yixin Luo‡,
Yaohua Wang†§, Nika Mansouri Ghiasi†, Lois Orosa†*, Juan Gómez-Luna†, Onur Mutlu†‡
‡ Carnegie Mellon University
† ETH Zürich
Modern solid-state drives (SSDs) use new host–interface protocols, such as NVMe, to provide applications with fast access to storage. These new protocols make use of a concept known as the multi-queue SSD (MQ-SSD), where the SSD has direct access to the application-level I/O request queues. This removes most of the OS software stack that was used in older protocols to control how and when the I/O requests were dispatched to storage devices. Unfortunately, while the elimination of the OS software stack leads to a signicant performance improvement, we show in this paper that it introduces a new problem: unfairness. This is because the elimination of the OS software stack eliminates the mechanisms that were used to provide fairness among applications in older SSDs.
To study application-level unfairness, we perform experiments using four real state-of-the-art MQ-SSDs. We demonstrate that the lack of fair scheduling mechanisms leads to high unfairness among concurrently-executing applications due to the interference among them. For instance, when one of these applications issues many more I/O requests than others, the other applications are slowed down signicantly. We perform a comprehensive analysis of interference in real MQ-SSDs, and nd four major interference sources: (1) the intensity of requests sent by each application, (2) dierences in request access patterns, (3) the ratio of reads to writes, and (4) garbage collection.
To alleviate unfairness in MQ-SSDs, we propose the Flash- Level INterference-aware scheduler (FLIN). FLIN is a lightweight I/O request scheduling mechanism that provides fairness among requests from dierent applications. FLIN uses a three-stage scheduling algorithm that protects against all four major sources of interference, while respecting the application-level priorities assigned by the host. FLIN is implemented fully within the SSD controller rmware, requiring no new hardware, and has negligible (<0.06%) storage cost. Compared to a state-of-the-art I/O scheduler, FLIN improves the fairness and performance of a wide range of enterprise and datacenter storage workloads, with an average improvement of 70% and 47%, respectively.
FULL PAPER: pdf