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


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


.SH SYNOPSIS
.B Usage: 

btrecord [ \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

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

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

\-F
.br
\-\-find\-traces
.RS
Find trace files automatically
This option instructs \fIbtreplay\fR to go find all the trace 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

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

\-m <\fInanoseconds\fR>
.br
\-\-max\-bunch\-time=<\fInanoseconds\fR>
.RS
The \fI\-m\fR option requires a single parameter which specifies an
amount of time (in nanoseconds) to include in any one bunch of IOs that
are to be processed. The smaller the value, the smaller the number of
IOs processed at one time \(em perhaps yielding in more realistic replay.
However, after a certain point the amount of overhead per bunch may result
in additional real replay time, thus yielding less accurate replay times.
.P
The default value is 10,000,000 nanoseconds (10 milliseconds).
.RE

\-M <\fInum\fR>
.br
\-\-max\-pkts=<\fInum\fR>
.RS
Set maximum number of packets per bunch.
The \fI\-M\fR option requires a single parameter which specifies the
maximum number of IOs to store in a single bunch. As with the \fI\-m\fR
option, smaller values may or may not yield more accurate replay times.

The default value is 8, with a maximum value of up to 512 being supported.
.RE

\-o <\fIbasename\fR>
.br
\-\-output\-base=<\fIbasename\fR>
.RS
Set base name for output files.
Each output 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

\-v
.br
\-\-verbose
.RS
Enable verbose output.
This option will output some simple statistics at the end of a successful
run.  Example output is:
.nf
.P
sdab:0: 580661 pkts (tot), 126030 pkts (replay), 89809 bunches, 1.4 pkts/bunch
sdab:1: 2559775 pkts (tot), 430172 pkts (replay), 293029 bunches, 1.5 pkts/bunch
sdab:2: 653559 pkts (tot), 136522 pkts (replay), 102288 bunches, 1.3 pkts/bunch
sdab:3: 474773 pkts (tot), 117849 pkts (replay), 69572 bunches, 1.7 pkts/bunch
.fi
.P
The meaning of the columns is:
.IP 1. 3
  The first field contains the device name and CPU identifier. Thus:
  \fIsdab:0:\fR means the device \fIsdab\fR and traces on CPU 0. 
.IP 2.
  The second field contains the total number of packets processed for each
  device file. 
.IP 3.
  The next field shows the number of packets eligible for replay. 
.IP 4.
  The fourth field contains the total number of IO bunches. 
.IP 5.
  The last field shows the average number of IOs per bunch recorded.
.RE


.SH AUTHORS
\fIbtrecord\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), btreplay (8)

