Blame doc/btt.1

Packit c4abd9
.TH BTT 1 "September 29, 2007" "blktrace git\-20070910192508" ""
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH NAME
Packit c4abd9
btt \- analyse block i/o traces produces by blktrace
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH SYNOPSIS
Packit c4abd9
.B btt 
Packit c4abd9
.br
Packit c4abd9
[ \-a               | \-\-seek\-absolute ]
Packit c4abd9
.br
Packit c4abd9
[ \-A               | \-\-all\-data ]
Packit c4abd9
.br
Packit c4abd9
[ \-B <\fIoutput name\fR> | \-\-dump\-blocknos=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-d <\fIseconds\fR>     | \-\-range\-delta=<\fIseconds\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-D <\fIdev;...\fR>     | \-\-devices=<\fIdev;...\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-e <\fIexe,...\fR>     | \-\-exes=<\fIexe,...\fR>  ]
Packit c4abd9
.br
Packit c4abd9
[ \-h               | \-\-help ]
Packit c4abd9
.br
Packit c4abd9
[ \-i <\fIinput name\fR>  | \-\-input\-file=<\fIinput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-I <\fIoutput name\fR> | \-\-iostat=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-l <\fIoutput name\fR> | \-\-d2c\-latencies=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-L <\fIfreq\fR>        | \-\-periodic\-latencies=<\fIfreq\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-m <\fIoutput name\fR> | \-\-seeks\-per\-second=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-M <\fIdev map\fR>     | \-\-dev\-maps=<\fIdev map\fR>
Packit c4abd9
.br
Packit c4abd9
[ \-o <\fIoutput name\fR> | \-\-output\-file=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-p <\fIoutput name\fR> | \-\-per\-io\-dump=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-P <\fIoutput name\fR> | \-\-per\-io\-trees=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-q <\fIoutput name\fR> | \-\-q2c\-latencies=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-Q <\fIoutput name\fR> | \-\-active\-queue\-depth=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-r               | \-\-no\-remaps ]
Packit c4abd9
.br
Packit c4abd9
[ \-s <\fIoutput name\fR> | \-\-seeks=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-S <\fIinterval\fR>    | \-\-iostat\-interval=<\fIinterval\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-t <\fIsec\fR>         | \-\-time\-start=<\fIsec\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-T <\fIsec\fR>         | \-\-time\-end=<\fIsec\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-u <\fIoutput name\fR> | \-\-unplug\-hist=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-v               | \-\-verbose ]
Packit c4abd9
.br
Packit c4abd9
[ \-V               | \-\-version ]
Packit c4abd9
.br
Packit c4abd9
[ \-X               | \-\-easy\-parse\-avgs ]
Packit c4abd9
.br
Packit c4abd9
[ \-z <\fIoutput name\fR> | \-\-q2d\-latencies=<\fIoutput name\fR> ]
Packit c4abd9
.br
Packit c4abd9
[ \-Z               | \-\-do\-active ]
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH DESCRIPTION
Packit c4abd9
Packit c4abd9
btt is a post\-processing tool for the block layer IO tracing tool called
Packit c4abd9
blktrace(8).  As noted in its documentation, blktrace 
Packit c4abd9
is a block layer IO tracing mechanism which provides detailed
Packit c4abd9
information about request queue operations up to user space.
Packit c4abd9
Packit c4abd9
btt will take in binary dump data from blkparse, and analyse the events,
Packit c4abd9
producing a series of output from the analysis. It will also build .dat
Packit c4abd9
files containing "range data" \-\- showing things like Q activity (periods
Packit c4abd9
of time while Q events are being produced), C activity (likewise for
Packit c4abd9
command completions), and etc.
Packit c4abd9
Packit c4abd9
Included with the distribution is a simple 3D plotting utility,
Packit c4abd9
\fIbno_plot\fR, which can plot the block numbers btt outputs if the \fI-B\fR
Packit c4abd9
option is specified. The display will display each IO generated, with the time
Packit c4abd9
(seconds) along the X-axis, the block number (start) along the Y-axis and the
Packit c4abd9
number of blocks transferred in the IO represented along the Z-axis.
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH OPTIONS
Packit c4abd9
Packit c4abd9
.B \-a
Packit c4abd9
.br
Packit c4abd9
.B \-\-seek\-absolute
Packit c4abd9
.RS 4
Packit c4abd9
When specified on the command line, this directs btt to calculate
Packit c4abd9
seek distances based solely upon the ending block address of one IO,
Packit c4abd9
and the start of the next.  By default \fBbtt\fR uses the concept
Packit c4abd9
of the closeness to either the beginning or end of the previous IO. See
Packit c4abd9
the Users Manual for more details about seek distances.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-A
Packit c4abd9
.br
Packit c4abd9
.B \-\-all\-data
Packit c4abd9
.RS 4
Packit c4abd9
Normally \fBbtt\fR will not print out verbose information concerning
Packit c4abd9
per-process and per-device data.  If you desire that level of detail you can
Packit c4abd9
specify this option.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-B <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-dump\-blocknos=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
This option will output absolute block numbers to three files prefixed
Packit c4abd9
by the specified output name:
Packit c4abd9
.HP
Packit c4abd9
.I prefix_device_r.dat
Packit c4abd9
.br
Packit c4abd9
All read block numbers are output, first column is time (seconds), second is
Packit c4abd9
the block number, and the third column is the ending block number.
Packit c4abd9
.HP
Packit c4abd9
.I prefix_device_w.dat
Packit c4abd9
.br
Packit c4abd9
All write block numbers are output, first column is time (seconds), second is
Packit c4abd9
the block number, and the third column is the ending block number.
Packit c4abd9
.HP
Packit c4abd9
.I prefix_device_c.dat
Packit c4abd9
.br
Packit c4abd9
All block numbers (read and write) are output, first column is time (seconds),
Packit c4abd9
second is the block number, and the third column is the ending block number.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-d <\fIseconds\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-range\-delta=<\fIseconds\fR>
Packit c4abd9
.RS 4
Packit c4abd9
\fBbtt\fR outputs a file containing Q and C activity, the notion of active
Packit c4abd9
traces simply means that there are Q or C traces occurring within a certain
Packit c4abd9
period of each other. The default values is 0.1 seconds; with this option
Packit c4abd9
allowing one to change that granularity. The smaller the value, the more data
Packit c4abd9
points provided.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-D <\fIdev;...\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-devices=<\fIdev;...\fR>
Packit c4abd9
.RS 4
Packit c4abd9
Normally, \fBbtt\fR will produce data for all devices detected in the
Packit c4abd9
traces parsed. With this option, one can reduce the analysis to one or more
Packit c4abd9
devices provided in the string passed to this option. The device identifiers
Packit c4abd9
are the major and minor number of each device, and each device identifier is
Packit c4abd9
separated by a colon (:). A valid specifier for devices 8,0 and 8,8 would then
Packit c4abd9
be: \fI8,0:8,8\fR.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-e <\fIexe,...\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-exes=<\fIexe,...\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-e option supplies the list of executables that will have I/Os
Packit c4abd9
analysed.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-h
Packit c4abd9
.br
Packit c4abd9
.B \-\-help
Packit c4abd9
.RS 4
Packit c4abd9
Shows a short summary of possible command line option
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-i <\fIinput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-input\-file <\fIinput file\fR>
Packit c4abd9
.RS 4
Packit c4abd9
Specifies the input file to analyse.  This should be a trace file produced
Packit c4abd9
by \fIblktrace\fR (8).
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-I <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-iostat=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-I option directs btt to output iostat\-like data to the specified
Packit c4abd9
file.  Refer to the iostat (sysstat) documentation for details on the
Packit c4abd9
data columns. 
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-l <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-d2c\-latencies=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-l option allows one to output per\-IO D2C latencies
Packit c4abd9
respectively. The supplied argument provides the basis for the output
Packit c4abd9
name for each device.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-L <\fIfreq\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-periodic\-latencies=<\fIfreq\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-L option allows one to output periodic latency information for both
Packit c4abd9
Q2C and D2C latencies. The frequency specified will regulate how often
Packit c4abd9
an average latency is output -- a floating point value expressing seconds.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-m <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-seeks\-per\-second=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
Trigger btt to output seeks-per-second information. The first column will
Packit c4abd9
contain a time value (seconds), and the second column  will indicate the
Packit c4abd9
number of seeks per second at that point.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-M <\fIdev map\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-dev\-maps=<\fIdev map\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-M option takes in a file generated by the provided script
Packit c4abd9
(gen_disk_info.py), and allows for better output of device names.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-o <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-output\-file=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
Specifies the output file name.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-p <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-per\-io\-dump=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-p option will generate a file that contains a list of all IO
Packit c4abd9
"sequences" \- showing the parts of each IO (Q, A, I/M, D, & C).
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-P <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-per\-io\-trees=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-P option will generate a file that contains a list of all IO
Packit c4abd9
"sequences" \- showing only the Q, D & C operation times. The D & C
Packit c4abd9
time values are separated from the Q time values with a vertical bar.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-q <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-q2c\-latencies=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-q option allows one to output per\-IO Q2C latencies
Packit c4abd9
respectively. The supplied argument provides the basis for the output
Packit c4abd9
name for each device.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-Q <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-active\-queue\-depth=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-Q option allows one to output data files showing the time stamp
Packit c4abd9
and the depth of active commands (those issued but not completed).
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-r
Packit c4abd9
.br
Packit c4abd9
.B \-\-no\-remaps
Packit c4abd9
.RS 4
Packit c4abd9
Ignore remap traces; older kernels did not implement the full remap
Packit c4abd9
PDU.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-s <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-seeks=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-s option instructs btt to output seek data, the argument provided
Packit c4abd9
is the basis for file names output. There are two files per device,
Packit c4abd9
read seeks and write seeks.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-S <\fIinterval\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-iostat\-interval=<\fIinterval\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-S option specifies the interval to use between data
Packit c4abd9
output, it defaults to once per second.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-t <\fIsec\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-time\-start=<\fIsec\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-T <\fIsec\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-time\-end=<\fIsec\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-t/\-T options allow one to set a start and/or end time for analysing
Packit c4abd9
\- analysing will only be done for traces after \-t's argument and before
Packit c4abd9
\-T's argument. (\-t and \-T are optional, so if you specify just \-t,
Packit c4abd9
analysis will occur for all traces after the time specified. Similarly,
Packit c4abd9
if only \-T is specified, analysis stops after \-T's seconds.)
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-u <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-unplug\-hist=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
This option instructs \fBbtt\fR to generate a data file containing histogram
Packit c4abd9
information for unplug traces on a per device basis. It shows how many
Packit c4abd9
times an unplug was hit with a specified number of IOs released. There are 21
Packit c4abd9
output values into the file, as follows:
Packit c4abd9
Packit c4abd9
.RS 4
Packit c4abd9
a value of 0 represents 0..4 counts
Packit c4abd9
.br
Packit c4abd9
a value of 1 represents 5..9 counts
Packit c4abd9
.br
Packit c4abd9
a value of 2 represents 10..14 counts
Packit c4abd9
.br
Packit c4abd9
etc, until
Packit c4abd9
.br
Packit c4abd9
a value of 20 represents 100+ counts
Packit c4abd9
.br
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
The file name(s) generated use the text string passed as an argument for
Packit c4abd9
the prefix, followed by the device identifier in \fImajor,minor\fR
Packit c4abd9
form, with a \fI.dat\fR extension.  For example, with \fI\-u
Packit c4abd9
up_hist\fR specified on the command line: \fIup_hist_008,032.dat\fR.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-V
Packit c4abd9
.br
Packit c4abd9
.B \-\-version
Packit c4abd9
.RS 4
Packit c4abd9
Shows the version of btt.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-v
Packit c4abd9
.br
Packit c4abd9
.B \-\-verbose
Packit c4abd9
.RS 4
Packit c4abd9
Requests a more verbose output.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-X
Packit c4abd9
.br
Packit c4abd9
.B \-\-easy\-parse\-avgs
Packit c4abd9
.RS 4
Packit c4abd9
Provide data in an easy-to-parse form and write it to a file
Packit c4abd9
with .avg exentsion
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-z <\fIoutput name\fR>
Packit c4abd9
.br
Packit c4abd9
.B \-\-q2d\-latencies=<\fIoutput name\fR>
Packit c4abd9
.RS 4
Packit c4abd9
The \-z option allows one to output per\-IO Q2D latencies
Packit c4abd9
respectively. The supplied argument provides the basis for the output
Packit c4abd9
name for each device.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
.B \-Z
Packit c4abd9
.br
Packit c4abd9
.B \-\-do\-active
Packit c4abd9
.RS 4
Packit c4abd9
The \-Z will output files containing data which can be plotted showing
Packit c4abd9
per\-device (and total system) I/O activity.
Packit c4abd9
.RE
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH AUTHORS
Packit c4abd9
\fIbtt\fR was written by Alan D. Brunelle.  This man page was created
Packit c4abd9
from the \fIblktrace\fR documentation by Bas Zoetekouw.
Packit c4abd9
Packit c4abd9
Packit c4abd9
.SH "REPORTING BUGS"
Packit c4abd9
Report bugs to <linux\-btrace@vger.kernel.org>
Packit c4abd9
Packit c4abd9
.SH COPYRIGHT
Packit c4abd9
Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
Packit c4abd9
.br
Packit c4abd9
This is free software.  You may redistribute copies of it under the terms of
Packit c4abd9
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
Packit c4abd9
There is NO WARRANTY, to the extent permitted by law.
Packit c4abd9
.br
Packit c4abd9
This manual page was created for Debian by Bas Zoetekouw.  It was derived from
Packit c4abd9
the documentation provided by the authors and it may be used, distributed and
Packit c4abd9
modified under the terms of the GNU General Public License, version 2.
Packit c4abd9
.br
Packit c4abd9
On Debian systems, the text of the GNU General Public License can be found in
Packit c4abd9
/usr/share/common\-licenses/GPL\-2.
Packit c4abd9
Packit c4abd9
.SH "SEE ALSO"
Packit c4abd9
The btt Users Guide, which can be found in /usr/share/doc/blktrace/btt.pdf
Packit c4abd9
.br
Packit c4abd9
bno_plot (1), blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)
Packit c4abd9