xref: /spdk/doc/bdevperf.md (revision 7adbcfb20cd19b8e00dfd7d19578976ef5290910)
1*13fa72c6SJim Harris# bdevperf {#bdevperf}
28e5d5b8fSVitaliy Mysak
38e5d5b8fSVitaliy Mysak## Introduction
48e5d5b8fSVitaliy Mysak
5*13fa72c6SJim Harrisbdevperf is an SPDK application used for performance testing
68e5d5b8fSVitaliy Mysakof block devices (bdevs) exposed by the SPDK bdev layer.  It is an
78e5d5b8fSVitaliy Mysakalternative to the SPDK bdev fio plugin for benchmarking SPDK bdevs.
8*13fa72c6SJim HarrisIn some cases, bdevperf can provide lower overhead than the fio
9*13fa72c6SJim Harrisplugin, resulting in better performance and efficiency for tests
10*13fa72c6SJim Harrisusing a limited number of CPU cores.
118e5d5b8fSVitaliy Mysak
128e5d5b8fSVitaliy Mysakbdevperf exposes command line interface that allows to specify
138e5d5b8fSVitaliy MysakSPDK framework options as well as testing options.
14*13fa72c6SJim Harrisbdevperf also supports a configuration file format similar
158e5d5b8fSVitaliy Mysakto FIO. It allows user to create jobs parameterized by
168e5d5b8fSVitaliy Mysakfilename, cpumask, blocksize, queuesize, etc.
178e5d5b8fSVitaliy Mysak
188e5d5b8fSVitaliy Mysak## Config file
198e5d5b8fSVitaliy Mysak
20*13fa72c6SJim Harrisbdevperf's config file format is similar to FIO.
218e5d5b8fSVitaliy Mysak
228e5d5b8fSVitaliy MysakBelow is an example config file that uses all available parameters:
238e5d5b8fSVitaliy Mysak
248e5d5b8fSVitaliy Mysak~~~{.ini}
258e5d5b8fSVitaliy Mysak[global]
268e5d5b8fSVitaliy Mysakfilename=Malloc0:Malloc1
278e5d5b8fSVitaliy Mysakbs=1024
288e5d5b8fSVitaliy Mysakrw=randrw
298e5d5b8fSVitaliy Mysakrwmixread=90
308e5d5b8fSVitaliy Mysak
318e5d5b8fSVitaliy Mysak[A]
328e5d5b8fSVitaliy Mysakcpumask=0xff
338e5d5b8fSVitaliy Mysak
348e5d5b8fSVitaliy Mysak[B]
358e5d5b8fSVitaliy Mysakcpumask=[0-128]
368e5d5b8fSVitaliy Mysakfilename=Malloc1
378e5d5b8fSVitaliy Mysak
388e5d5b8fSVitaliy Mysak[global]
398e5d5b8fSVitaliy Mysakfilename=Malloc0
408e5d5b8fSVitaliy Mysakrw=write
418e5d5b8fSVitaliy Mysak
428e5d5b8fSVitaliy Mysak[C]
438e5d5b8fSVitaliy Mysakbs=4096
448e5d5b8fSVitaliy Mysakoffset=1000000
458e5d5b8fSVitaliy Mysaklength=1000000
468e5d5b8fSVitaliy Mysak~~~
478e5d5b8fSVitaliy Mysak
488e5d5b8fSVitaliy MysakJobs `[A]` `[B]` or `[C]`, inherit default values from `[global]`
498e5d5b8fSVitaliy Mysaksection residing above them. So in the example, job `[A]` inherits
508e5d5b8fSVitaliy Mysak`filename` value and uses both `Malloc0` and `Malloc1` bdevs as targets,
518e5d5b8fSVitaliy Mysakjob `[B]` overrides its `filename` value and uses `Malloc1` and
528e5d5b8fSVitaliy Mysakjob `[C]` inherits value `Malloc0` for its `filename`.
538e5d5b8fSVitaliy Mysak
548e5d5b8fSVitaliy MysakInteraction with CLI arguments is not the same as in FIO however.
558e5d5b8fSVitaliy MysakIf bdevperf receives CLI argument, it overrides values
568e5d5b8fSVitaliy Mysakof corresponding parameter for all `[global]` sections of config file.
578e5d5b8fSVitaliy MysakSo if example config is used, specifying `-q` argument
588e5d5b8fSVitaliy Mysakwill make jobs `[A]` and `[B]` use its value.
598e5d5b8fSVitaliy Mysak
608e5d5b8fSVitaliy MysakBelow is a full list of supported parameters with descriptions.
618e5d5b8fSVitaliy Mysak
628e5d5b8fSVitaliy MysakParam     | Default           | Description
638e5d5b8fSVitaliy Mysak--------- | ----------------- | -----------
648e5d5b8fSVitaliy Mysakfilename  |                   | Bdevs to use, separated by ":"
658e5d5b8fSVitaliy Mysakcpumask   | Maximum available | CPU mask. Format is defined at @ref cpu_mask
668e5d5b8fSVitaliy Mysakbs        |                   | Block size (io size)
678e5d5b8fSVitaliy Mysakiodepth   |                   | Queue depth
688e5d5b8fSVitaliy Mysakrwmixread | `50`              | Percentage of a mixed workload that should be reads
698e5d5b8fSVitaliy Mysakoffset    | `0`               | Start I/O at the provided offset on the bdev
708e5d5b8fSVitaliy Mysaklength    | 100% of bdev size | End I/O at `offset`+`length` on the bdev
718e5d5b8fSVitaliy Mysakrw        |                   | Type of I/O pattern
728e5d5b8fSVitaliy Mysak
738e5d5b8fSVitaliy MysakAvailable rw types:
747c2524b8SMaciej Wawryk
758e5d5b8fSVitaliy Mysak- read
768e5d5b8fSVitaliy Mysak- randread
778e5d5b8fSVitaliy Mysak- write
788e5d5b8fSVitaliy Mysak- randwrite
798e5d5b8fSVitaliy Mysak- verify
808e5d5b8fSVitaliy Mysak- reset
818e5d5b8fSVitaliy Mysak- unmap
828e5d5b8fSVitaliy Mysak- write_zeroes
838e5d5b8fSVitaliy Mysak- flush
848e5d5b8fSVitaliy Mysak- rw
858e5d5b8fSVitaliy Mysak- randrw
86