7c2524b8eb
MD032 - Lists should be surrounded by blank lines Fixed all errors Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com> Change-Id: Idd18d38386c0150f5d68068a59717a34d4e1d991 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9142 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
88 lines
2.5 KiB
Markdown
88 lines
2.5 KiB
Markdown
# 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
|