.TH BTREPLAY 8 "December  8, 2007" "blktrace git\-20071207142532" ""


.SH NAME
btreplay \- recreate IO loads recorded by blktrace


.SH SYNOPSIS
.B btreplay [ \fIoptions\fR ] <\fIdev\fR...>


.SH DESCRIPTION

.P
The \fIbtrecord\fR and \fIbtreplay\fR tools provide the ability to
record and replay IOs captured by the \fIblktrace\fR utility. Attempts
are made to maintain ordering, CPU mappings and time-separation of IOs. 


.P
The \fIblktrace\fR utility provides the ability to collect detailed
traces from the kernel for each IO processed by the block IO layer. The
traces provide a complete timeline for each IO processed, including
detailed information concerning when an IO was first received by the block
IO layer \(em indicating the device, CPU number, time stamp, IO direction,
sector number and IO size (number of sectors). Using this information,
one is able to \fBreplay\fR the IO again on the same machine or another
set up entirely.

.P
The basic operating work-flow to replay IOs would be something like:

.IP \- 2
  Run \fIblktrace\fR to collect traces. Here you specify the
  device or devices that you wish to trace and later replay IOs upon. Note:
  the only traces you are interested in are \fBQUEUE\fR requests \(em
  thus, to save system resources (including storage for traces), one could
  specify the \fI-a queue\fR command line option to \fIblktrace\fR.

.IP \- 2
  While \fIblktrace\fR is running, you run the workload that you
  are interested in. 

.IP \- 2
  When the work load has completed, you stop the \fIblktrace\fR
  utility (thus saving all traces over the complete workload). 

.IP \- 2
  You extract the pertinent IO information from the traces saved by
  \fIblktrace\fR using the \fIbtrecord\fR utility. This will parse
  each trace file created by \fIblktrace\fR, and crafty IO descriptions
  to be used in the next phase of the workload processing.

.IP \- 2
  Once \fIbtrecord\fR has successfully created a series of data
  files to be processed, you can run the \fIbtreplay\fR utility which
  attempts to generate the same IOs seen during the sample workload phase.


.SH OPTIONS

\-c <\fInum\fR>
.br
\-\-cpus=<\fInum\fR>
.RS
Set number of CPUs to use.
.RE

\-d <\fIdir\fR>
.br
\-\-input\-directory=<\fIdir\fR>
.RS
Set input directory.
This option requires a single parameter providing the directory
name for where input files are to be found. The default directory is the
current directory (\fI.\fR).
.RE

\-F
.br
\-\-find\-records
.RS
Find record files automatically
This option instructs \fIbtreplay\fR to go find all the record files in the
directory specified (either via the \fI-d\fR option, or in the default
directory (\fI.\fR).
.RE

\-h
.br
\-\-help
.RS
Show help and exit.
.RE

\-i <\fIbasename\fR>
.br
\-\-input\-base=<\fIbasename\fR>
.RS
Set base name for input files.
Each input file has 3 fields:
.IP 1. 3
 Device identifier (taken directly from the device name of the
 \fIblktrace\fR output file).
.IP 2. 3
 \fIbtrecord\fR base name \(em by default ``replay''.
.IP 3. 3
 The CPU number (again, taken directly from the
 \fIblktrace\fR output file name).
.P
This option requires a single parameter that will override the default name
(replay), and replace it with the specified value.
.RE

\-I <\fInum\fR>
.br
\-\-iterations=<\fInum\fR>
.RS
Set number of iterations to run.
This option requires a single parameter which specifies the number of times
to run through the input files. The default value is 1
.RE

\-M <\fIfilename\fR>
.br
\-\-map\-devs=<\fIfilename\fR>
.RS
Specify device mappings.  
This option requires a single parameter which specifies the name of a
file contain device mappings. The file must be very simply managed, with
just two pieces of data per line:

.IP \- 2
  The device name on the recorded system (with the '\fI/dev/\fR'
  removed). Example: \fI/dev/sda\fR would just be \fIsda\fR.

.IP \- 2
  The device name on the replay system to use (again, without the
  '\fI/dev/\fR' path prepended).

.P
An example file for when one would map devices \fI/dev/sda\fR and
\fI/dev/sdb\fR on the recorded system to \fIdev/sdg\fR and
\fIsdh\fR on the replay system would be:

.nf
.IP
sda sdg
sdb sdh
.fi

.P
The only entries in the file that are allowed are these two element lines \(em
we do not (yet?) support the notion of blank lines, or comment lines, or the
like.

.P
The utility allows for multiple \fI-M\fR options to be
supplied on the command line.
.RE

\-N
.br
\-\-no\-stalls
.RS
Disable pre-bunch stalls.
When specified on the command line, all pre-bunch stall indicators will be
ignored. IOs will be replayed without inter-bunch delays.
.RE

\-x <\fIfactor\fR>
.br
\-\-acc\-factor=<\fIfactor\fR>
.RS
Specify acceleration factor. Default value is 1 (no acceleration).
.RE

\-v
.br
\-\-verbose
.RS
Enable verbose output.
When specified on the command line, this option instructs \fIbtreplay\fR
to store information concerning each \fBstall\fR and IO operation
performed by \fIbtreplay\fR. The name of each file so created will be
the input file name used with an extension of \fI.rep\fR appended onto
it. Thus, an input file of the name \fIsdab.replay.3\fR would generate a
verbose output file with the name \fIsdab.replay.3.rep\fR in the
directory specified for input files.
.P
In addition, \fIbtreplay\fR will also output to \fIstderr\fR the
names of the input files being processed.
.RE

\-V
.br
\-\-version
.RS
Show version number and exit.
.RE

\-W
.br
\-\-write-enable
.RS
Enable writing during replay.
As a precautionary measure, by default \fIbtreplay\fR will not
process \fBwrite\fR requests. In order to enable \fIbtreplay\fR to
actually \fBwrite\fR to devices one must explicitly specify the
\fI\-W\fR option.
.RE


.SH AUTHORS
\fIbtreplay\fR was written by Alan D. Brunelle.  This
man page was created from the \fIbtreplay\fR documentation by Bas Zoetekouw.


.SH "REPORTING BUGS"
Report bugs to <linux\-btrace@vger.kernel.org>

.SH COPYRIGHT
Copyright \(co 2007 Alan D. Brunelle, Alan D. Brunelle and Nathan Scott.
.br
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
.br
This manual page was created for Debian by Bas Zoetekouw.  It was derived from
the documentation provided by the authors and it may be used, distributed and
modified under the terms of the GNU General Public License, version 2.
.br
On Debian systems, the text of the GNU General Public License can be found in
/usr/share/common\-licenses/GPL\-2.

.SH "SEE ALSO"
The full documentation for btreplay can be found in /usr/share/doc/blktrace on Debian systems.
.br
blktrace (8), blkparse (1), btrecord (8)

