TORTURE(8)

NAME
torture - torture suite

SYNOPSIS
torture command [options ...]

DESCRIPTION
torture is a suite of torture programs, each designed to torture specific parts of the kernel, some even multiple parts.

The following commands are available:

    swap [options] Run the swap torture program.

    The options are as follows:

    -n num
        num is the number of process to fork, default is 4.

    -s size
        Each process will allocate size megabytes, default is 512.

    -w num
        Each process will sleep for num seconds before exiting, default is 300.

    iogen [options] Run the iogen torture program.

    The optios are as follows:

    -b max-io-size
        This is the fixed I/O size unless the -r flag is set. The default is 64KB.

    -d target-directory
        This is the directory where the I/O file will be written to. The default is the current working directory.

    -f result-directory
        This is the directory where the result file will be written to. The result file is updated every update-time seconds with statistics. The default is the current working directory.

    -k  Kill all running torture processes.

    -n nr-forks
        This will determine how many identical processes will be forked to run I/O. The default is 1.

    -p read-percentage
        This determins the read vs write distribution. The range is from 10% to 90%. The default is 50.

    -P pattern
        Pattern is a whole number that designates the IO pattern. The default is a text pattern that is human readable. Use ? to print out the available patterns.

    -r  Randomize I/O size between 1 and max-io-size. Enabling this flag will disable data verification. The default is disabled.

    -s max-file-size
        The file where the I/O is run to and from will grow sequentially until it is bigger or equal to this value. At that point all write I/O will also become random. The default is 1GB.

    -t update-time
        This determines the minimal amount of time between updates. Under heavy I/O this value can be skewed due to the asynchronous nature of alarm(3). The default is 60 seconds.

    -T I/O timeout
        This determines the maximum time an I/O run is allowed to take to complete. If the timeout is reached all iogen processes will be terminated. The default is disabled.

    Although the algorithm for I/O generation is incredibly simple, it has proven to be very effective at bringing out issues in storage stacks. It first grows the initial file a minimal amount to be able to start running I/O in it. After the initial growth, it reads randomly within the current file size. Every run is a distribution between reads and writes which is governed by the read percentage value. The file is grown sequentially until it reaches maximum file size. Whenever this happens a message is logged to syslogd(8) and all writes become random.

    To monitor progress one can tail(1) the result file which is updated every update-time interval or send the process a HUP signal. Whenever an I/O process receives a HUP signal, it prints statistical values to stderr(4) at its earliest convenience.

    Whenever iogen runs into data corruption or a failed read or write it will terminate all child processes.

    filbuf [options] Run the filbuf torture program.

    The options are as follows:

    -d directory
        Data files get written into directory. By default a new directory, filbuf is created in the current directory.

    -s size
        size of the files in megabytes to be written. By default 64Mb.

    -n num
        The num of processes to create. By default 8.

    -f num
        The num of files each process will create. By default 64.

    coredumper size nproc dir Run the coredumper torture program. The coredumper will make many processes dump core files in parallel into a specified directory.

    The arguments must be specified as follows:

    size
        size of the processes in megabytes that will dump core.

    num The num of processes to create

    dir Specify dir as the directory where coredumper will dump its core files. This directory must exist beforehand.

HISTORY
The first version of torture suite was written in 2010. It however contains programs that are as old as the grey beards.

AUTHORS
Thordur I. Bjornsson <thib@openbsd.org> Bob Beck <beck@obtuse.com>

This suite includes a re-write of the filbuf program by Matthew Jacob. And iogen written by the top posting flametroll also known as Marco Peereboom <marco@peereboom.us>.

CAVEATS
This suite is capable of generating extremely high load on your system, not to mention your I/O sub systems, parts of it have been known to break hardware before, so please use caution an don't complain if something bad happens.