Enabling NVMe WRR support in Linux Block Layer


Kanchan Joshi, Kaushal Yadav, and Praval Choudhary, Samsung Semiconductors India R&D, India


There is need of differentiated I/O service when applications with diverse performance-needs share a storage-device. NVMe specification provides a method called Weighted-Round-Robin-with-urgent-priority (WRR) which can help in providing such differentiated I/O service. In Round-Robin arbitration all I/O queues are treated to be of equal priority, leading to symmetric I/O processing. While in WRR arbitration, queues can be marked urgent, high, medium or low, with provision for different weightage for each category. Onus is on host to associate priority with I/O queues and define weights.

We find that very little has been done in current Linux ecosystem when it comes to supporting WRR and making benefits reach to application. In this paper we pro-pose a method that introduces WRR support in Linux NVMe driver. This method delivers WRR capability to applications without the need of rebuilding them. Un-like affinity-based approach, it does not limit compute-ability of application. Our results demonstrate that modified driver indeed provides differentiated I/O performance among applications. Proposed work modifies only NVMe driver and is generic enough to be included in mainstream Linux kernel for supporting WRR.

Open Access Media

USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone. Support USENIX and our commitment to Open Access.

@inproceedings {203362,
author = {Kanchan Joshi and Kaushal Yadav and Praval Choudhary},
title = {Enabling {NVMe} {WRR} support in Linux Block Layer},
booktitle = {9th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage 17)},
year = {2017},
address = {Santa Clara, CA},
url = {https://www.usenix.org/conference/hotstorage17/program/presentation/joshi},
publisher = {USENIX Association},
month = jul