fio_plugin: Update to 2.21, SPDK configure script
Documentation update - the plugin just works with 2.21 with no changes. Change-Id: If1fb2367a00065bfb5627d0d2af9683e5c909dc1 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/367734 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
76e5900d50
commit
7347136f8b
@ -1,54 +1,67 @@
|
|||||||
Compiling
|
# Compiling fio
|
||||||
----------
|
|
||||||
|
|
||||||
First, clone the fio source repository from https://github.com/axboe/fio
|
First, clone the fio source repository from https://github.com/axboe/fio
|
||||||
|
|
||||||
git clone https://github.com/axboe/fio
|
git clone https://github.com/axboe/fio
|
||||||
|
|
||||||
Then check out the fio 2.18 tag
|
Then check out the fio 2.21:
|
||||||
|
|
||||||
cd fio && git checkout fio-2.18
|
cd fio && git checkout fio-2.21
|
||||||
|
|
||||||
Finally, compile the code with
|
Finally, compile the code:
|
||||||
|
|
||||||
./configure && make
|
make
|
||||||
|
|
||||||
Next, edit the CONFIG file located in the root of the SPDK repository and set CONFIG_FIO_PLUGIN
|
# Compiling SPDK
|
||||||
to y and FIO_SOURCE_DIR to the location of the fio repository that was just created.
|
|
||||||
|
|
||||||
Further, you'll need to build DPDK with -fPIC set. You can do this by modifying your
|
First, clone the SPDK source repository from https://github.com/spdk/spdk
|
||||||
DPDK config file (i.e. config/defconfig_x86_64-native-linuxapp-gcc) to include the line
|
|
||||||
|
git clone https://github.com/spdk/spdk
|
||||||
|
git submodule update --init
|
||||||
|
|
||||||
|
Then, run the SPDK configure script to enable fio (point it to the root of the fio repository):
|
||||||
|
|
||||||
|
cd spdk
|
||||||
|
./configure --with-fio=/path/to/fio/repo <other configuration options>
|
||||||
|
|
||||||
|
Finally, build SPDK:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
**Note to advanced users**: These steps assume you're using the DPDK submodule. If you are using your
|
||||||
|
own version of DPDK, the fio plugin requires that DPDK be compiled with -fPIC. You can compile DPDK
|
||||||
|
with -fPIC by modifying your DPDK configuration file and adding the line:
|
||||||
|
|
||||||
EXTRA_CFLAGS=-fPIC
|
EXTRA_CFLAGS=-fPIC
|
||||||
|
|
||||||
At this point, build SPDK as per normal. The fio plugin will be placed in the same directory
|
# Usage
|
||||||
as this README.
|
|
||||||
|
|
||||||
Usage
|
|
||||||
------
|
|
||||||
|
|
||||||
To use the SPDK fio plugin with fio, specify the plugin binary using LD_PRELOAD when running
|
To use the SPDK fio plugin with fio, specify the plugin binary using LD_PRELOAD when running
|
||||||
fio and set ioengine=spdk in the fio configuration file (see example_config.fio in the same
|
fio and set ioengine=spdk in the fio configuration file (see example_config.fio in the same
|
||||||
directory as this README).
|
directory as this README).
|
||||||
|
|
||||||
LD_PRELOAD=<path to fio_plugin binary> fio
|
LD_PRELOAD=<path to spdk repo>/examples/nvme/fio_plugin/fio_plugin fio
|
||||||
|
|
||||||
To select NVMe devices, you simply pass an identifier as the filename in the format
|
To select NVMe devices, you pass an SPDK Transport Identifier string as the filename. These are in the
|
||||||
|
form:
|
||||||
|
|
||||||
filename=key=value [key=value] ... ns=value
|
filename=key=value [key=value] ... ns=value
|
||||||
|
|
||||||
Do not have any ':' in filename, otherwise it will be spilt into several file names. Also the
|
Specifically, for local PCIe NVMe devices it will look like this:
|
||||||
NVMe namespaces start at 1, not 0! The namespace must also be specified at the end.
|
|
||||||
|
|
||||||
Local PCIe NVMe devices will be specified using a PCI domain.bus.slot.func traddr format. For example:
|
|
||||||
|
|
||||||
filename=trtype=PCIe traddr=0000.04.00.0 ns=1
|
filename=trtype=PCIe traddr=0000.04.00.0 ns=1
|
||||||
|
|
||||||
Remote devices accessed via NVMe over Fabrics will be specified based on the following example:
|
And remote devices accessed via NVMe over Fabrics will look like this:
|
||||||
|
|
||||||
filename=trtype=RDMA adrfam=IPv4 traddr=192.168.100.8 trsvcid=4420 ns=1
|
filename=trtype=RDMA adrfam=IPv4 traddr=192.168.100.8 trsvcid=4420 ns=1
|
||||||
|
|
||||||
Currently the SPDK fio plugin is limited to thread usage model, so fio jobs must also specify thread=1
|
|
||||||
|
**Note**: The specification of the PCIe address should not use the normal ':'
|
||||||
|
and instead only use '.'. This is a limitation in fio - it splits filenames on
|
||||||
|
':'. Also, the NVMe namespaces start at 1, not 0, and the namespace must be
|
||||||
|
specified at the end of the string.
|
||||||
|
|
||||||
|
Currently the SPDK fio plugin is limited to the thread usage model, so fio jobs must also specify thread=1
|
||||||
when using the SPDK fio plugin.
|
when using the SPDK fio plugin.
|
||||||
|
|
||||||
fio also currently has a race condition on shutdown if dynamically loading the ioengine by specifying the
|
fio also currently has a race condition on shutdown if dynamically loading the ioengine by specifying the
|
||||||
|
Loading…
Reference in New Issue
Block a user