---
name: "zpios"
section: "1"
platform: "linux"
package: "zfs-test"
version: "0.7.12-2+deb10u2"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/zpios"
---

# zpios(1)

Directly test the DMU.

## NAME

zpios - Directly test the DMU.

## SYNOPSIS

**zpios \[options\] \<-p** *pool***\>**

## DESCRIPTION

This utility runs in-kernel DMU performance and stress tests that do not depend on the ZFS Posix Layer ("ZPL").

## OPTIONS

**-t** *regex***, --threadcount** *regex*

-

  Start this many threads for each test series, specified as a comma delimited regular expression. (eg: "-t 1,2,3")

-

  This option is mutually exclusive with the **threadcount\_\*** options.

**-l** *regex\_low***, --threadcount\_low** *regex\_low*

**-h** *regex\_high***, --threadcount\_high** *regex\_high*

**-e** *regex\_incr***, --threadcount\_incr** *regex\_incr*

-

  Start *regex\_low* threads for the first test, add *regex\_incr* threads for each subsequent test, and start *regex\_high* threads for the last test.

-

  These three options must be specified together and are mutually exclusive with the **threadcount** option.

**-n** *regex***, --regioncount** *regex*

-

  Create this many regions for each test series, specified as a comma delimited regular expression. (eg: "-n 512,4096,65536")

-

  This option is mutually exclusive with the **regioncount\_\*** options.

**-i** *regex\_low***, --regioncount\_low** *regex\_low*

**-j** *regex\_high***, --regioncount\_high** *regex\_high*

**-k** *regex\_incr***, --regioncount\_incr** *regex\_incr*

-

  Create *regex\_low* regions for the first test, add *regex\_incr* regions for each subsequent test, and create *regex\_high* regions for the last test.

-

  These three options must be specified together and are mutually exclusive with the **regioncount** option.

**-o** *size***, --offset** *size*

-

  Create regions at *size* offset for each test series, specified as a comma delimited regular expression with an optional unit suffix. (eg: "-o 4M" means four megabytes.)

-

  This option is mutually exclusive with the **offset\_\*** options.

**-m** *size\_low***, --offset\_low** *size\_low*

**-q** *size\_high***, --offset\_high** *size\_high*

**-r** *size\_incr***, --offset\_incr** *size\_incr*

-

  Create a region at *size\_low* offset for the first test, add *size\_incr* to the offset for each subsequent test, and create a region at *size\_high* offset for the last test.

-

  These three options must be specified together and are mutually exclusive with the **offset** option.

**-c** *size***, --chunksize** *size*

-

  Use *size* chunks for each test, specified as a comma delimited regular expression with an optional unit suffix. (eg: "-c 1M" means one megabyte.) The chunk size must be at least the region size.

-

  This option is mutually exclusive with the **chunksize\_\* options.**

**-a** *size\_low***, --chunksize\_low** *size\_low*

**-b** *size\_high***, --chunksize\_high** *size\_high*

**-g** *size\_incr***, --chunksize\_incr** *size\_incr*

-

  **Use a** *size\_low* chunk size for the first test, add *size\_incr* to the chunk size for each subsequent test, and use a *size\_high* chunk size for the last test.

-

  These three options must be specified together and are mutually exclusive with the **chunksize** option.

**-s** *size***, --regionsize** *size*

-

  Use *size* regions for each test, specified as a comma delimited regular expression with an optional unit suffix. (eg: "-s 1M" means one megabyte.)

-

  This option is mutually exclusive with the **regionsize\_\* options.**

**-A** *size\_low***, --regionsize\_low** *size\_low*

**-B** *size\_high***, --regionsize\_high** *size\_high*

**-C** *size\_incr***, --regionsize\_incr** *size\_incr*

-

  **Use a** *size\_low* region size for the first test, add *size\_incr* to the region size for each subsequent test, and use a *size\_high* region size for the last test.

-

  These three options must be specified together and are mutually exclusive with the **regionsize** option.

**-S** *size \| sizes***, --blocksize** *size \| sizes*

-

  Use *size* ZFS blocks for each test, specified as a comma delimited regular expression with an optional unit suffix. (eg: "-S 1M" means one megabyte.) The supported range is powers of two from 128K through 16M. A range of blocks can be tested as follows: "-S 128K,256K,512K,1M".

-

  **-L** *dmu\_flags***, --load** *dmu\_flags*

-

  Specify *dmuio* for regular DMU\_IO, *ssf* for single shared file access, or *fpp* for per thread access. Use commas to delimit multiple flags. (eg: "-L dmuio,ssf")

**-p** *name***, --pool** *name*

-

  The pool name, which is mandatory.

**-M** *test***, --name** *test*

-

  An arbitrary string that appears in the program output.

**-x, --cleanup**

-

  Enable the DMU\_REMOVE flag.

**-P** *command***, --prerun** *command*

-

  Invoke *command* from the kernel before running the test. Shell expansion is not performed and the environment is set to HOME=/; TERM=linux; PATH=/sbin:/usr/sbin:/bin:/usr/bin.

**-R** *command***, --postrun** *command*

-

  Invoke *command* from the kernel after running the test. Shell expansion is not performed and the environment is set to HOME=/; TERM=linux; PATH=/sbin:/usr/sbin:/bin:/usr/bin.

**-G** *directory***, --log** *directory*

-

  Put logging output in this directory.

**-I** *size***, --regionnoise** *size*

-

  Randomly vary the **regionsize** parameter for each test modulo *size* bytes.

**-N** *size***, --chunknoise** *size*

-

  Randomly vary the **chunksize** parameter for each test modulo *size* bytes.

**-T** *time***, --threaddelay** *time*

-

  Randomly vary the execution time for each test modulo *time* kernel jiffies.

**-V****, --verify**

-

  Enable the DMU\_VERIFY flag for trivial data verification.

**-z****, --zerocopy**

-

  Enable the DMU\_READ\_ZC and DMU\_WRITE\_ZC flags, which are currently unimplemented for Linux.

-

  **-O****, --nowait**

-

  Enable the DMU\_WRITE\_NOWAIT flag.

**-f****, --noprefetch**

-

  Enable the DMU\_READ\_NOPF flag.

**-H****, --human-readable**

-

  Print PASS and FAIL results explicitly and put unit suffixes on large numbers.

**-v****, --verbose**

-

  Increase output verbosity.

**-?** **, --help**

-

  Print the usage message.

## AUTHORS

The original zpios implementation was created by Cluster File Systems Inc and adapted to ZFS on Linux by Brian Behlendorf \<behlendorf1@llnl.gov\>.

This man page was written by Darik Horn \<dajhorn@vanadac.com\>.

## SEE ALSO

[**zpool**(8)](/zpool/8.md), [**zfs**(8)](/zfs/8.md)
