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 bedrock of SPDK is a user space, polled-mode, asynchronous, lockless NVMe driver. This provides zero-copy, highly parallel access directly to an SSD from a user space application. The driver is written as a C library with a single public header.

SPDK further provides a full block stack as a user space library that performs many of the same operations as a block stack in an operating system. This includes unifying the interface between disparate storage devices, queueing to handle conditions such as out of memory or I/O hangs, and logical volume management.

Finally, SPDK provides NVMe-oF, iSCSI, and vhost servers built on top of these components that are capable of serving disks over the network or to other processes. The standard Linux kernel initiators for NVMe-oF and iSCSI interoperate with these targets, as well as QEMU with vhost. These servers can be up to an order of magnitude more CPU efficient than other implementations. These targets can be used as examples of how to implement a high performance storage target, or used as the basis for production deployments.

Register Now for the 2018 US SPDK Summit

Apr 20, 2018 • Anu Rao and Daniel Verkamp

Interested in learning more about SPDK? Want to learn how it can help accelerate your storage solutions? Attend the SPDK summit and discover the SPDK experience. New to SPDK? No worries, we have various sessions on the agenda that introduce you to the project. There is also a hands on lab where you learn as you code. Already an avid SPDK developer or user? Great! Participate in our developer’s meetup to brainstorm and share ideas to improve the project as well as discuss new features, concepts and BKMs. The event kicks off with a key note from the Intel® Corporation Data Center Group Vice President, Jennifer Huffstetler. The agenda continues with an awesome line up which includes talks from various SPDK community members (Alibaba, eBay, Oracle, Cisco, Nutanix) who are eager to share their experience, learning, challenges and benefits with SPDK. SPDK developers will present new content on various SPDK features highlighting their use cases and benefits. You will also get to see SPDK in action with live demos and the hands-on lab.

Continue...

Announcing The US SPDK Summit!

Apr 4, 2018 • Anu Rao

Save The Date

2018 Storage Performance Development Kit (SPDK) Summit
May 15th -16th
Dolce Hayes Mansion, San Jose
200 Edenvale Ave, San Jose, CA 95136
http://www.hayesmansion.com

Continue...

SPDK Test Script Hierarchy

Mar 15, 2018 • Seth Howell

As the SPDK code base has been growing, so has the collection of test scripts used by the automated build pool to perform continuous integration testing. The SPDK test bed is comprised of a hierarchy of bash scripts which make calls to example applications (located under spdk/examples) and tools written for testing (located under spdk/test). By running these test scripts and aggregating the results, the SPDK automated test pool helps contributors identify code errors or continuous integration issues introduced by their patches.

Continue...