Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
mbuffer(1)			 console utility		      mbuffer(1)

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, multiple output targets,  and
     many more options than the standard buffer command.

OPTIONS
     -b <num>
	    Use num blocks for buffer (default is determined on startup).

     -s <size>
	    Use  blocks  of  size  bytes  for  buffer  (default is determined on
	    startup).

     -m <size>
	    Use a total of size bytes for buffer (default 2% of  available  mem-
	    ory)  - 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	percent-
	    age 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).

     -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 trail-
	    ing 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).

     -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.

     -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  out-
	    puts.

     --append
	    Open next output file given via option -o in append mode.

     --truncate
	    Truncate next output file given via option -o when opening it.

     -I <[hostname:]port[@interface]>
	    Use  network  port	port  as input instead of the standard input. If
	    given a hostname and a port in  the  form  hostname:port,  only  the
	    given host is allowed to connect. If interface is specified, connec-
	    tions are only accepted on the specified interface.

     -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 multi-
	    ple times to send data to multiple machines.

     -n <num>
	    num volumes in input device (requires use of option -i for input de-
	    vice specification, pass 0 as argument if mbuffer should prompt  for
	    every new volume).

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

     -T <file>
	    As -t but use file as buffer.

     -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 appro-
	    priate 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.

     -M <rate>
	    Set minimum rate for dynamic transfer  rate  limitation.   The  data
	    rate  is  adjusted	dynamically, between the high- and low-watermark
	    values (-p and -P), which must also be provided.

	    When used in input mode, data rate starts with the -r rate	and  de-
	    clines to the -M rate based on the fill level of the buffer.

	    When  used	in output mode, the data rate is adjusted similarly, but
	    starting with the minimum rate and increasing to the -R rate for the
	    output.

     -f     Overwrite output file if it exists already.

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

     -A <cmd>
	    The  device  used  is  an autoloader which uses cmd to load the next
	    volume. Pass </bin/false> as an autoload  command  to  suppress  the
	    warning  message  that appears when run without controlling terminal
	    (e.g.  via cron). Like this the autoload will fail and mbuffer  will
	    terminate with an error message when reaching the end of the tape.

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

     -q     Quiet - do not display the status on the standard error output.

     -Q     Quiet - do not log the status in the log file.

     -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.

     -e     Stop processing on any kind of error.

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

     --hash <alg>
	    Use algorithm alg, if alg is 'list' possible algorithms are listed.

     --pid  Print  PID	of this instance. This option can help you to figure out
	    which instance of mbuffer to kill, if multiple are running	and  one
	    is	hanging  due to a network issue. Printing of the PID can also be
	    triggered by adding "printpid = 1" to your .mbuffer.rc file.

     -W <timeout>
	    Activates a watchdog that gets triggered every timeout  seconds  and
	    checks  whether  I/O  activity  has  stalled.  If either channel has
	    stalled for a complete period, the watchdog writes an error  message
	    and terminates mbuffer via SIGINT. Be aware that the watchdog is un-
	    aware  of  tape-change  activities.  So  choose the watchdog timeout
	    greater that the worst-case tape-change time. The watchdog is  acti-
	    vated  with parsing option -W or after parsing all options. To avoid
	    that the watchdog will trigger during  network  initialization,  put
	    the option -W after -I and -O.

     -4     Force  IPv4  mode  for  the following network I/O options on command
	    line.

     -6     Force IPv6 mode for the following network  I/O  options  on  command
	    line.

     -0     Choose IPv4/IPv6 mode on demand.

     --no-direct
	    Omit use of O_DIRECT - e.g. to enable compression on btrfs.

     --tcpbuffer
	    Size  for TCP buffer in bytes. Size can be set with a trailing char-
	    acter (b and B for Byte, k for kByte, M for MByte, or  G  for  Giga-
	    byte).

     --tcptimeo <time>
	    Set  the  TCP timeout threshold. The default value is 10s. Arguments
	    without dimension are interpreted as usec. Argument  dimensions  can
	    be us, ms, s or sec, m or min, h.

     --tapeaware
	    Keep writing to the very end of the tape.  LTO drives tell the OS as
	    they  approach  the  end of the tape, which Linux passes on to user-
	    space by returning a 'no space left' error on every second write op-
	    eration.  Normally the first of these errors is treated as	the  end
	    of	the  tape  and	the next volume will be called for, however with
	    this option, writes will continue until two in a row fail  with  'no
	    space left', indicating the real end of the tape.  This will allow a
	    little extra data to fit on each tape.

     --direct
	    Use direct I/O for temporary file buffer.

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

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

DEFAULT VALUES
     The  default values for most options can be set as key = value pairs in one
     or more configuration files. See the sample mbuffer.rc files for  available
     options and their default values. Configuration files are read in following
     sequence listed below:

     - /etc/mbuffer.rc
     - $PREFIX/etc/mbuffer.rc
     - $HOME/.mbuffer.rc
     - $MBUFFERRC

     The default values given in the files above are overriden by options passed
     on the command-line.

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.
     MBUFFERRC can be used to set a custom mbuffer.rc config file.
     MBUFFER_VOL volume id info (set for autoloader command).
     MBUFFER_NUMIN number of bytes read (set for autoloader command).
     MBUFFER_NUMOUT number of bytes written (set for autoloader command).

FILES
     $PREFIX/bin/mbuffer
     /var/tmp/mbuffer-*
     ~/.mbuffer.rc

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 -

     Operating a drive tape with dynamic speed scaling:

     tar cf - / | mbuffer -o /dev/tape -p20% -p80% -M 50M -R 120M

     mbuffer -i /dev/tape -p20% -p80% -M 50M -r 120M | tar xf -

EXITCODE
     mbuffer  returns  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  com-
     pany,  please consider making a donation to support this work.  You can do-
     nate directly via PayPal to the author's e-mail  address  (thomas@maier-ko-
     mor.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		    R20260511			      mbuffer(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mbuffer&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help