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