Block IO Tracing
----------------

Written by Jens Axboe <axboe@kernel.dk> (initial version and kernel support),
Alan D. Brunelle (threading and splitup into two seperate programs),
Nathan Scott <nathans@sgi.com> (bug fixes, process names, multiple devices)
Also thanks to Tom Zanussi <zanussi@us.ibm.com> for good input and
patches.


Requirements
------------

blktrace was integrated into the mainline kernel between 2.6.16 and 2.6.17-rc1.
The target trace needs to run on a kernel at least that new.

git://git.kernel.dk/blktrace.git

If you don't have git, you can get hourly snapshots from:

http://brick.kernel.dk/snaps/

The snapshots include the full git object database as well. kernel.org has
excessively long mirror times, so if you have git installed, you can pull
the master tree from:

git://git.kernel.dk/blktrace.git

For browsing the repo over http and viewing history etc, you can direct
your browser to:

http://git.kernel.dk/


Usage
-----

$ blktrace -d <dev> [ -r debug_path ] [ -o output ] [ -k ] [ -w time ]
		    [ -a action ] [ -A action mask ]

	-d Use specified device. May also be given last after options.
	-r Path to mounted debugfs, defaults to /sys/kernel/debug.
	-o File(s) to send output to.
	-D Directory to prepend to output file names.
	-k Kill running trace.
	-w Stop after defined time, in seconds.
	-a Only trace specific actions (use more -a options to add actions).
	   Available actions are:

		READ
		WRITE
		BARRIER
		SYNC
		QUEUE
		REQUEUE
		ISSUE
		COMPLETE
		FS
		PC

	-A Give the trace mask directly as a number.

	-b Sub buffer size in KiB.
	-n Number of sub buffers.
	-l Run in network listen mode (blktrace server)
	-h Run in network client mode, connecting to the given host
	-p Network port to use (default 8462)
	-s Disable network client use of sendfile() to transfer data
	-V Print program version info.

$ blkparse -i <input> [ -o <output> ] [ -b rb_batch ] [ -s ] [ -t ] [ -q ]
		      [ -w start:stop ] [ -f output format ] [ -F format spec ]
		      [ -d <binary> ]

	-i Input file containing trace data, or '-' for stdin.
	-D Directory to prepend to input file names.
	-o Output file. If not given, output is stdout.
	-b stdin read batching.
	-s Show per-program io statistics.
	-h Hash processes by name, not pid.
	-t Track individual ios. Will tell you the time a request took to
	   get queued, to get dispatched, and to get completed.
	-q Quiet. Don't display any stats at the end of the trace.
	-w Only parse data between the given time interval in seconds. If
	   'start' isn't given, blkparse defaults the start time to 0.
	-d Dump sorted data in binary format
	-f Output format. Customize the output format. The format field
	   identifiers are:

		%a	- Action
		%c	- CPU ID
		%C	- Task command (process) name
		%d	- Direction (r/w)
		%D	- Device number
		%e	- Error number
		%M	- Major
		%m	- Minor
		%N	- Number of bytes
		%n	- Number of sectors
		%p	- PID
		%P	- PDU
		%s	- Sequence number
		%S	- Sector number
		%t	- Time (wallclock - nanoseconds)
		%T	- Time (wallclock - seconds)
		%u	- Time (processing - microseconds)
		%U	- Unplug depth

	-F Format specification. The individual specifiers are:

		A	- Remap
		B	- Bounce
		C	- Complete
		D	- Issue
		M	- Back merge
		F	- Front merge
		G	- Get request
		I	- Insert
		P	- Plug
		Q	- Queue
		R	- Requeue
		S	- Sleep requests
		T	- Unplug timer
		U	- Unplug IO
		W	- Bounce
		X	- Split

	-v More verbose for marginal errors.
	-V Print program version info.

$ verify_blkparse filename

	Verifies an output file from blkparse. All it does is check if
	the events in the file are correctly time ordered. If an entry
	is found that isn't ordered, it's dumped to stdout.

$ blkrawverify <dev> [<dev>...]

	The blkrawverify utility can be used to verify data retrieved
	via blktrace. It will check for valid event formats, forward
	progressing sequence numbers and time stamps, also does reasonable
	checks for other potential issues within invidividual events.

	Errors found will be tracked in <dev>.verify.out.

If you want to do live tracing, you can pipe the data between blktrace
and blkparse:

% blktrace -d <device> -o - | blkparse -i -

This has a small risk of displaying some traces a little out of sync, since
it will do batch sorts of input events. Similarly, you can do traces over
the network. The network 'server' must run:

% blktrace -l

to listen to incoming blktrace connections, while the client should use

% blktrace -d /dev/sda -h <server hostname>

to connect and transfer data over the network.


Documentation
-------------

A users guide is distributed with the source. It is in latex, a
'make docs' will build a PDF in doc/. You need tetex and latex installed
to build the document.


Resources
---------

vger hosts a mailing list dedicated to btrace discussion and development.
The list is called linux-btrace@vger.kernel.org, subscribe by sending
a mail to majordomo@vger.kernel.org with 'subscribe linux-btrace' in
the mail body.



2006-09-05, Jens Axboe <axboe@kernel.dk>

