blob: 28cf912d2ebbba7c32e03db0b20e5b54c8f15f0a [file] [log] [blame]
San Mehate20e1342009-06-03 15:36:35 -07001.TH BTT 1 "September 29, 2007" "blktrace git\-20070910192508" ""
2
3
4.SH NAME
5btt \- analyse block i/o traces produces by blktrace
6
7
8.SH SYNOPSIS
9.B btt
10.br
11[ \-a | \-\-seek\-absolute ]
12.br
13[ \-A | \-\-all\-data ]
14.br
15[ \-B <\fIoutput name\fR> | \-\-dump\-blocknos=<\fIoutput name\fR> ]
16.br
17[ \-d <\fIseconds\fR> | \-\-range\-delta=<\fIseconds\fR> ]
18.br
19[ \-D <\fIdev;...\fR> | \-\-devices=<\fIdev;...\fR> ]
20.br
21[ \-e <\fIexe,...\fR> | \-\-exes=<\fIexe,...\fR> ]
22.br
23[ \-h | \-\-help ]
24.br
25[ \-i <\fIinput name\fR> | \-\-input\-file=<\fIinput name\fR> ]
26.br
27[ \-I <\fIoutput name\fR> | \-\-iostat=<\fIoutput name\fR> ]
28.br
29[ \-l <\fIoutput name\fR> | \-\-d2c\-latencies=<\fIoutput name\fR> ]
30.br
31[ \-L <\fIfreq\fR> | \-\-periodic\-latencies=<\fIfreq\fR> ]
32.br
Wei Wangc80018f2018-08-29 14:04:30 -070033[ \-m <\fIoutput name\fR> | \-\-seeks\-per\-second=<\fIoutput name\fR> ]
34.br
San Mehate20e1342009-06-03 15:36:35 -070035[ \-M <\fIdev map\fR> | \-\-dev\-maps=<\fIdev map\fR>
36.br
37[ \-o <\fIoutput name\fR> | \-\-output\-file=<\fIoutput name\fR> ]
38.br
39[ \-p <\fIoutput name\fR> | \-\-per\-io\-dump=<\fIoutput name\fR> ]
40.br
41[ \-P <\fIoutput name\fR> | \-\-per\-io\-trees=<\fIoutput name\fR> ]
42.br
43[ \-q <\fIoutput name\fR> | \-\-q2c\-latencies=<\fIoutput name\fR> ]
44.br
45[ \-Q <\fIoutput name\fR> | \-\-active\-queue\-depth=<\fIoutput name\fR> ]
46.br
47[ \-r | \-\-no\-remaps ]
48.br
49[ \-s <\fIoutput name\fR> | \-\-seeks=<\fIoutput name\fR> ]
50.br
51[ \-S <\fIinterval\fR> | \-\-iostat\-interval=<\fIinterval\fR> ]
52.br
53[ \-t <\fIsec\fR> | \-\-time\-start=<\fIsec\fR> ]
54.br
55[ \-T <\fIsec\fR> | \-\-time\-end=<\fIsec\fR> ]
56.br
57[ \-u <\fIoutput name\fR> | \-\-unplug\-hist=<\fIoutput name\fR> ]
58.br
59[ \-v | \-\-verbose ]
60.br
61[ \-V | \-\-version ]
62.br
Wei Wangc80018f2018-08-29 14:04:30 -070063[ \-X | \-\-easy\-parse\-avgs ]
64.br
San Mehate20e1342009-06-03 15:36:35 -070065[ \-z <\fIoutput name\fR> | \-\-q2d\-latencies=<\fIoutput name\fR> ]
Wei Wangc80018f2018-08-29 14:04:30 -070066.br
67[ \-Z | \-\-do\-active ]
San Mehate20e1342009-06-03 15:36:35 -070068
69
70.SH DESCRIPTION
71
72btt is a post\-processing tool for the block layer IO tracing tool called
73blktrace(8). As noted in its documentation, blktrace
74is a block layer IO tracing mechanism which provides detailed
75information about request queue operations up to user space.
76
77btt will take in binary dump data from blkparse, and analyse the events,
78producing a series of output from the analysis. It will also build .dat
79files containing "range data" \-\- showing things like Q activity (periods
80of time while Q events are being produced), C activity (likewise for
81command completions), and etc.
82
83Included with the distribution is a simple 3D plotting utility,
84\fIbno_plot\fR, which can plot the block numbers btt outputs if the \fI-B\fR
85option is specified. The display will display each IO generated, with the time
86(seconds) along the X-axis, the block number (start) along the Y-axis and the
87number of blocks transferred in the IO represented along the Z-axis.
88
89
90.SH OPTIONS
91
92.B \-a
93.br
94.B \-\-seek\-absolute
95.RS 4
96When specified on the command line, this directs btt to calculate
97seek distances based solely upon the ending block address of one IO,
98and the start of the next. By default \fBbtt\fR uses the concept
99of the closeness to either the beginning or end of the previous IO. See
100the Users Manual for more details about seek distances.
101.RE
102
103.B \-A
104.br
105.B \-\-all\-data
106.RS 4
107Normally \fBbtt\fR will not print out verbose information concerning
108per-process and per-device data. If you desire that level of detail you can
109specify this option.
110.RE
111
112.B \-B <\fIoutput name\fR>
113.br
114.B \-\-dump\-blocknos=<\fIoutput name\fR>
115.RS 4
116This option will output absolute block numbers to three files prefixed
117by the specified output name:
118.HP
119.I prefix_device_r.dat
120.br
121All read block numbers are output, first column is time (seconds), second is
122the block number, and the third column is the ending block number.
123.HP
124.I prefix_device_w.dat
125.br
126All write block numbers are output, first column is time (seconds), second is
127the block number, and the third column is the ending block number.
128.HP
129.I prefix_device_c.dat
130.br
131All block numbers (read and write) are output, first column is time (seconds),
132second is the block number, and the third column is the ending block number.
133.RE
134
135.B \-d <\fIseconds\fR>
136.br
137.B \-\-range\-delta=<\fIseconds\fR>
138.RS 4
139\fBbtt\fR outputs a file containing Q and C activity, the notion of active
140traces simply means that there are Q or C traces occurring within a certain
141period of each other. The default values is 0.1 seconds; with this option
142allowing one to change that granularity. The smaller the value, the more data
143points provided.
144.RE
145
146.B \-D <\fIdev;...\fR>
147.br
148.B \-\-devices=<\fIdev;...\fR>
149.RS 4
150Normally, \fBbtt\fR will produce data for all devices detected in the
151traces parsed. With this option, one can reduce the analysis to one or more
152devices provided in the string passed to this option. The device identifiers
153are the major and minor number of each device, and each device identifier is
154separated by a colon (:). A valid specifier for devices 8,0 and 8,8 would then
155be: \fI8,0:8,8\fR.
156.RE
157
158.B \-e <\fIexe,...\fR>
159.br
160.B \-\-exes=<\fIexe,...\fR>
161.RS 4
162The \-e option supplies the list of executables that will have I/Os
163analysed.
164.RE
165
166.B \-h
167.br
168.B \-\-help
169.RS 4
170Shows a short summary of possible command line option
171.RE
172
173.B \-i <\fIinput name\fR>
174.br
175.B \-\-input\-file <\fIinput file\fR>
176.RS 4
177Specifies the input file to analyse. This should be a trace file produced
178by \fIblktrace\fR (8).
179.RE
180
181.B \-I <\fIoutput name\fR>
182.br
183.B \-\-iostat=<\fIoutput name\fR>
184.RS 4
185The \-I option directs btt to output iostat\-like data to the specified
186file. Refer to the iostat (sysstat) documentation for details on the
187data columns.
188.RE
189
190.B \-l <\fIoutput name\fR>
191.br
192.B \-\-d2c\-latencies=<\fIoutput name\fR>
193.RS 4
194The \-l option allows one to output per\-IO D2C latencies
195respectively. The supplied argument provides the basis for the output
196name for each device.
197.RE
198
199.B \-L <\fIfreq\fR>
200.br
201.B \-\-periodic\-latencies=<\fIfreq\fR>
202.RS 4
203The \-L option allows one to output periodic latency information for both
204Q2C and D2C latencies. The frequency specified will regulate how often
205an average latency is output -- a floating point value expressing seconds.
206.RE
207
Wei Wangc80018f2018-08-29 14:04:30 -0700208.B \-m <\fIoutput name\fR>
209.br
210.B \-\-seeks\-per\-second=<\fIoutput name\fR>
211.RS 4
212Trigger btt to output seeks-per-second information. The first column will
213contain a time value (seconds), and the second column will indicate the
214number of seeks per second at that point.
215.RE
216
San Mehate20e1342009-06-03 15:36:35 -0700217.B \-M <\fIdev map\fR>
218.br
219.B \-\-dev\-maps=<\fIdev map\fR>
220.RS 4
221The \-M option takes in a file generated by the provided script
222(gen_disk_info.py), and allows for better output of device names.
223.RE
224
225.B \-o <\fIoutput name\fR>
226.br
227.B \-\-output\-file=<\fIoutput name\fR>
228.RS 4
229Specifies the output file name.
230.RE
231
232.B \-p <\fIoutput name\fR>
233.br
234.B \-\-per\-io\-dump=<\fIoutput name\fR>
235.RS 4
236The \-p option will generate a file that contains a list of all IO
237"sequences" \- showing the parts of each IO (Q, A, I/M, D, & C).
238.RE
239
240.B \-P <\fIoutput name\fR>
241.br
242.B \-\-per\-io\-trees=<\fIoutput name\fR>
243.RS 4
244The \-P option will generate a file that contains a list of all IO
245"sequences" \- showing only the Q, D & C operation times. The D & C
246time values are separated from the Q time values with a vertical bar.
247.RE
248
249.B \-q <\fIoutput name\fR>
250.br
251.B \-\-q2c\-latencies=<\fIoutput name\fR>
252.RS 4
253The \-q option allows one to output per\-IO Q2C latencies
254respectively. The supplied argument provides the basis for the output
255name for each device.
256.RE
257
258.B \-Q <\fIoutput name\fR>
259.br
260.B \-\-active\-queue\-depth=<\fIoutput name\fR>
261.RS 4
262The \-Q option allows one to output data files showing the time stamp
263and the depth of active commands (those issued but not completed).
264.RE
265
266.B \-r
267.br
268.B \-\-no\-remaps
269.RS 4
270Ignore remap traces; older kernels did not implement the full remap
271PDU.
272.RE
273
274.B \-s <\fIoutput name\fR>
275.br
276.B \-\-seeks=<\fIoutput name\fR>
277.RS 4
278The \-s option instructs btt to output seek data, the argument provided
279is the basis for file names output. There are two files per device,
280read seeks and write seeks.
281.RE
282
283.B \-S <\fIinterval\fR>
284.br
285.B \-\-iostat\-interval=<\fIinterval\fR>
286.RS 4
287The \-S option specifies the interval to use between data
288output, it defaults to once per second.
289.RE
290
291.B \-t <\fIsec\fR>
292.br
293.B \-\-time\-start=<\fIsec\fR>
294.br
295.B \-T <\fIsec\fR>
296.br
297.B \-\-time\-end=<\fIsec\fR>
298.RS 4
299The \-t/\-T options allow one to set a start and/or end time for analysing
300\- analysing will only be done for traces after \-t's argument and before
301\-T's argument. (\-t and \-T are optional, so if you specify just \-t,
302analysis will occur for all traces after the time specified. Similarly,
303if only \-T is specified, analysis stops after \-T's seconds.)
304.RE
305
306.B \-u <\fIoutput name\fR>
307.br
308.B \-\-unplug\-hist=<\fIoutput name\fR>
309.RS 4
310This option instructs \fBbtt\fR to generate a data file containing histogram
311information for unplug traces on a per device basis. It shows how many
312times an unplug was hit with a specified number of IOs released. There are 21
313output values into the file, as follows:
314
315.RS 4
316a value of 0 represents 0..4 counts
317.br
318a value of 1 represents 5..9 counts
319.br
320a value of 2 represents 10..14 counts
321.br
322etc, until
323.br
324a value of 20 represents 100+ counts
325.br
326.RE
327
328The file name(s) generated use the text string passed as an argument for
329the prefix, followed by the device identifier in \fImajor,minor\fR
330form, with a \fI.dat\fR extension. For example, with \fI\-u
331up_hist\fR specified on the command line: \fIup_hist_008,032.dat\fR.
332.RE
333
334.B \-V
335.br
336.B \-\-version
337.RS 4
338Shows the version of btt.
339.RE
340
341.B \-v
342.br
343.B \-\-verbose
344.RS 4
345Requests a more verbose output.
346.RE
347
Wei Wangc80018f2018-08-29 14:04:30 -0700348.B \-X
349.br
350.B \-\-easy\-parse\-avgs
351.RS 4
352Provide data in an easy-to-parse form and write it to a file
353with .avg exentsion
354.RE
355
San Mehate20e1342009-06-03 15:36:35 -0700356.B \-z <\fIoutput name\fR>
357.br
358.B \-\-q2d\-latencies=<\fIoutput name\fR>
359.RS 4
360The \-z option allows one to output per\-IO Q2D latencies
361respectively. The supplied argument provides the basis for the output
362name for each device.
363.RE
364
Wei Wangc80018f2018-08-29 14:04:30 -0700365.B \-Z
366.br
367.B \-\-do\-active
368.RS 4
369The \-Z will output files containing data which can be plotted showing
370per\-device (and total system) I/O activity.
371.RE
372
San Mehate20e1342009-06-03 15:36:35 -0700373
374.SH AUTHORS
375\fIbtt\fR was written by Alan D. Brunelle. This man page was created
376from the \fIblktrace\fR documentation by Bas Zoetekouw.
377
378
379.SH "REPORTING BUGS"
380Report bugs to <linux\-btrace@vger.kernel.org>
381
382.SH COPYRIGHT
383Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
384.br
385This is free software. You may redistribute copies of it under the terms of
386the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
387There is NO WARRANTY, to the extent permitted by law.
388.br
389This manual page was created for Debian by Bas Zoetekouw. It was derived from
390the documentation provided by the authors and it may be used, distributed and
391modified under the terms of the GNU General Public License, version 2.
392.br
393On Debian systems, the text of the GNU General Public License can be found in
394/usr/share/common\-licenses/GPL\-2.
395
396.SH "SEE ALSO"
397The btt Users Guide, which can be found in /usr/share/doc/blktrace/btt.pdf
398.br
399bno_plot (1), blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)
400