diff options
Diffstat (limited to 'src/spdk/doc/getting_started.md')
-rw-r--r-- | src/spdk/doc/getting_started.md | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/spdk/doc/getting_started.md b/src/spdk/doc/getting_started.md new file mode 100644 index 000000000..7dadaae20 --- /dev/null +++ b/src/spdk/doc/getting_started.md @@ -0,0 +1,117 @@ +# Getting Started {#getting_started} + +# Getting the Source Code {#getting_started_source} + +~~~{.sh} +git clone https://github.com/spdk/spdk +cd spdk +git submodule update --init +~~~ + +# Installing Prerequisites {#getting_started_prerequisites} + +The `scripts/pkgdep.sh` script will automatically install the bare minimum +dependencies required to build SPDK. +Use `--help` to see information on installing dependencies for optional components. + +~~~{.sh} +sudo scripts/pkgdep.sh +~~~ + +Option --all will install all dependencies needed by SPDK features. + +~~~{.sh} +sudo scripts/pkgdep.sh --all +~~~ + +# Building {#getting_started_building} + +Linux: + +~~~{.sh} +./configure +make +~~~ + +FreeBSD: +Note: Make sure you have the matching kernel source in /usr/src/ + +~~~{.sh} +./configure +gmake +~~~ + +There are a number of options available for the configure script, which can +be viewed by running + +~~~{.sh} +./configure --help +~~~ + +Note that not all features are enabled by default. For example, RDMA +support (and hence NVMe over Fabrics) is not enabled by default. You +can enable it by doing the following: + +~~~{.sh} +./configure --with-rdma +make +~~~ + +# Running the Unit Tests {#getting_started_unittests} + +It's always a good idea to confirm your build worked by running the +unit tests. + +~~~{.sh} +./test/unit/unittest.sh +~~~ + +You will see several error messages when running the unit tests, but they are +part of the test suite. The final message at the end of the script indicates +success or failure. + +# Running the Example Applications {#getting_started_examples} + +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 a script to automate this process on both Linux and FreeBSD. +This script should be run as root. It only needs to be run once on the +system. + +~~~{.sh} +sudo scripts/setup.sh +~~~ + +To rebind devices back to the kernel, you can run + +~~~{.sh} +sudo scripts/setup.sh reset +~~~ + +By default, the script allocates 2048MB of hugepages. To change this number, +specify HUGEMEM (in MB) as follows: + +~~~{.sh} +sudo HUGEMEM=4096 scripts/setup.sh +~~~ + +On Linux machines HUGEMEM will be rounded up to system-default huge page +size boundary. + +All available params can be viewed by running + +~~~{.sh} +scripts/setup.sh help +~~~ + +Example code is located in the examples directory. The examples are compiled +automatically as part of the build process. Simply call any of the examples +with no arguments to see the help output. If your system has its IOMMU +enabled you can run the examples as your regular user. If it doesn't, you'll +need to run as a privileged user (root). + +A good example to start with is `build/examples/identify`, which prints +out information about all of the NVMe devices on your system. + +Larger, more fully functional applications are available in the `app` +directory. This includes the iSCSI and NVMe-oF target. |