Commit 8e5d5b8f authored by Vitaliy Mysak's avatar Vitaliy Mysak Committed by Tomasz Zawadzki
Browse files

doc: add bdevperf doc section



Describe bdevperf tool usage and its config file.

Change-Id: I3648e9fcf6eb9e332dadda0d73f52740a19d5ad8
Signed-off-by: default avatarVitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3602


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 7ef6d8dd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -803,6 +803,7 @@ INPUT += \
                         accel_fw.md \
                         applications.md \
                         bdev.md \
                         bdevperf.md \
                         bdev_module.md \
                         bdev_pg.md \
                         blob.md \

doc/bdevperf.md

0 → 100644
+86 −0
Original line number Diff line number Diff line
# Using bdevperf application {#bdevperf}

## Introduction

bdevperf is an SPDK application that is used for performance testing
of block devices (bdevs) exposed by the SPDK bdev layer.  It is an
alternative to the SPDK bdev fio plugin for benchmarking SPDK bdevs.
In some cases, bdevperf can provide much lower overhead than the fio
plugin, resulting in much better performance for tests using a limited
number of CPU cores.

bdevperf exposes command line interface that allows to specify
SPDK framework options as well as testing options.
Since SPDK 20.07, bdevperf supports configuration file that is similar
to FIO. It allows user to create jobs parameterized by
filename, cpumask, blocksize, queuesize, etc.

## Config file

Bdevperf's config file is similar to FIO's config file format.

Below is an example config file that uses all available parameters:

~~~{.ini}
[global]
filename=Malloc0:Malloc1
bs=1024
iosize=256
rw=randrw
rwmixread=90

[A]
cpumask=0xff

[B]
cpumask=[0-128]
filename=Malloc1

[global]
filename=Malloc0
rw=write

[C]
bs=4096
iosize=128
offset=1000000
length=1000000
~~~

Jobs `[A]` `[B]` or `[C]`, inherit default values from `[global]`
section residing above them. So in the example, job `[A]` inherits
`filename` value and uses both `Malloc0` and `Malloc1` bdevs as targets,
job `[B]` overrides its `filename` value and uses `Malloc1` and
job `[C]` inherits value `Malloc0` for its `filename`.

Interaction with CLI arguments is not the same as in FIO however.
If bdevperf receives CLI argument, it overrides values
of corresponding parameter for all `[global]` sections of config file.
So if example config is used, specifying `-q` argument
will make jobs `[A]` and `[B]` use its value.

Below is a full list of supported parameters with descriptions.

Param     | Default           | Description
--------- | ----------------- | -----------
filename  |                   | Bdevs to use, separated by ":"
cpumask   | Maximum available | CPU mask. Format is defined at @ref cpu_mask
bs        |                   | Block size (io size)
iodepth   |                   | Queue depth
rwmixread | `50`              | Percentage of a mixed workload that should be reads
offset    | `0`               | Start I/O at the provided offset on the bdev
length    | 100% of bdev size | End I/O at `offset`+`length` on the bdev
rw        |                   | Type of I/O pattern

Available rw types:
- read
- randread
- write
- randwrite
- verify
- reset
- unmap
- write_zeroes
- flush
- rw
- randrw
+1 −0
Original line number Diff line number Diff line
@@ -2,3 +2,4 @@

- @subpage spdkcli
- @subpage nvme-cli
- @subpage bdevperf