numam-spdk/README.md
Ben Walker add1515c86 Clarifications to README.md
* List the components in the development kit
* Mention the examples directory
* Add installation commands for dependencies

Change-Id: I31302b3cd2e5df4f24b8da30af66f9f1daa11eaa
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-03-11 10:08:16 -07:00

2.5 KiB

Storage Performance Development Kit

Build Status Gitter

SPDK Mailing List

SPDK on 01.org

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 by moving all of the necessary drivers into userspace and operating in a polled mode instead of relying on interrupts, which avoids kernel context switches and eliminates interrupt handling overhead.

The development kit currently includes:

  • NVMe driver
  • I/OAT (DMA engine) driver

Documentation

Doxygen API documentation is available, as well as a Porting Guide for porting SPDK to different frameworks and operating systems.

Many examples are available in the examples directory.

Changelog

Prerequisites

To build SPDK, some dependencies must be installed.

Fedora/CentOS:

sudo dnf install -y gcc libpciaccess-devel CUnit-devel libaio-devel

Ubuntu/Debian:

sudo apt-get install -y gcc libpciaccess-dev make libcunit1-dev libaio-dev

FreeBSD:

  • gcc
  • libpciaccess
  • gmake
  • cunit

Additionally, DPDK is required.

1) cd /path/to/spdk
2) wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz
3) tar xfz dpdk-2.2.0.tar.gz

Linux:

4) (cd dpdk-2.2.0 && make install T=x86_64-native-linuxapp-gcc DESTDIR=.)

FreeBSD:

4) (cd dpdk-2.2.0 && gmake install T=x86_64-native-bsdapp-clang DESTDIR=.)

Building

Once the prerequisites are installed, run 'make' within the SPDK directory to build the SPDK libraries and examples.

make DPDK_DIR=/path/to/dpdk

If you followed the instructions above for building DPDK:

Linux:

make DPDK_DIR=./dpdk-2.2.0/x86_64-native-linuxapp-gcc

FreeBSD:

gmake DPDK_DIR=./dpdk-2.2.0/x86_64-native-bsdapp-clang

Hugepages and Device Binding

Before running an SPDK application, some hugepages must be allocated and any NVMe and I/OAT devices must be unbound from the native kernel drivers. SPDK includes scripts to automate this process on both Linux and FreeBSD.

1) scripts/configure_hugepages.sh
2) scripts/setup.sh