---
name: "blkreplay"
section: "1"
platform: "linux"
package: "blkreplay"
version: "1.0-3.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/blkreplay"
---

# blkreplay(1)

block device testing and benchmarking tool

## NAME

blkreplay - block device testing and benchmarking tool

## SYNOPSIS

**blkreplay** \[*options*\] *device*

## DESCRIPTION

**blkreplay** is a utility driving the block layer of the operating system while measuring latency and throughput of I/O operations for later visualisation.

**blkreplay** can create artificial loads (random read-write sweeps, various kinds of overload tests) or replay natural loads which have been recorded by blktrace or a similar utility run at production servers.

**blkreplay** can be used to test physical hardware, to compare different brands of hard disks or RAID controllers, to evaluate the effect of SSD caching, to compare different block level transports like iSCSI vs Fibrechannel and so on.

**blkreplay** parses the load data from stdin. To create load data from **blktrace** output, use **conv\_blktrace\_to\_load.sh** script.

## OPTIONS

- Influence replay duration:

  - **--replay-start=***val*

    start offset (in seconds, 0=from\_start)

  - **--replay-end**=*val*

    end offset (in seconds, 0=unlimited)

  - **--replay-duration**=*val*

    alternatively specify the end offset as delta

  - **--replay-out**=*val*

    start offset, used for output (in seconds)

  - **--start-grace**=*val*

    start after grace period for filling the pipes (in seconds)

- Handling of conflicting I/O requests:

  - **--with-conflicts**

    conflicting writes are ALLOWED (damaged I/O)

  - **--with-drop**

    conflicting writes are simply dropped

  - **--with-partial**

    partial ordering by pushing back conflicts (default)

  - **--with-ordering**

    enforce total order in case of conflicts

  - **--strong**=*val*

    mode between 0 and 2, see docs (default=1)

- Replay parameters:

  - **--threads**=*val*

    parallelism (default=1024)

  - **--fill-random**=*val*

    fill data blocks with random bytes (%, default=0)

- Verification modes:

  - **--no-overhead**

    verify is OFF (default)

  - **--with-verify**

    verify on reads

  - **--with-final-verify**

    additional verify pass at the end

  - **--with-paranoia**

    re-read after each write (destroys performance)

- Convenience:

  - **--verbose**=*val*

    increase verbosity, show additional INFO: output

- Expert options (DANGEROUS):

  - **--o-direct**

    use O\_DIRECT (default)

  - **--no-o-direct**

    don't use O\_DIRECT, deliver FAKE results

  - **--o-sync**

    use O\_SYNC

  - **--no-o-sync**

    don't use O\_SYNC (default)

  - **--dry-run**

    don't actually do I/O, measure internal overhead

  - **--fake-io**

    omit **lseek()** and tags, even less internal overhead

  - **--simulate-io**=*val*

    delay value for I/O simulation (timespec *sec.nsec*)

  - **--ahead-limit**=*val*

    limit pipe fillahead (realtime *sec.nsec*)

  - **--fan-out**=*val*

    only for kernel hackers (default=4)

  - **--no-dispatcher**

    only for kernel hackers

  - **--bottleneck**=*val*

    max #requests on dispatch

  - **--speedup**=*val*

    speedup / slowdown by REAL factor (default=1.0)

  - **--mmap-mode**

    use **mmap()** instead of **read()** / **write()** \[NYI\]

## AUTHORS

**blkreplay** was written by Thomas Schoebel-Theuer. This manual page was created from **blkreplay** documentation by Andrew Shadura.

## COPYRIGHT

Copyright 2009-2012 Thomas Schoebel-Theuer

## SEE ALSO

[**blktrace**(8)](/blktrace/8.md)
