GitXplorerGitXplorer
a

blktrace

public
4 stars
0 forks
0 issues

Commits

List of commits on branch develop.
Unverified
3726f669cd305741e35ae759e0b21f3b04084e4e

blktrace bno_plot.py: output comprehensive message when gnuplot not found

EEtsukata committed 11 years ago
Unverified
0a915aabe88ff98786a88f30d2e062ef34d0826c

blktrace blkreplay: convert to use a dynamic cpu_set_t

committed 12 years ago
Unverified
67313d8f411fe08f3f8a0c94ad2cf45bf569f0f8

blktrace: use number of configured cpus instead of online cpus

committed 12 years ago
Unverified
fb69749415ae2bd7c3180605d01a5a39f3bd988f

btreplay: use sysconf to get the number of configured cpus

committed 12 years ago
Unverified
0c2df13d11dd91a1c3933dcc8faa98f2b59a5793

btreplay: Machines are now large enough that holes need to be dealt with

committed 12 years ago
Unverified
28fa9f69a23f70e4371fb483beb2d4881dbd074d

verify_blkparse: Change max_cpus to deal with systems larger the 512

committed 12 years ago

README

The README file for this repository.

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 [ -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 [ -o ] [ -b rb_batch ] [ -s ] [ -t ] [ -q ] [ -w start:stop ] [ -f output format ] [ -F format spec ] [ -d ]

-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 [...]

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

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