1BTT(1) BTT(1)
2
3
4
6 btt - analyse block i/o traces produces by blktrace
7
8
9
11 btt
12 [ -a | --seek-absolute ]
13 [ -A | --all-data ]
14 [ -B <output name> | --dump-blocknos=<output name> ]
15 [ -d <seconds> | --range-delta=<seconds> ]
16 [ -D <dev;...> | --devices=<dev;...> ]
17 [ -e <exe,...> | --exes=<exe,...> ]
18 [ -h | --help ]
19 [ -i <input name> | --input-file=<input name> ]
20 [ -I <output name> | --iostat=<output name> ]
21 [ -l <output name> | --d2c-latencies=<output name> ]
22 [ -L <freq> | --periodic-latencies=<freq> ]
23 [ -m <output name> | --seeks-per-second=<output name> ]
24 [ -M <dev map> | --dev-maps=<dev map>
25 [ -o <output name> | --output-file=<output name> ]
26 [ -p <output name> | --per-io-dump=<output name> ]
27 [ -P <output name> | --per-io-trees=<output name> ]
28 [ -q <output name> | --q2c-latencies=<output name> ]
29 [ -Q <output name> | --active-queue-depth=<output name> ]
30 [ -r | --no-remaps ]
31 [ -s <output name> | --seeks=<output name> ]
32 [ -S <interval> | --iostat-interval=<interval> ]
33 [ -t <sec> | --time-start=<sec> ]
34 [ -T <sec> | --time-end=<sec> ]
35 [ -u <output name> | --unplug-hist=<output name> ]
36 [ -v | --verbose ]
37 [ -V | --version ]
38 [ -X | --easy-parse-avgs ]
39 [ -z <output name> | --q2d-latencies=<output name> ]
40
41
42
44 btt is a post-processing tool for the block layer IO tracing tool
45 called blktrace(8). As noted in its documentation, blktrace is a block
46 layer IO tracing mechanism which provides detailed information about
47 request queue operations up to user space.
48
49 btt will take in binary dump data from blkparse, and analyse the
50 events, producing a series of output from the analysis. It will also
51 build .dat files containing "range data" -- showing things like Q
52 activity (periods of time while Q events are being produced), C activ‐
53 ity (likewise for command completions), and etc.
54
55 Included with the distribution is a simple 3D plotting utility,
56 bno_plot, which can plot the block numbers btt outputs if the -B option
57 is specified. The display will display each IO generated, with the time
58 (seconds) along the X-axis, the block number (start) along the Y-axis
59 and the number of blocks transferred in the IO represented along the Z-
60 axis.
61
62
63
65 -a
66 --seek-absolute
67 When specified on the command line, this directs btt to calculate
68 seek distances based solely upon the ending block address of one
69 IO, and the start of the next. By default btt uses the concept of
70 the closeness to either the beginning or end of the previous IO.
71 See the Users Manual for more details about seek distances.
72
73 -A
74 --all-data
75 Normally btt will not print out verbose information concerning per-
76 process and per-device data. If you desire that level of detail
77 you can specify this option.
78
79 -B <output name>
80 --dump-blocknos=<output name>
81 This option will output absolute block numbers to three files pre‐
82 fixed by the specified output name:
83
84 prefix_device_r.dat
85 All read block numbers are output, first column is time
86 (seconds), second is the block number, and the third column
87 is the ending block number.
88
89 prefix_device_w.dat
90 All write block numbers are output, first column is time
91 (seconds), second is the block number, and the third column
92 is the ending block number.
93
94 prefix_device_c.dat
95 All block numbers (read and write) are output, first column
96 is time (seconds), second is the block number, and the third
97 column is the ending block number.
98
99 -d <seconds>
100 --range-delta=<seconds>
101 btt outputs a file containing Q and C activity, the notion of
102 active traces simply means that there are Q or C traces occurring
103 within a certain period of each other. The default values is 0.1
104 seconds; with this option allowing one to change that granularity.
105 The smaller the value, the more data points provided.
106
107 -D <dev;...>
108 --devices=<dev;...>
109 Normally, btt will produce data for all devices detected in the
110 traces parsed. With this option, one can reduce the analysis to one
111 or more devices provided in the string passed to this option. The
112 device identifiers are the major and minor number of each device,
113 and each device identifier is separated by a colon (:). A valid
114 specifier for devices 8,0 and 8,8 would then be: 8,0:8,8.
115
116 -e <exe,...>
117 --exes=<exe,...>
118 The -e option supplies the list of executables that will have I/Os
119 analysed.
120
121 -h
122 --help
123 Shows a short summary of possible command line option
124
125 -i <input name>
126 --input-file <input file>
127 Specifies the input file to analyse. This should be a trace file
128 produced by blktrace (8).
129
130 -I <output name>
131 --iostat=<output name>
132 The -I option directs btt to output iostat-like data to the speci‐
133 fied file. Refer to the iostat (sysstat) documentation for details
134 on the data columns.
135
136 -l <output name>
137 --d2c-latencies=<output name>
138 The -l option allows one to output per-IO D2C latencies respec‐
139 tively. The supplied argument provides the basis for the output
140 name for each device.
141
142 -L <freq>
143 --periodic-latencies=<freq>
144 The -L option allows one to output periodic latency information for
145 both Q2C and D2C latencies. The frequency specified will regulate
146 how often an average latency is output -- a floating point value
147 expressing seconds.
148
149 -m <output name>
150 --seeks-per-second=<output name>
151 Trigger btt to output seeks-per-second information. The first col‐
152 umn will contain a time value (seconds), and the second column
153 will indicate the number of seeks per second at that point.
154
155 -M <dev map>
156 --dev-maps=<dev map>
157 The -M option takes in a file generated by the provided script
158 (gen_disk_info.py), and allows for better output of device names.
159
160 -o <output name>
161 --output-file=<output name>
162 Specifies the output file name.
163
164 -p <output name>
165 --per-io-dump=<output name>
166 The -p option will generate a file that contains a list of all IO
167 "sequences" - showing the parts of each IO (Q, A, I/M, D, & C).
168
169 -P <output name>
170 --per-io-trees=<output name>
171 The -P option will generate a file that contains a list of all IO
172 "sequences" - showing only the Q, D & C operation times. The D & C
173 time values are separated from the Q time values with a vertical
174 bar.
175
176 -q <output name>
177 --q2c-latencies=<output name>
178 The -q option allows one to output per-IO Q2C latencies respec‐
179 tively. The supplied argument provides the basis for the output
180 name for each device.
181
182 -Q <output name>
183 --active-queue-depth=<output name>
184 The -Q option allows one to output data files showing the time
185 stamp and the depth of active commands (those issued but not com‐
186 pleted).
187
188 -r
189 --no-remaps
190 Ignore remap traces; older kernels did not implement the full remap
191 PDU.
192
193 -s <output name>
194 --seeks=<output name>
195 The -s option instructs btt to output seek data, the argument pro‐
196 vided is the basis for file names output. There are two files per
197 device, read seeks and write seeks.
198
199 -S <interval>
200 --iostat-interval=<interval>
201 The -S option specifies the interval to use between data output, it
202 defaults to once per second.
203
204 -t <sec>
205 --time-start=<sec>
206 -T <sec>
207 --time-end=<sec>
208 The -t/-T options allow one to set a start and/or end time for
209 analysing - analysing will only be done for traces after -t's argu‐
210 ment and before -T's argument. (-t and -T are optional, so if you
211 specify just -t, analysis will occur for all traces after the time
212 specified. Similarly, if only -T is specified, analysis stops after
213 -T's seconds.)
214
215 -u <output name>
216 --unplug-hist=<output name>
217 This option instructs btt to generate a data file containing his‐
218 togram information for unplug traces on a per device basis. It
219 shows how many times an unplug was hit with a specified number of
220 IOs released. There are 21 output values into the file, as follows:
221
222 a value of 0 represents 0..4 counts
223 a value of 1 represents 5..9 counts
224 a value of 2 represents 10..14 counts
225 etc, until
226 a value of 20 represents 100+ counts
227
228 The file name(s) generated use the text string passed as an argu‐
229 ment for the prefix, followed by the device identifier in
230 major,minor form, with a .dat extension. For example, with -u
231 up_hist specified on the command line: up_hist_008,032.dat.
232
233 -V
234 --version
235 Shows the version of btt.
236
237 -v
238 --verbose
239 Requests a more verbose output.
240
241 -X
242 --easy-parse-avgs
243 Provide data in an easy-to-parse form and write it to a file with
244 .avg exentsion
245
246 -z <output name>
247 --q2d-latencies=<output name>
248 The -z option allows one to output per-IO Q2D latencies respec‐
249 tively. The supplied argument provides the basis for the output
250 name for each device.
251
252
253
255 btt was written by Alan D. Brunelle. This man page was created from
256 the blktrace documentation by Bas Zoetekouw.
257
258
259
261 Report bugs to <linux-btrace@vger.kernel.org>
262
263
265 Copyright © 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
266 This is free software. You may redistribute copies of it under the
267 terms of the GNU General Public License
268 <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
269 extent permitted by law.
270 This manual page was created for Debian by Bas Zoetekouw. It was
271 derived from the documentation provided by the authors and it may be
272 used, distributed and modified under the terms of the GNU General Pub‐
273 lic License, version 2.
274 On Debian systems, the text of the GNU General Public License can be
275 found in /usr/share/common-licenses/GPL-2.
276
277
279 The btt Users Guide, which can be found in /usr/share/doc/blk‐
280 trace/btt.pdf
281 bno_plot (1), blktrace (8), blkparse (1), verify_blkparse (1),
282 blkrawverify (1), btt (1)
283
284
285
286
287blktrace git-20070910192508 September 29, 2007 BTT(1)