.TH BLKPARSE 1 "March  6, 2007" "blktrace git\-20070306202522" ""


.SH NAME
blkparse \- produce formatted output of event streams of block devices


.SH SYNOPSIS
.B blkparse [ \fIoptions\fR ] 
.br


.SH DESCRIPTION
The \fIblkparse\fR utility will attempt to combine streams of events for
various devices on various CPUs, and produce a formatted output of the event
information.  Specifically, it will take the (machine-readable) output of the
\fIblktrace\fR utility and convert it to a nicely formatted and human-readable
form.

As with \fIblktrace\fR, some details concerning \fIblkparse\fR
will help in understanding the command line options presented below.


.TP 2
\-
By default, \fIblkparse\fR expects to run in a post-processing mode; one where
the trace events have been saved by a previous run of blktrace, and blkparse
is combining event streams and dumping formatted data.

blkparse may be run in a live manner concurrently with blktrace by specifying
\fB\-i \-\fR to blkparse, and combining it with the live option for blktrace.
An example would be:

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

.TP 2
\-
You can set how many blkparse batches event reads via the \fB\-b\fR option, the
default is to handle events in batches of 512.

.TP 2
\-
If you have saved event traces in blktrace with different output names (via
the \fB\-o\fR option to blktrace), you must specify the same input name via the
\fB\-i\fR option.

.TP 2
\-
The format of the output data can be controlled via the \fB\-f\fR or \fB\-F\fR
options \-\- see OUTPUT DESCRIPTION AND FORMATTING for details.

.PP
By default, blkparse sends formatted data to standard output. This may
be changed via the \fB\-o\fR option, or text output can be disabled via the
\fB\-O\fR option. A merged binary stream can be produced using the \fB\-d\fR
option.



.SH OPTIONS

\-b \fIbatch\fR
.br
\-\-batch={batch}
.RS
Standard input read batching
.RE

\-i \fIfile\fR
.br
\-\-input=\fIfile\fR
.RS
Specifies base name for input files \-\- default is \fIdevice\fR.blktrace.\fIcpu\fR.

As noted above, specifying \fB\-i \-\fR runs in live mode with blktrace
(reading data from standard in).
.RE

\-F \fItyp,fmt\fR
.br
\-\-format=\fItyp,fmt\fR
.br
\-f \fIfmt\fR
.br
\-\-format\-spec=\fIfmt\fR
.RS
Sets output format
(See OUTPUT DESCRIPTION AND FORMATTING for details.)

The \-f form specifies a format for all events

The \-F form allows one to specify a format for a specific
event type. The single\-character \fItyp\fR field is one of the
action specifiers described in ACTION IDENTIFIERS.
.RE

\-M
.br
\-\-no-msgs
.RS
When \-d is specified, this will stop messages from being output to the
file. (Can seriously reduce the size of the resultant file when using
the CFQ I/O scheduler.)
.RE

\-h
.br
\-\-hash\-by\-name
.RS
Hash processes by name, not by PID
.RE

\-o \fIfile\fR
.br
\-\-output=\fIfile\fR
.RS
Output file
.RE

\-O
.br
\-\-no\-text\-output
.RS
Do \fInot\fR produce text output, used for binary (\fB\-d\fR) only
.RE

\-d \fIfile\fR
.br
\-\-dump\-binary=\fIfile\fR
.RS
Binary output file
.RE

\-q
.br
\-\-quiet
.RS
Quiet mode
.RE

\-s
.br
\-\-per\-program\-stats
.RS
Displays data sorted by program
.RE

\-t
.br
\-\-track\-ios
.RS
Display time deltas per IO
.RE

\-w \fIspan\fR
.br
\-\-stopwatch=\fIspan\fR
.RS
Display traces for the \fIspan\fR specified \-\- where span can be:
.br
\fIend\-time\fR \-\- Display traces from time 0 through \fIend\-time\fR (in ns)
.br
or
.br
\fIstart:end\-time\fR \-\- Display traces from time \fIstart\fR
through end\-time (in ns).
.RE

\-v
.br
\-\-verbose
.RS
More verbose marginal on marginal errors
.RE

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


.SH "TRACE ACTIONS"
The following trace actions are recognised:

.HP 4
\fBC -- complete\fR
A previously issued request has been completed.  The output will detail the
sector and size of that request, as well as the success or failure of it.

.HP 4
\fBD -- issued\fR
A request that previously resided on the block layer queue or in the i/o
scheduler has been sent to the driver.

.HP 4
\fBI -- inserted\fR
A request is being sent to the i/o scheduler for addition to the internal queue
and later service by the driver. The request is fully formed at this time.

.HP 4
\fBQ -- queued\fR
This notes intent to queue i/o at the given location.  No real requests exists
yet.

.HP 4
\fBB -- bounced\fR
The data pages attached to this \fIbio\fR are not reachable by the hardware
and must be bounced to a lower memory location. This causes a big slowdown in
i/o performance, since the data must be copied to/from kernel buffers. Usually
this can be fixed with using better hardware -- either a better i/o controller,
or a platform with an IOMMU.

.HP 4
\fBM -- back merge\fR
A previously inserted request exists that ends on the boundary of where this i/o
begins, so the i/o scheduler can merge them together.

.HP 4
\fBF -- front merge\fR
Same as the back merge, except this i/o ends where a previously inserted
requests starts.

.HP 4
\fBM --front or back merge\fR
One of the above

.HP 4
\fBM -- front or back merge\fR
One of the above.

.HP 4
\fBG -- get request\fR
To send any type of request to a block device, a \fIstruct request\fR
container must be allocated first.

.HP 4
\fBS -- sleep\fR
No available request structures were available, so the issuer has to wait for
one to be freed.

.HP 4
\fBP -- plug\fR
When i/o is queued to a previously empty block device queue, Linux will plug the
queue in anticipation of future ios being added before this data is needed.

.HP 4
\fBU -- unplug\fR
Some request data already queued in the device, start sending requests to the
driver. This may happen automatically if a timeout period has passed (see next
entry) or if a number of requests have been added to the queue.

.HP 4
\fBT -- unplug due to timer\fR
If nobody requests the i/o that was queued after plugging the queue, Linux will
automatically unplug it after a defined period has passed.

.HP 4
\fBX -- split\fR
On raid or device mapper setups, an incoming i/o may straddle a device or
internal zone and needs to be chopped up into smaller pieces for service. This
may indicate a performance problem due to a bad setup of that raid/dm device,
but may also just be part of normal boundary conditions. dm is notably bad at
this and will clone lots of i/o.

.HP 4
\fBA -- remap\fR
For stacked devices, incoming i/o is remapped to device below it in the i/o
stack. The remap action details what exactly is being remapped to what.




.SH "OUTPUT DESCRIPTION AND FORMATTING"

The output from blkparse can be tailored for specific use -- in particular, to ease
parsing of output, and/or limit output fields to those the user wants to see. The
data for fields which can be output include:

.IP \fBa\fR 4
Action, a (small) string (1 or 2 characters) -- see table below for more details

.IP \fBc\fR 4
CPU id

.IP \fBC\fR 4
Command

.IP \fBd\fR 4
RWBS field, a (small) string (1-3 characters)  -- see section below for more details

.IP \fBD\fR 4
7-character string containing the major and minor numbers of
the event's device (separated by a comma).

.IP \fBe\fR 4
Error value

.IP \fBm\fR 4
Minor number of event's device.

.IP \fBM\fR 4
Major number of event's device.

.IP \fBn\fR 4
Number of blocks

.IP \fBN\fR 4
Number of bytes

.IP \fBp\fR 4
Process ID

.IP \fBP\fR 4
Display packet data \-\- series of hexadecimal values

.IP \fBs\fR 4
Sequence numbers

.IP \fBS\fR 4
Sector number

.IP \fBt\fR 4
Time stamp (nanoseconds)

.IP \fBT\fR 4
Time stamp (seconds)

.IP \fBu\fR 4
Elapsed value in microseconds (\fI\-t\fR command line option)

.IP \fBU\fR 4
Payload unsigned integer

.PP
Note that the user can optionally specify field display width, and optionally a
left-aligned specifier. These precede field specifiers, with a '%' character,
followed by the optional left-alignment specifier (\-) followed by the width (a
decimal number) and then the field.

Thus, to specify the command in a 12-character field that is left aligned:

    \-f "%\-12C"


.SH "ACTION IDENTIFIERS"

The following table shows the various actions which may be output:

.IP A
IO was remapped to a different device

.IP B
IO bounced

.IP C
IO completion

.IP D
IO issued to driver

.IP F
IO front merged with request on queue

.IP G
Get request

.IP I
IO inserted onto request queue

.IP M
IO back merged with request on queue

.IP P
Plug request

.IP Q
IO handled by request queue code

.IP S
Sleep request

.IP T
Unplug due to timeout

.IP U
Unplug request

.IP X
Split


.SH "RWBS DESCRIPTION"

This is a small string containing at least one character ('R' for read, 'W'
for write, or 'D' for block discard operation), and optionally either
a 'B' (for barrier operations) or 'S' (for synchronous operations).


.SH "DEFAULT OUTPUT"

The standard header (or initial fields displayed) include:

    "%D %2c %8s %5T.%9t %5p %2a %3d"

Breaking this down:

.IP \fB%D\fR
Displays the event's device major/minor as: %3d,%\-3d.

.IP \fB%2c\fR
CPU ID (2-character field).

.IP \fB%8s\fR
Sequence number

.IP \fB%5T.%9t\fR
5-character field for the seconds portion of the time stamp and a 9-character field for the nanoseconds in the time stamp.

.IP \fB%5p\fR
5-character field for the process ID.

.IP \fB%2a\fR
2-character field for one of the actions.

.IP \fB%3d\fR
3-character field for the RWBS data.

Seeing this in action:

    8,0    3        1     0.000000000   697  G   W 223490 + 8 [kjournald]

The header is the data in this line up to the 223490 (starting block).
The default output for all event types includes this header.



.SH "DEFAULT OUTPUT PER ACTION"

\fBC \-\- complete\fR
.RS 4
If a payload is present, this is presented between
parenthesis following the header, followed by the error value.

If no payload is present, the sector and number of blocks are presented
(with an intervening plus (+) character). If the \fB\-t\fR option
was specified, then the elapsed time is presented. In either case,
it is followed by the error value for the completion.
.RE

\fBB \-\- bounced\fR
.br
\fBD \-\- issued\fR
.br
\fBI \-\- inserted\fR
.br
\fBQ \-\- queued\fR
.RS 4
If a payload is present, the number of payload bytes
is output, followed by the payload in hexadecimal between parenthesis.

If no payload is present, the sector and number of blocks are presented
(with an intervening plus (+) character). If the \fB\-t\fR option was
specified, then the elapsed time is presented (in parenthesis). In
either case, it is followed by the command associated with the event
(surrounded by square brackets).
.RE

\fBF \-\- front merge\fR
.br
\fBG \-\- get request\fR
.br
\fBM \-\- back merge\fR
.br
\fBS \-\- sleep\fR
.RS 4
The starting sector and number of blocks is output
(with an intervening plus (+) character), followed by the command
associated with the event (surrounded by square brackets).
.RE

\fBP \-\- plug\fR
.RS 4
The command associated with the event (surrounded by
square brackets) is output.
.RE

\fBU \-\- unplug\fR
.br
\fBT \-\- unplug due to timer\fR
.RS 4
The command associated with the event
(surrounded by square brackets) is output, followed by the number of
requests outstanding.
.RE

\fBX \-\- split\fR
.RS 4
The original starting sector followed by the new
sector (separated by a slash (/) is output, followed by the command
associated with the event (surrounded by square brackets).
.RE

\fBA \-\- remap\fR
.RS 4
Sector and length is output, along with the original
device and sector offset.
.RE


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

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

(see \fIblktrace\fR (8) for more information).
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. 


.SH AUTHORS
\fIblkparse\fR was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
man page was created from the \fIblktrace\fR 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), blktrace (8), verify_blkparse (1), blkrawverify (1), btt (1)

