Litcius/Paper detail

Understanding modern storage APIs

Diego Didona, Jonas Pfefferle, Nikolas Ioannou, Bernard Metzler, Animesh Trivedi

202237 citationsDOIOpen Access PDF

Abstract

Recent high-performance storage devices have exposed software inefficiencies in existing storage stacks, leading to a new breed of I/O stacks. The newest storage API of the Linux kernel is io_uring. We perform one of the first in-depth studies of io_uring, and compare its performance and dis-/advantages with the established libaio and SPDK APIs. Our key findings reveal that (i) polling design significantly impacts performance; (ii) with enough CPU cores io_uring can deliver performance close to that of SPDK; and (iii) performance scalability over multiple CPU cores and devices requires careful consideration and necessitates a hybrid approach. Last, we provide design guidelines for developers of storage intensive applications.

Topics & Concepts

Computer scienceScalabilityOperating systemEmbedded systemKey (lock)PollingSoftwareKernel (algebra)Multi-core processorCombinatoricsMathematicsAdvanced Data Storage TechnologiesParallel Computing and Optimization TechniquesCloud Computing and Resource Management