Spdk/examples/nvme/fio_plugin/README.md
Chun Liu 8314b54996 nvme/fio_plugin: fix compliation with recent FIO
Fixes compilation after fio commit
565e784df05c2529479eed8a38701a33b01894bd ("Don't malloc/memcpy
ioengine_ops on td initialization").

Change-Id: Id7138e774e523af3a27ac24e08b8ccd05a3ed77a
2017-02-07 15:42:36 -07:00

47 lines
1.5 KiB
Markdown

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.17 tag
cd fio && git checkout fio-2.17
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.