.TH BLKTRACE 8 "March  6, 2007" "blktrace git\-20070306202522" ""


.SH NAME
blktrace \- generate traces of the i/o traffic on block devices


.SH SYNOPSIS
.B blktrace \-d \fIdev\fR [ \-r \fIdebugfs_path\fR ] [ \-o \fIoutput\fR ] [\-k ] [ \-w \fItime\fR ] [ \-a \fIaction\fR ] [ \-A \fIaction_mask\fR ] [ \-v ]
.br


.SH DESCRIPTION
blktrace is a block layer IO tracing mechanism which provides detailed
information about request queue operations up to user space. There are three
major components: a kernel component, a utility to record the i/o trace
information for the kernel to user space, and utilities to analyse and view the
trace information.  This man page describes blktrace, which records the i/o event
trace information for a specific block device to a file.

The \fBblktrace\fR utility extracts event traces from the kernel (via
the relaying through the debug file system). Some background details
concerning the run\-time behaviour of blktrace will help to understand some
of the more arcane command line options:

.TP 2
\-
blktrace receives data from the kernel in buffers passed up through the
debug file system (relay). Each device being traced has a file created in
the mounted directory for the debugfs, which defaults to 
\fI/sys/kernel/debug\fR \-\- this can be overridden with the \fB\-r\fR command
line argument.

.TP 2
\-
blktrace defaults to collecting all events that can be traced. To
limit the events being captured, you can specify one or more filter masks
via the \fB\-a\fR option.

Alternatively, one may specify the entire mask utilising a hexadecimal
value that is version\-specific. (Requires understanding of the internal
representation of the filter mask.)

.TP 2
\-
As noted above, the events are passed up via a series of buffers stored
into debugfs files. The size and number of buffers can be specified via
the \fB\-b\fR and \fB\-n\fR arguments respectively.

.TP 2
\-
blktrace stores the extracted data into files stored in the
local directory. The format of the file names is (by default)
\fBdevice\fR.\fBblktrace\fR.\fBcpu\fR, where \fBdevice\fR is the base
device name (e.g, if we are tracing /dev/sda, the base device name would
be \fBsda\fR); and \fBcpu\fR identifies a CPU for the event stream.

The \fBdevice\fR portion of the event file name can be changed via
the \fB\-o\fR option.

.TP 2
\-
blktrace may also be run concurrently with blkparse to produce
\fBlive\fR output \-\- to do this specify \fB\-o \-\fR for blktrace.

.TP 2
\- 
The default behaviour for blktrace is to run forever until explicitly
killed by the user (via a control-C, or sending SIGINT signal to the
process via invocation the kill (1) utility). Also you can specify a
run-time duration for blktrace via the \fB\-w\fR option -- then
blktrace will run for the specified number of seconds, and then halt.


.SH OPTIONS

\-A \fIhex-mask\fR 
.br
\-\-set-mask=\fIhex-mask\fR
.RS
Set filter mask to \fIhex-mask\fR (see below for masks)
.RE

\-a \fImask\fR      
.br
\-\-act-mask=\fImask\fR      
.RS
Add \fImask\fR to current filter (see below for masks) 
.RE

\-b \fIsize\fR    
.br
\-\-buffer\-size=\fIsize\fR   
.RS
Specifies buffer size for event extraction (scaled by 1024). The default
buffer size is 512KiB.
.RE

\-d \fIdev\fR
.br
\-\-dev=\fIdev\fR 
.RS
Adds \fIdev\fR as a device to trace  
.RE

\-I \fIfile\fR
.br
\-\-input\-devs=\fIfile\fR
.RS
Adds the devices found in \fIfile\fR as devices to trace
.RE

\-n \fInum\-sub\fR 
.br
\-\-num\-sub\-buffers=\fInum-sub\fR
.RS
Specifies number of buffers to use. blktrace defaults to 4 sub buffers.
.RE

\-l
.br
\-\-listen
.RS
Run in network listen mode (blktrace server)
.RE

\-h \fIhostname\fR
.br
\-\-host=\fIhostname\fR
.RS
Run in network client mode, connecting to the given host
.RE

\-p \fInumber\fR
.br
\-\-port=\fInumber\fR
.RS
Network port to use (default 8462)
.RE

\-s
.br
\-\-no\-sendfile
.RS
Make the network client NOT use sendfile() to transfer data
.RE

\-o \fIbasename\fR
.br
\-\-output=\fIbasename\fR
.RS
Specifies base name for input files. Default is device.blktrace.cpu.
Specifying -o - runs in live mode with blkparse (writing data to standard out).
.RE

\-D \fIdir\fR
.br
\-\-output\-dir=\fIdir\fR
.RS
Prepend \fIfile\fR to output file name(s)

This only works when supplying a single device, or when piping the output
via "-o -" with multiple devices.
.RE

\-r \fIrel-path\fR
.br
\-\-relay=\fIrel-path\fR     
.RS
Specifies debugfs mount point  
.RE

\-v
.br
\-\-version
.RS
Outputs version
.RE

\-V               
.br
\-\-version
.RS
Outputs version  
.RE

\-w \fIseconds\fR 
.br
\-\-stopwatch=\fIseconds\fR  
.RS
Sets run time to the number of seconds specified  
.RE


.SH FILTER MASKS
The following masks may be passed with the \fI\-a\fR command line
option, multiple filters may be combined via multiple \fI\-a\fR command
line options.

.RS
\fIbarrier\fR: barrier attribute 
.br
\fIcomplete\fR: completed by driver
.br
\fIfs\fR: requests 
.br
\fIissue\fR: issued to driver 
.br
\fIpc\fR: packet command events
.br
\fIqueue\fR: queue operations 
.br
\fIread\fR: read traces 
.br
\fIrequeue\fR: requeue operations 
.br
\fIsync\fR: synchronous attribute 
.br
\fIwrite\fR: write traces
.br
\fInotify\fR: trace messages
.br
\fIdrv_data\fR: additional driver specific trace
.RE


.SH REQUEST TYPES
blktrace distinguishes between two types of block layer requests, file system
and SCSI commands. The former are dubbed \fBfs\fR requests, the latter
\fBpc\fR requests. File system requests are normal read/write operations, i.e.
any type of read or write from a specific disk location at a given size. These
requests typically originate from a user process, but they may also be
initiated by the vm flushing dirty data to disk or the file system syncing a
super or journal block to disk. \fBpc\fR requests are SCSI commands. blktrace
sends the command data block as a payload so that blkparse can decode it.


.SH EXAMPLES
To trace the i/o on the device \fI/dev/hda\fR and parse the output to human
readable form, use the following command:

    % blktrace \-d /dev/sda \-o \- | blkparse \-i \-

This same behaviour can be achieve with the convenience script \fIbtrace\fR.
The command

    % btrace /dev/sda

has exactly the same effect as the previous command. See \fIbtrace\fR (8) for
more information.

To trace the i/o on a device and save the output for later processing with
\fIblkparse\fR, use \fIblktrace\fR like this:

    % blktrace /dev/sda /dev/sdb

This will trace i/o on the devices \fI/dev/sda\fR and \fI/dev/sdb\fR and save
the recorded information in the files \fIsda\fR and \fIsdb\fR in the current
directory, for the two different devices, respectively.  This trace
information can later be parsed by the \fIblkparse\fR utility:

    % blkparse sda sdb

which will output the previously recorded tracing information in human
readable form to stdout.  See \fIblkparse\fR (1) for more information.


.SH AUTHORS
blktrace was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
man page was created from the blktrace documentation by Bas Zoetekouw.


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

.SH COPYRIGHT
Copyright \(co 2006 Jens Axboe, 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"
btrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)

