SPDK: A Development Kit to Build High Performance Storage Applications
Citations Over TimeTop 10% of 2017 papers
Abstract
There is strong demand on building high performance storage service upon emerging fast storage devices (e.g., NVMe SSDs). Unfortunately, current storage software stack cannot satisfy such requirements and the software overhead becomes a major bottleneck for developing high performance storage applications. According to our performance profiling results, most storage software overhead is caused by kernel I/O stacks due to context switch, data copy, interrupt, resource synchronization and etc. To address these issues, we provide SPDK (storage performance development kit), a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It achieves high performance by moving the necessary drivers into user space and operating them in a polled mode instead of interrupt mode, which eliminates kernel context switch and interrupt handling overhead and also provides lockless resource access. Integrated with SPDK, performance competitive storage applications can be build upon those fast storage devices. In our experiments, the per cpu core IOPS of NVMe device driver in SPDK is about 6X to 10X better than the kernel NVMe driver. Some storage applications are also developed upon SPDK's framework and obtain much better per-core performance compared with the existing solutions. For example, SPDK NVMe over fabrics (NVMe-oF) target is 10X more efficient than Linux Kernel NVMe-oF target solution.
Related Papers
- → Preventing interrupt overload(2005)13 cited
- Research on Real-time Linux and Implementation of Interrupt in Process(2007)
- The Analysis of Real-time Capabilities Based on Embedded Linux(2007)
- Study on Improving Real Time Performance of Linux Embedded System(2003)
- Study of Improved Methods for Linux System Real-time Capabilities by Tasked Interrupt Hangdling(2007)