Can SPDK Deliver High Performance NVMe on Windows?

Library Content Type:
Publish Date: 
Tuesday, September 28, 2021
Event Name: 
Event Track:

Yes, it really does say Windows and SPDK in the same sentence! The Storage Performance Development Kit (SPDK) is a well-regarded set of tools and libraries for writing high performance user mode storage applications on Linux and FreeBSD. However, in a typical Data Centre, a significant percentage of the servers will be running Microsoft Windows where the options for NVMe support are more limited. This talk looks at what is involved in making SPDK run natively on Windows. Starting with the creation of the Windows Platform Development Kit (WPDK) as a base, it covers the design options that were considered, the build environment, the trade offs and potential benefits. The current state is explained, together with examples of the changes that were required in both the SPDK and Data Plane Development Kit (DPDK). WPDK provides the POSIX functionality needed to run SPDK on Windows, implementing a set of headers and a lightweight library which map functionality as closely as possible to existing Windows semantics. It is intended to be a production quality layer that runs as native code, with no surprises, that can be tested independently. Although still at an experimental stage, the project has successfully served NVMe over TCP and iSCSI targets that are directly attached to physical NVMe disks. As a newcomer to open source development, there will also be a few personal reflections on the experience of gaining support from both the SPDK and DPDK communities to realise the vision.

  • An overview of the current state of NVMe support on Windows.
  • Design principles and challenges when porting storage software from Linux to Windows.
  • Lessons learnt collaborating with existing open source communities.
  • The potential benefits that can be achieved running SPDK on Windows.
  • How to get involved and contribute to the project.

Watch video: