2015-09-21 18:31:01 +00:00
|
|
|
Storage Performance Development Kit
|
|
|
|
===================================
|
|
|
|
|
2015-11-04 21:18:02 +00:00
|
|
|
[![Build Status](https://travis-ci.org/spdk/spdk.svg?branch=master)](https://travis-ci.org/spdk/spdk)
|
2016-02-26 20:48:32 +00:00
|
|
|
[![Gitter](https://img.shields.io/gitter/room/spdk/spdk.svg)](https://gitter.im/spdk/spdk)
|
2015-11-04 21:18:02 +00:00
|
|
|
|
2016-02-26 22:50:59 +00:00
|
|
|
[SPDK Mailing List](https://lists.01.org/mailman/listinfo/spdk)
|
|
|
|
|
2015-09-21 21:11:31 +00:00
|
|
|
[SPDK on 01.org](https://01.org/spdk)
|
2015-09-21 18:31:01 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2015-11-04 21:59:37 +00:00
|
|
|
Documentation
|
|
|
|
=============
|
|
|
|
|
|
|
|
[Doxygen API documentation](https://spdk.github.io/spdk/doc/)
|
|
|
|
|
2015-09-25 21:31:26 +00:00
|
|
|
[Porting Guide](PORTING.md)
|
|
|
|
|
2015-09-21 18:31:01 +00:00
|
|
|
Prerequisites
|
|
|
|
=============
|
|
|
|
|
|
|
|
To build SPDK, some dependencies must be installed.
|
|
|
|
|
|
|
|
Fedora/CentOS:
|
|
|
|
|
|
|
|
- gcc
|
|
|
|
- libpciaccess-devel
|
|
|
|
- CUnit-devel
|
2016-01-21 17:47:55 +00:00
|
|
|
- libaio-devel
|
2015-09-21 18:31:01 +00:00
|
|
|
|
|
|
|
Ubuntu/Debian:
|
|
|
|
|
|
|
|
- gcc
|
|
|
|
- libpciaccess-dev
|
|
|
|
- make
|
|
|
|
- libcunit1-dev
|
2016-01-21 17:47:55 +00:00
|
|
|
- libaio-dev
|
2015-09-21 18:31:01 +00:00
|
|
|
|
2015-09-25 16:13:05 +00:00
|
|
|
FreeBSD:
|
|
|
|
|
|
|
|
- gcc
|
|
|
|
- libpciaccess
|
|
|
|
- gmake
|
|
|
|
- cunit
|
|
|
|
|
2015-09-24 16:59:56 +00:00
|
|
|
Additionally, [DPDK](http://dpdk.org/doc/quick-start) is required.
|
|
|
|
|
|
|
|
1) cd /path/to/spdk
|
2016-01-05 20:18:04 +00:00
|
|
|
2) wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz
|
|
|
|
3) tar xfz dpdk-2.2.0.tar.gz
|
2015-09-25 16:13:05 +00:00
|
|
|
|
|
|
|
Linux:
|
|
|
|
|
2016-02-18 23:03:30 +00:00
|
|
|
4) (cd dpdk-2.2.0 && make install T=x86_64-native-linuxapp-gcc DESTDIR=.)
|
2015-09-21 18:31:01 +00:00
|
|
|
|
2015-09-25 16:13:05 +00:00
|
|
|
FreeBSD:
|
|
|
|
|
2016-02-18 23:03:30 +00:00
|
|
|
4) (cd dpdk-2.2.0 && gmake install T=x86_64-native-bsdapp-clang DESTDIR=.)
|
2015-09-25 16:13:05 +00:00
|
|
|
|
2015-09-21 18:31:01 +00:00
|
|
|
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
|
2015-09-24 16:59:56 +00:00
|
|
|
|
|
|
|
If you followed the instructions above for building DPDK:
|
|
|
|
|
2015-09-25 16:13:05 +00:00
|
|
|
Linux:
|
|
|
|
|
2016-01-05 20:18:04 +00:00
|
|
|
make DPDK_DIR=./dpdk-2.2.0/x86_64-native-linuxapp-gcc
|
2015-09-25 16:13:05 +00:00
|
|
|
|
|
|
|
FreeBSD:
|
|
|
|
|
2016-01-05 20:18:04 +00:00
|
|
|
gmake DPDK_DIR=./dpdk-2.2.0/x86_64-native-bsdapp-clang
|
2015-09-25 16:13:05 +00:00
|
|
|
|
|
|
|
Hugepages and Device Binding
|
|
|
|
============================
|
|
|
|
|
|
|
|
Before running an SPDK application, some hugepages must be allocated and
|
2015-12-03 21:30:38 +00:00
|
|
|
any NVMe and I/OAT devices must be unbound from the native kernel drivers.
|
2015-09-25 16:13:05 +00:00
|
|
|
SPDK includes scripts to automate this process on both Linux and FreeBSD.
|
|
|
|
|
|
|
|
1) scripts/configure_hugepages.sh
|
2016-02-19 21:11:08 +00:00
|
|
|
2) scripts/setup.sh
|