fcb00f3780
spdk_nvme_probe() will now provide a struct spdk_nvme_probe_info to the probe and attach callbacks in place of the PCI device pointer. This struct contains the useful information that could be retrieved from the PCI device during probe. The goal of this change is to allow expansion of the probe information in the future when other transports (specifically, NVMe over Fabrics) are added that do not necessarily use PCI addressing or device IDs. Change-Id: I59a2a9e874e248ce5fa1d7f4b57c8056962ff3cd Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> |
||
---|---|---|
.. | ||
.gitignore | ||
example_config.fio | ||
fio_plugin.c | ||
Makefile | ||
README.md |
Compiling
First, clone the fio source repository from http://github.com/axboe/fio
git clone http://github.com/axboe/fio
Then check out the fio 2.8 tag
cd fio && git checkout fio-2.8
Finally, compile the code with
./configure && make
Next, edit the CONFIG file located in the root of the SPDK repository and set CONFIG_FIO_PLUGIN 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 DPDK config file (i.e. config/defconfig_x86_64-native-linuxapp-gcc) to include the line
EXTRA_CFLAGS=-fPIC
At this point, build SPDK as per normal. The fio plugin will be placed in the same directory as this README.
Usage
To use the SPDK fio plugin with fio, simply set the following in the fio configuration file (see example_config.fio in the same directory as this README).
ioengine=<path to fio_plugin binary>
To select NVMe devices, you simply pass an identifier as the filename in the format
domain.bus.slot.func/namespace
Remember that NVMe namespaces start at 1, not 0! Also, the notation uses '.' throughout, not ':'. For example - 0000.04.00.0/1.
Currently the fio_plugin is limited to a single thread, so only one job is supported.
When testing random workloads, it is recommended to set norandommap=1. fio's random map processing consumes extra CPU cycles which will degrade performance over time with the fio_plugin since all I/O are submitted and completed on a single CPU core.