numam-spdk/doc/bdevperf.md
Maciej Wawryk 7c2524b8eb markdownlint: enable rule MD032
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>
2021-08-26 19:27:22 +00:00

2.5 KiB

Using bdevperf application

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:

[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