The Storage Performance Development Kit (SPDK) provides a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It achieves high performance through the use of a number of key techniques:
- Moving all of the necessary drivers into userspace, which avoids syscalls and enables zero-copy access from the application.
- Polling hardware for completions instead of relying on interrupts, which lowers both total latency and latency variance.
- Avoiding all locks in the I/O path, instead relying on message passing.
The goal of SPDK is to work in an open-source community to create software components that maximize the efficiency and performance of storage technologies on commodity hardware. SPDK has demonstrated that millions of I/Os per second are easily attainable using a few processor cores and a few NVMe drives – no additional offload hardware needed. The code is available directly through the SPDK GitHub page under a permissive BSD license.