1. Multi-Queue Fair Queuing
- Author
-
Hedayati, Mohammad, Scott, Michael L. (1959 - ), Shen, Kai, Marty, Mike, Hedayati, Mohammad, Scott, Michael L. (1959 - ), Shen, Kai, and Marty, Mike
- Abstract
Recent high-speed devices (network interfaces, external storage, computational accelerators) provide multiple access channels to allow concurrent I/O from mutually distrusting applications or virtual machines, enabling them to serve millions of ops/s. Unfortunately, it is difficult for the operating system to fairly partition bandwidth among resource principals (VMs, flows, etc.) without introducing synchronization overhead that would largely negate the benefits of multi-channel parallelism. Existing resource scheduling algorithms, which generally assume underlying serial operation, are also unsuitable to devices with a high degree of internal parallelism. To address these challenges, we present the first known fair, work- conserving scheduler for multi-channel I/O devices. Specifically, we (1) reformulate the classical notion of virtual time to accommodate parallel channels, and (2) describe a scalable implementation that bounds potential unfairness while minimizing synchronization overhead. Our implementation of multi-queue fair queueing (MQFQ) in the Linux 4.15 kernel demonstrates that it is possible to achieve both fairness and very high throughput. Evaluation with an NVMe over RDMA fabric (NVMf) device demonstrates MQFQ offers up to 20× more throughput and superior fairness compared to an existing Linux fairness algorithm (BFQ) -- a rate of up to 3.1 Million IOP/s on a single machine. Compared to running without a fairness algorithm, MQFQ reduces the slowdown caused by an antagonist from 3.78X to 1.33X for the FlashX workload and from 6.57X to 1.03X for the Aerospike workload.
- Published
- 2018