Provided by: mbuffer_20110119-2_amd64 bug

NAME

       mbuffer - measuring buffer

SYNTAX

       mbuffer [options]

DESCRIPTION

       mbuffer  buffers  I/O operations and displays the throughput rate. It is multi-threaded, supports network
       connections, and offers more options than the standard buffer.

OPTIONS

       -i <filename>
              Use filename as input instead of the standard input (needs to be given for multi volume  support).
              If filename is -, input is read from standard input.

       -I <port>
              Use  network  port  port as input instead of the standard input. If given a hostname and a port in
              the form hostname:port, the first interface with the IP of hostname will be used.

       -o <filename>
              Use filename as output instead of the standard output (needs to be given for multi volume support,
              will enable use of sendfile if available). If filename is -, output is written to standard output.
              The option -o can be passed multiple times to specify multiple outputs.

       -O <hostname:port>
              Write output to hostname:port instead of the standard output  (will  enable  use  of  sendfile  if
              available). This option can be used multiple times to send data to multiple machines.

       -b <num>
              Use num blocks for buffer (default 256).

       -s <size>
              Use blocks of size bytes for buffer (default pagesize of system).

       -m <size>
              Use  a total of size bytes for buffer (default 2MB) - size can be set with a trailing character (b
              and B for Byte, k for kByte, M for MByte, G for Gigabyte, and with % for  a  percentage  of  total
              physical memory).

       -L     Lock  buffer  in memory - this option is not available for file-based buffers and requires mbuffer
              to be set-UID root (use with care).

       -n <num>
              num volumes in input device (requires use of option -i for input device specification)  [currently
              multi volume support is EXPERIMENTAL]

       -t     use a memory-mapped temporary file as buffer (use with huge buffers)

       -T <file>
              as -t but use file instead

       -d     use block-size of device for output (needed for some devices, slows output down)

       -D <size>
              assume  an  output  volume  of  size  bytes (default infinite) after which a volume change will be
              initiated. Small values are useful for the timely testing of multi-volume runs; accurate values if
              your device doesn't properly signal end of media. Size can be set with a trailing character (b and
              B for Byte, k for kByte, M for MByte, or G for Gigabyte)

       -P <num>
              start writing after the buffer has been filled to num% (default 0 - start at once)

       -p <num>
              start reading after the buffer has dropped below fill-ratio of num% (default 100 - start at once)

       -l <file>
              log messages to file instead of standard error output

       -u <num>
              pause num microseconds after each write - might increase performance on some drives with very  low
              performance (< 1 MB/sec)

       -r <rate>
              Set  the  maximum  read  rate  to  <rate>. <rate> can be given in either Bytes, kBytes, MBytes, or
              GBytes per second. To do so, use an appropriate suffix (i.e. k,M,G). This option is useful if  you
              have  a tape that is capable of transferring data faster than the host can handle it. In this case
              you can use this option to limit the transfer rate and keep the tape running. Be aware  that  this
              is both good for your tape drive, and enhances overall performance, by avoiding tape screwing.

       -R <rate>
              Same as above only for setting the transfer limit for the writer.

       -A <cmd>
              the device used is an autoloader which uses cmd to load the next volume

       -a <time>
              the device used is an autoloader which takes time seconds to load a new tape

       -f     overwrite output file if it exists already

       -c     write  with  synchronous data integrity support - This option forces all writes to complete before
              continuing. This enables errors to be reported earlier and  more  precisely,  but  might  decrease
              performance.  Especially  systems  with  high  level  of  data  integrity  support  suffer  a huge
              performance hit. Others might seem to be unaffected, but just neglect support for full synchronous
              data integrity.

       -v <num>
              set verbose level to num. Valid values are 0..6 (0  =  none,  1  =  errors,  2  =  warnings,  4  =
              information  messages,  5  =  debugging  messages, 6 = I/O debugging). Higher values include lower
              values messages.

       -q     quiet - do not display the status on the standard error output --direct Use O_DIRECT to open  file
              descriptors. This option is not available on all systems. It tells the OS to bypass the page cache
              to  improve  performance when reading and writing. On Solaris this is an auto-magic option that is
              enabled if it is supported for the relevant  file.  Be  aware  that  this  option  might  lead  to
              read/write failures, if the buffer isn't properly aligned for direct I/O. Additionally, open might
              fail with EINVAL (i.e. invalid argument) if the named file does not support O_DIRECT.

       -6     Force IPv6 mode for the following network I/O options on command line.  -4 Force IPv4 mode for the
              following network I/O options on command line.  -0 Choose IPv4/IPv6 mode on demand.

       -h, --help
              Output help information and exit.

       -H, --md5
              Generate a MD5 hash of transferred data.

       -V, --version
              Output version information and exit.

ENVIRONMENT VARIABLES

       If TMPDIR is set, mbuffer allocates storage for file-based buffers in this directory. If TMPDIR is unset,
       /var/tmp will be used.

FILES

       /usr/bin/mbuffer
       /var/tmp/mbuffer-*

EXAMPLES

       To run this program with the default options just type:

       mbuffer

       Using mbuffer to do a backup with tar to the default tape device. Options for this example: memory-mapped
       temporary file with a size of 10 Megabytes, start after 80% of the buffer have been filled.

       tar cf - mydirectory | gzip | mbuffer -t -m 10M -P 80 -f -o $TAPE

       Using mbuffer with 3 tapes for input and extracting the contents in the current work directory:

       mbuffer -n 3 -i $TAPE | gzip -dc | tar xf -

       Using mbuffer to write to multiple tape volumes:

       tar cf - /usr | mbuffer -f -o $TAPE

       Write to multiple tapes and erase every tape before writing:

       tar cf - /usr | mbuffer -A "echo next tape; read a < /dev/tty; mt erase $TAPE" -f -o $TAPE

       Making a backup via network:

       tape server: mbuffer -I 8000 -f -o $TAPE

       backup client: tar zcf - /home | mbuffer -O tapeserver:8000

       Distributing a directory tree to multiple machines:

       master: tar cf - /tree_to_clone | mbuffer -O clone0:8000 -O clone1:8000

       clones: mbuffer -I master:8000 | tar xf -

EXITCODE

       mbuffer return 0 upon success. Any kind of failure will yield a non-zero exit code.

AUTHORS

       Thomas Maier-Komor <thomas@maier-komor.de>

DONATIONS

       If  you  like this software, and use it for production purposes in your company, please consider making a
       donation to support this work.  You can donate  directly  via  PayPal  to  the  author's  e-mail  address
       (thomas@maier-komor.de).

HOMEPAGE

       http://www.maier-komor.de/mbuffer.html

LICENSE

       This software is published under GNU General Public License V3. See file LICENSE for details.

SEE ALSO

       buffer(1)

Thomas Maier-Komor                                  20110119                                          mbuffer(1)