SPDK v21.10: DMA lib, Async NVMe driver, Container scripts

On behalf of the SPDK community I’m pleased to announce the release of SPDK 21.10!!

This release contains the following new features:

  • DMA library: Added DMA library providing the necessary infrastructure for handling systems and devices with multiple memory domains to perform DMA transfers between them.
  • Fully asynchronous NVMe driver: Removed NVMe driver inline polling during controller initialization and reset. This enables use of SPDK in cluster solutions.
  • SPDK container scripts: Added set of scripts to serve as an example of how SPDK can be encapsulated into docker container images. Please see spdk/docker/README.md for details.
  • Scheduler API and improvements: API for implementing schedulers and governors plugins has been made public. Please see include/spdk/scheduler.h for details. Additionally improved dynamic_scheduler by favoring performance over power saving for cases with multiple threads with low activity.
  • Trace parser library: Added trace parser library that parse traces recorded by an SPDK application. It includes merging traces from multiple cores, sorting them by their timestamp and constructing trace entries spanning across multiple buffers.
  • IDXD perf tool: Added a standalone tool for measuring IDXD performance.

The full changelog for this release is available here.

New Contributors

This release contains 619 commits from 47 authors with over 38k lines of code changed.

We’d especially like to recognize all of our first time contributors:

  • Andreas Economides
  • Denis Nagorny
  • Liu Qing
  • Sydney Vanda
  • Tan Long
  • Tomasz Bielecki
  • Tomasz Rochumski
  • Xin Huang
  • Zhao Shushu

Thanks to everyone for your contributions, participation, and effort!