How fast is fast storage under Linux?
In many important situations, the Linux kernel must provide bandwidth and latency guarantees in the access to storage. Examples range from guaranteeing a high responsiveness in a system doing intense I/O, to supporting at least the minimum quality of service required by cloud storage or by WEB and video-streaming services. The common solution used in Linux to provide these service guarantees is I/O throttling, especially with modern, fast SSDs. But, as surprising as it may seem, throttling throws away much, or even most of the available storage speed, except for in very simple scenarios. In this presentation we show this problem with both demos and graphs. On the bright side, we also show how, by just using the BFQ I/O scheduler instead of throttling, the Linux kernel can now reach a high I/O throughput while enforcing these service guarantees. Yet, there are still scenarios where BFQ fails to reach a high throughput too. In this respect, we finish this presentation by presenting our results with a BFQ improvement (still in prototype phase) that boosts throughput even in the toughest scenarios.
Assistant Professor of Computer Science
University of Modena and Reggio Emilia
Paolo Valente is an Assistant Professor of Computer Science at the University of Modena and Reggio Emilia, Italy, and a collaborator of the Linaro engineering organization. Paolo's main activities focus on scheduling algorithms for storage devices, transmission links and CPUs. In this respect, Paolo is the author of the last version of the BFQ I/O scheduler. BFQ entered the Linux kernel from 4.12, providing unprecedented low-latency and fairness guarantees. As for transmission links, Paolo is one of the authors of the QFQ packet scheduler, which has been in the Linux kernel until 3.7, after that it has been replaced by QFQ+, a faster variant defined and implemented by Paolo himself. Finally, Paolo has also defined and implemented other algorithms, part of which are now in FreeBSD, and has provided new theoretic results on multiprocessor scheduling.