Mobile QR Code QR CODE
Title [SPECIAL ISSUE] Low-overhead Proportional-share I/O Scheduler in Multi-queue Block Layer for NVMe SSDs
Authors (Suho Son) ; (Gijun Oh) ; (Sungyong Ahn)
DOI https://doi.org/10.5573/JSTS.2020.20.6.491
Page pp.491-498
ISSN 1598-1657
Keywords NVMe SSDs; proportional-share I/O scheduler; multi-queue block layer; Linux; Cgroups
Abstract In the cloud computing where multiple isolated tenants share I/O resources, weight-based proportional I/O bandwidth sharing is a critical system requirement. However, existing I/O schedulers are not efficiently support proportional I/O bandwidth sharing for multi-queue storage device such as NVMe SSDs due to scalability problem. Especially, BFQ scheduler, default proportional I/O scheduler in Linux severely decreases the I/O performance of NVMe SSDs because of its serialized request dispatching process. In this paper, we present a low overhead proportional-share I/O scheduler for multi-queue block layer. The proposed I/O scheduler employs scalable request queue architecture and manages I/O bandwidth by distributing I/O tokens to multiple process groups(cgroups) in proportion to I/O weights. Moreover, the total amount of I/O tokens are dynamically adjusted to the fluctuated performance of NVMe SSDs due to internal operations of SSDs such as garbage collection and wear-leveling, so that the I/O performance of NVMe SSD is not wasted. Our I/O scheduler is implemented on Linux kernel 5.2.0 and evaluated with various benchmarks. The evaluation results show that our I/O scheduler improves I/O bandwidth 3.61 times than BFQ scheduler while sharing I/O bandwidth among multiple cgroups in proportion to I/O weights exactly. Also, our scheduler shows scalable performance close to Linux None scheduler even with extremely high degree of multiple threads.