xref: /aosp_15_r20/external/blktrace/README (revision 1a3d31e37cc95e9919fd86900a2b6a555f55952c)
1*1a3d31e3SAndroid Build Coastguard WorkerBlock IO Tracing
2*1a3d31e3SAndroid Build Coastguard Worker----------------
3*1a3d31e3SAndroid Build Coastguard Worker
4*1a3d31e3SAndroid Build Coastguard WorkerWritten by Jens Axboe <[email protected]> (initial version and kernel support),
5*1a3d31e3SAndroid Build Coastguard WorkerAlan D. Brunelle (threading and splitup into two seperate programs),
6*1a3d31e3SAndroid Build Coastguard WorkerNathan Scott <[email protected]> (bug fixes, process names, multiple devices)
7*1a3d31e3SAndroid Build Coastguard WorkerAlso thanks to Tom Zanussi <[email protected]> for good input and
8*1a3d31e3SAndroid Build Coastguard Workerpatches.
9*1a3d31e3SAndroid Build Coastguard Worker
10*1a3d31e3SAndroid Build Coastguard Worker
11*1a3d31e3SAndroid Build Coastguard WorkerRequirements
12*1a3d31e3SAndroid Build Coastguard Worker------------
13*1a3d31e3SAndroid Build Coastguard Worker
14*1a3d31e3SAndroid Build Coastguard Workerblktrace was integrated into the mainline kernel between 2.6.16 and 2.6.17-rc1.
15*1a3d31e3SAndroid Build Coastguard WorkerThe target trace needs to run on a kernel at least that new.
16*1a3d31e3SAndroid Build Coastguard Worker
17*1a3d31e3SAndroid Build Coastguard Workergit://git.kernel.dk/blktrace.git
18*1a3d31e3SAndroid Build Coastguard Worker
19*1a3d31e3SAndroid Build Coastguard WorkerIf you don't have git, you can get hourly snapshots from:
20*1a3d31e3SAndroid Build Coastguard Worker
21*1a3d31e3SAndroid Build Coastguard Workerhttp://brick.kernel.dk/snaps/
22*1a3d31e3SAndroid Build Coastguard Worker
23*1a3d31e3SAndroid Build Coastguard WorkerThe snapshots include the full git object database as well. kernel.org has
24*1a3d31e3SAndroid Build Coastguard Workerexcessively long mirror times, so if you have git installed, you can pull
25*1a3d31e3SAndroid Build Coastguard Workerthe master tree from:
26*1a3d31e3SAndroid Build Coastguard Worker
27*1a3d31e3SAndroid Build Coastguard Workergit://git.kernel.dk/blktrace.git
28*1a3d31e3SAndroid Build Coastguard Worker
29*1a3d31e3SAndroid Build Coastguard WorkerFor browsing the repo over http and viewing history etc, you can direct
30*1a3d31e3SAndroid Build Coastguard Workeryour browser to:
31*1a3d31e3SAndroid Build Coastguard Worker
32*1a3d31e3SAndroid Build Coastguard Workerhttp://git.kernel.dk/
33*1a3d31e3SAndroid Build Coastguard Worker
34*1a3d31e3SAndroid Build Coastguard WorkerA blktrace visualization tool, iowatcher, was added to blktrace in version
35*1a3d31e3SAndroid Build Coastguard Worker1.1.0. It requires librsvg and either png2theora or ffmpeg to generate movies.
36*1a3d31e3SAndroid Build Coastguard Worker
37*1a3d31e3SAndroid Build Coastguard WorkerUsage
38*1a3d31e3SAndroid Build Coastguard Worker-----
39*1a3d31e3SAndroid Build Coastguard Worker
40*1a3d31e3SAndroid Build Coastguard Worker$ blktrace -d <dev> [ -r debug_path ] [ -o output ] [ -k ] [ -w time ]
41*1a3d31e3SAndroid Build Coastguard Worker		    [ -a action ] [ -A action mask ]
42*1a3d31e3SAndroid Build Coastguard Worker
43*1a3d31e3SAndroid Build Coastguard Worker	-d Use specified device. May also be given last after options.
44*1a3d31e3SAndroid Build Coastguard Worker	-r Path to mounted debugfs, defaults to /sys/kernel/debug.
45*1a3d31e3SAndroid Build Coastguard Worker	-o File(s) to send output to.
46*1a3d31e3SAndroid Build Coastguard Worker	-D Directory to prepend to output file names.
47*1a3d31e3SAndroid Build Coastguard Worker	-k Kill running trace.
48*1a3d31e3SAndroid Build Coastguard Worker	-w Stop after defined time, in seconds.
49*1a3d31e3SAndroid Build Coastguard Worker	-a Only trace specific actions (use more -a options to add actions).
50*1a3d31e3SAndroid Build Coastguard Worker	   Available actions are:
51*1a3d31e3SAndroid Build Coastguard Worker
52*1a3d31e3SAndroid Build Coastguard Worker		READ
53*1a3d31e3SAndroid Build Coastguard Worker		WRITE
54*1a3d31e3SAndroid Build Coastguard Worker		BARRIER
55*1a3d31e3SAndroid Build Coastguard Worker		SYNC
56*1a3d31e3SAndroid Build Coastguard Worker		QUEUE
57*1a3d31e3SAndroid Build Coastguard Worker		REQUEUE
58*1a3d31e3SAndroid Build Coastguard Worker		ISSUE
59*1a3d31e3SAndroid Build Coastguard Worker		COMPLETE
60*1a3d31e3SAndroid Build Coastguard Worker		FS
61*1a3d31e3SAndroid Build Coastguard Worker		PC
62*1a3d31e3SAndroid Build Coastguard Worker
63*1a3d31e3SAndroid Build Coastguard Worker	-A Give the trace mask directly as a number.
64*1a3d31e3SAndroid Build Coastguard Worker
65*1a3d31e3SAndroid Build Coastguard Worker	-b Sub buffer size in KiB.
66*1a3d31e3SAndroid Build Coastguard Worker	-n Number of sub buffers.
67*1a3d31e3SAndroid Build Coastguard Worker	-l Run in network listen mode (blktrace server)
68*1a3d31e3SAndroid Build Coastguard Worker	-h Run in network client mode, connecting to the given host
69*1a3d31e3SAndroid Build Coastguard Worker	-p Network port to use (default 8462)
70*1a3d31e3SAndroid Build Coastguard Worker	-s Disable network client use of sendfile() to transfer data
71*1a3d31e3SAndroid Build Coastguard Worker	-V Print program version info.
72*1a3d31e3SAndroid Build Coastguard Worker
73*1a3d31e3SAndroid Build Coastguard Worker$ blkparse -i <input> [ -o <output> ] [ -b rb_batch ] [ -s ] [ -t ] [ -q ]
74*1a3d31e3SAndroid Build Coastguard Worker		      [ -w start:stop ] [ -f output format ] [ -F format spec ]
75*1a3d31e3SAndroid Build Coastguard Worker		      [ -d <binary> ]
76*1a3d31e3SAndroid Build Coastguard Worker
77*1a3d31e3SAndroid Build Coastguard Worker	-i Input file containing trace data, or '-' for stdin.
78*1a3d31e3SAndroid Build Coastguard Worker	-D Directory to prepend to input file names.
79*1a3d31e3SAndroid Build Coastguard Worker	-o Output file. If not given, output is stdout.
80*1a3d31e3SAndroid Build Coastguard Worker	-b stdin read batching.
81*1a3d31e3SAndroid Build Coastguard Worker	-s Show per-program io statistics.
82*1a3d31e3SAndroid Build Coastguard Worker	-h Hash processes by name, not pid.
83*1a3d31e3SAndroid Build Coastguard Worker	-t Track individual ios. Will tell you the time a request took to
84*1a3d31e3SAndroid Build Coastguard Worker	   get queued, to get dispatched, and to get completed.
85*1a3d31e3SAndroid Build Coastguard Worker	-q Quiet. Don't display any stats at the end of the trace.
86*1a3d31e3SAndroid Build Coastguard Worker	-w Only parse data between the given time interval in seconds. If
87*1a3d31e3SAndroid Build Coastguard Worker	   'start' isn't given, blkparse defaults the start time to 0.
88*1a3d31e3SAndroid Build Coastguard Worker	-d Dump sorted data in binary format
89*1a3d31e3SAndroid Build Coastguard Worker	-f Output format. Customize the output format. The format field
90*1a3d31e3SAndroid Build Coastguard Worker	   identifiers are:
91*1a3d31e3SAndroid Build Coastguard Worker
92*1a3d31e3SAndroid Build Coastguard Worker		%a	- Action
93*1a3d31e3SAndroid Build Coastguard Worker		%c	- CPU ID
94*1a3d31e3SAndroid Build Coastguard Worker		%C	- Task command (process) name
95*1a3d31e3SAndroid Build Coastguard Worker		%d	- Direction (r/w)
96*1a3d31e3SAndroid Build Coastguard Worker		%D	- Device number
97*1a3d31e3SAndroid Build Coastguard Worker		%e	- Error number
98*1a3d31e3SAndroid Build Coastguard Worker		%M	- Major
99*1a3d31e3SAndroid Build Coastguard Worker		%m	- Minor
100*1a3d31e3SAndroid Build Coastguard Worker		%N	- Number of bytes
101*1a3d31e3SAndroid Build Coastguard Worker		%n	- Number of sectors
102*1a3d31e3SAndroid Build Coastguard Worker		%p	- PID
103*1a3d31e3SAndroid Build Coastguard Worker		%P	- PDU
104*1a3d31e3SAndroid Build Coastguard Worker		%s	- Sequence number
105*1a3d31e3SAndroid Build Coastguard Worker		%S	- Sector number
106*1a3d31e3SAndroid Build Coastguard Worker		%t	- Time (wallclock - nanoseconds)
107*1a3d31e3SAndroid Build Coastguard Worker		%T	- Time (wallclock - seconds)
108*1a3d31e3SAndroid Build Coastguard Worker		%u	- Time (processing - microseconds)
109*1a3d31e3SAndroid Build Coastguard Worker		%U	- Unplug depth
110*1a3d31e3SAndroid Build Coastguard Worker
111*1a3d31e3SAndroid Build Coastguard Worker	-F Format specification. The individual specifiers are:
112*1a3d31e3SAndroid Build Coastguard Worker
113*1a3d31e3SAndroid Build Coastguard Worker		A	- Remap
114*1a3d31e3SAndroid Build Coastguard Worker		B	- Bounce
115*1a3d31e3SAndroid Build Coastguard Worker		C	- Complete
116*1a3d31e3SAndroid Build Coastguard Worker		D	- Issue
117*1a3d31e3SAndroid Build Coastguard Worker		M	- Back merge
118*1a3d31e3SAndroid Build Coastguard Worker		F	- Front merge
119*1a3d31e3SAndroid Build Coastguard Worker		G	- Get request
120*1a3d31e3SAndroid Build Coastguard Worker		I	- Insert
121*1a3d31e3SAndroid Build Coastguard Worker		P	- Plug
122*1a3d31e3SAndroid Build Coastguard Worker		Q	- Queue
123*1a3d31e3SAndroid Build Coastguard Worker		R	- Requeue
124*1a3d31e3SAndroid Build Coastguard Worker		S	- Sleep requests
125*1a3d31e3SAndroid Build Coastguard Worker		T	- Unplug timer
126*1a3d31e3SAndroid Build Coastguard Worker		U	- Unplug IO
127*1a3d31e3SAndroid Build Coastguard Worker		W	- Bounce
128*1a3d31e3SAndroid Build Coastguard Worker		X	- Split
129*1a3d31e3SAndroid Build Coastguard Worker
130*1a3d31e3SAndroid Build Coastguard Worker	-v More verbose for marginal errors.
131*1a3d31e3SAndroid Build Coastguard Worker	-V Print program version info.
132*1a3d31e3SAndroid Build Coastguard Worker
133*1a3d31e3SAndroid Build Coastguard Worker$ verify_blkparse filename
134*1a3d31e3SAndroid Build Coastguard Worker
135*1a3d31e3SAndroid Build Coastguard Worker	Verifies an output file from blkparse. All it does is check if
136*1a3d31e3SAndroid Build Coastguard Worker	the events in the file are correctly time ordered. If an entry
137*1a3d31e3SAndroid Build Coastguard Worker	is found that isn't ordered, it's dumped to stdout.
138*1a3d31e3SAndroid Build Coastguard Worker
139*1a3d31e3SAndroid Build Coastguard Worker$ blkrawverify <dev> [<dev>...]
140*1a3d31e3SAndroid Build Coastguard Worker
141*1a3d31e3SAndroid Build Coastguard Worker	The blkrawverify utility can be used to verify data retrieved
142*1a3d31e3SAndroid Build Coastguard Worker	via blktrace. It will check for valid event formats, forward
143*1a3d31e3SAndroid Build Coastguard Worker	progressing sequence numbers and time stamps, also does reasonable
144*1a3d31e3SAndroid Build Coastguard Worker	checks for other potential issues within invidividual events.
145*1a3d31e3SAndroid Build Coastguard Worker
146*1a3d31e3SAndroid Build Coastguard Worker	Errors found will be tracked in <dev>.verify.out.
147*1a3d31e3SAndroid Build Coastguard Worker
148*1a3d31e3SAndroid Build Coastguard WorkerIf you want to do live tracing, you can pipe the data between blktrace
149*1a3d31e3SAndroid Build Coastguard Workerand blkparse:
150*1a3d31e3SAndroid Build Coastguard Worker
151*1a3d31e3SAndroid Build Coastguard Worker% blktrace -d <device> -o - | blkparse -i -
152*1a3d31e3SAndroid Build Coastguard Worker
153*1a3d31e3SAndroid Build Coastguard WorkerThis has a small risk of displaying some traces a little out of sync, since
154*1a3d31e3SAndroid Build Coastguard Workerit will do batch sorts of input events. Similarly, you can do traces over
155*1a3d31e3SAndroid Build Coastguard Workerthe network. The network 'server' must run:
156*1a3d31e3SAndroid Build Coastguard Worker
157*1a3d31e3SAndroid Build Coastguard Worker% blktrace -l
158*1a3d31e3SAndroid Build Coastguard Worker
159*1a3d31e3SAndroid Build Coastguard Workerto listen to incoming blktrace connections, while the client should use
160*1a3d31e3SAndroid Build Coastguard Worker
161*1a3d31e3SAndroid Build Coastguard Worker% blktrace -d /dev/sda -h <server hostname>
162*1a3d31e3SAndroid Build Coastguard Worker
163*1a3d31e3SAndroid Build Coastguard Workerto connect and transfer data over the network.
164*1a3d31e3SAndroid Build Coastguard Worker
165*1a3d31e3SAndroid Build Coastguard Worker
166*1a3d31e3SAndroid Build Coastguard WorkerDocumentation
167*1a3d31e3SAndroid Build Coastguard Worker-------------
168*1a3d31e3SAndroid Build Coastguard Worker
169*1a3d31e3SAndroid Build Coastguard WorkerA users guide is distributed with the source. It is in latex, a
170*1a3d31e3SAndroid Build Coastguard Worker'make docs' will build a PDF in doc/. You need tetex and latex installed
171*1a3d31e3SAndroid Build Coastguard Workerto build the document.
172*1a3d31e3SAndroid Build Coastguard Worker
173*1a3d31e3SAndroid Build Coastguard Worker
174*1a3d31e3SAndroid Build Coastguard WorkerResources
175*1a3d31e3SAndroid Build Coastguard Worker---------
176*1a3d31e3SAndroid Build Coastguard Worker
177*1a3d31e3SAndroid Build Coastguard Workervger hosts a mailing list dedicated to btrace discussion and development.
178*1a3d31e3SAndroid Build Coastguard WorkerThe list is called [email protected], subscribe by sending
179*1a3d31e3SAndroid Build Coastguard Workera mail to [email protected] with 'subscribe linux-btrace' in
180*1a3d31e3SAndroid Build Coastguard Workerthe mail body.
181*1a3d31e3SAndroid Build Coastguard Worker
182*1a3d31e3SAndroid Build Coastguard Worker
183*1a3d31e3SAndroid Build Coastguard Worker
184*1a3d31e3SAndroid Build Coastguard Worker2006-09-05, Jens Axboe <[email protected]>
185*1a3d31e3SAndroid Build Coastguard Worker
186