1IOZONE(1) General Commands Manual IOZONE(1)
2
3
4
6 Iozone - Filesystem Benchmark
7
9 Iozone {-a | -A} [-s filesize_Kb] [-r record_size_Kb] [-f
10 [path]filename] [-i test] [-E] [-p] [-m] [-M] [-t children] [-h] [-o]
11 [-l min_number_procs] [-u max_number_procs] [-v] [-R] [-x] [-d
12 microseconds] [-F path1 path2...] [-V pattern ] [-j stride] [-T] [-C]
13 [-B] [-D] [-G] [-I] [-H depth] [-k depth] [-U mount_point] [-S
14 cache_size] [-O] [-L line_size] [-K] [-N] [-Q] [-P start_cpu] [-c] [-e]
15 [-b Excel.xls] [-J milliseconds] [-X [path]filename] [-Y
16 [path]filename] [-w] [-W] [-z] [-Z] [-n min_filesize_Kb] [-g
17 max_filesize_Kb] [-y min_recordsize_Kb] [-q max_recordsize_Kb] [-+d]
18 [-+u] [-+m client_filename] [-+p percent_read] [-+r] [-+t] [-+l] [-+L]
19 [-+D] [-+A madvise_selector] [-+h hostname] [-+T]
20
21
23 Iozone is a filesystem benchmark tool. The benchmark generates and mea‐
24 sures a variety of file operations. Iozone has been ported to many ma‐
25 chines and runs under many operating systems. This document will cover
26 the many different types of operations that are tested as well as cov‐
27 erage of all of the command line options.
28
29 Iozone is useful for determining a broad filesystem analysis of a ven‐
30 dor's computer platform. The benchmark tests file I/O performance for
31 the following operations.
32
33 Read, write, re-read, re-write, read backwards, read strided,
34 fread, fwrite, random read/write, pread/pwrite variants
35
36 While computers are typically purchased with an application in mind it
37 is also likely that over time the application mix will change. Many
38 vendors have enhanced their operating systems to perform well for some
39 frequently used applications. Although this accelerates the I/O for
40 those few applications it is also likely that the system may not per‐
41 form well for other applications that were not targeted by the operat‐
42 ing system. An example of this type of enhancement is: Database. Many
43 operating systems have tested and tuned the filesystem so it works well
44 with databases. While the database users are happy, the other users may
45 not be so happy as the entire system may be giving all of the system
46 resources to the database users at the expense of all other users. As
47 time rolls on the system administrator may decide that a few more of‐
48 fice automation tasks could be shifted to this machine. The load may
49 now shift from a random reader application (database) to a sequential
50 reader. The users may discover that the machine is very slow when run‐
51 ning this new application and become dissatisfied with the decision to
52 purchase this platform. By using Iozone to get a broad filesystem per‐
53 formance coverage the buyer is much more likely to see any hot or cold
54 spots and pick a platform and operating system that is more well bal‐
55 anced.
56
57
59 -a Used to select full automatic mode. Produces output that covers
60 all tested file operations for record sizes of 4k to 16M for
61 file sizes of 64k to 512M.
62
63 -A This version of automatic mode provides more coverage but con‐
64 sumes a bunch of time. The -a option will automatically stop
65 using transfer sizes less than 64k once the file size is 32M or
66 larger. This saves time. The -A option tells Iozone that you are
67 willing to wait and want dense coverage for small transfers even
68 when the file size is very large. NOTE: This option is depre‐
69 cated in Iozone version 3.61. Use -az -i 0 -i 1 instead.
70
71 -b filename
72 Used to specify a filename that will be used for output of an
73 Excel compatible file that contains the results.
74
75 -B Use mmap() files. This causes all of the temporary files being
76 measured to be created and accessed with the mmap() interface.
77 Some applications prefer to treat files as arrays of memory.
78 These applications mmap() the file and then just access the ar‐
79 ray with loads and stores to perform file I/O.
80
81 -c Include close() in the timing calculations. This is useful only
82 if you suspect that close() is broken in the operating system
83 currently under test. It can be useful for NFS Version 3 test‐
84 ing as well to help identify if the nfs3_commit is working well.
85
86 -C Show bytes transferred by each child in throughput testing. Use‐
87 ful if your operating system has any starvation problems in file
88 I/O or in process management.
89
90 -d # Microsecond delay out of barrier. During the throughput tests
91 all threads or processes are forced to a barrier before begin‐
92 ning the test. Normally, all of the threads or processes are re‐
93 leased at the same moment. This option allows one to delay a
94 specified time in microseconds between releasing each of the
95 processes or threads.
96
97 -D Use msync(MS_ASYNC) on mmap files. This tells the operating sys‐
98 tem that all the data in the mmap space needs to be written to
99 disk asynchronously.
100
101 -e Include flush (fsync,fflush) in the timing calculations
102
103 -E Used to select the extension tests. Only available on some plat‐
104 forms. Uses pread interfaces.
105
106 -f filename
107 Used to specify the filename for the temporary file under test.
108 This is useful when the unmount option is used. When testing
109 with unmount between tests it is necessary for the temporary
110 file under test to be in a directory that can be unmounted. It
111 is not possible to unmount the current working directory as the
112 process Iozone is running in this directory.
113
114 -F filename filename filename ?
115 Specify each of the temporary file names to be used in the
116 throughput testing. The number of names should be equal to the
117 number of processes or threads that are specified.
118
119 -g # Set maximum file size (in Kbytes) for auto mode. One may also
120 specify -g #k (size in Kbytes) or -g #m (size in Mbytes) or
121 -g #g (size in Gbytes). See -n for minimum file size.
122
123 -G Use msync(MS_SYNC) on mmap files. This tells the operating sys‐
124 tem that all the data in the mmap space needs to be written to
125 disk synchronously.
126
127 -h Displays help screen.
128
129 -H # Use POSIX async I/O with # async operations. Iozone will use
130 POSIX async I/O with a bcopy from the async buffers back into
131 the applications buffer. Some versions of MSC NASTRAN perform
132 I/O this way. This technique is used by applications so that
133 the async I/O may be performed in a library and requires no
134 changes to the applications internal model.
135
136 -i # Used to specify which tests to run. (0=write/rewrite, 1=read/re-
137 read, 2=random-read/write, 3=Read-backwards, 4=Re-write-record,
138 5=stride-read, 6=fwrite/re-fwrite, 7=fread/Re-fread, 8=mixed
139 workload, 9=pwrite/Re-pwrite, 10=pread/Re-pread, 11=pwritev/Re-
140 pwritev, 12=preadv/Re-preadv). One will always need to specify
141 0 so that any of the following tests will have a file to mea‐
142 sure. -i # -i # -i # is also supported so that one may select
143 more than one test.
144
145 -I Use VxFS VX_DIRECT for all file operations. Tells the VXFS
146 filesystem that all operations to the file are to bypass the
147 buffer cache and go directly to disk.
148
149 -j # Set stride of file accesses to (# * record size). The stride
150 read test will read records at this stride.
151
152 -J # Millisecond delay before each I/O operation. This simulates the
153 cpu compute cycle of an application that precedes an I/O opera‐
154 tion. One may also use -X or -Y to control the compute cycle on
155 a per I/O operation basis.
156
157 -k # Use POSIX async I/O (no bcopy) with # async operations. Iozone
158 will use POSIX async I/O and will not perform any extra bcopys.
159 The buffers used by Iozone will be handed to the async I/O sys‐
160 tem call directly.
161
162 -K Inject some random accesses in the testing.
163
164 -l # Set the lower limit on number of processes to run. When running
165 throughput tests this option allows the user to specify the
166 least number of processes or threads to start. This option
167 should be used in conjunction with the -u option.
168
169 -L # Set processor cache line size to value (in bytes). Tells Iozone
170 the processor cache line size. This is used internally to help
171 speed up the test.
172
173 -m Tells Iozone to use multiple buffers internally. Some applica‐
174 tions read into a single buffer over and over. Others have an
175 array of buffers. This option allows both types of applications
176 to be simulated. Iozone´s default behavior is to re-use inter‐
177 nal buffers. This option allows one to override the default and
178 to use multiple internal buffers.
179
180 -M Iozone will call uname() and will put the string in the output
181 file.
182
183 -n # Set minimum file size (in Kbytes) for auto mode. One may also
184 specify -n #k (size in Kbytes) or -n #m (size in Mbytes) or
185 -n #g (size in Gbytes). See -g for maximum file size.
186
187 -N Report results in microseconds per operation.
188
189 -o Writes are synchronously written to disk. (O_SYNC). Iozone will
190 open the files with the O_SYNC flag. This forces all writes to
191 the file to go completely to disk before returning to the bench‐
192 mark.
193
194 -O Give results in operations per second.
195
196 -p This purges the processor cache before each file operation. Io‐
197 zone will allocate another internal buffer that is aligned to
198 the same processor cache boundary and is of a size that matches
199 the processor cache. It will zero fill this alternate buffer
200 before beginning each test. This will purge the processor cache
201 and allow one to see the memory subsystem without the accelera‐
202 tion due to the processor cache.
203
204 -P # Bind processes/threads to processors, starting with this cpu #.
205 Only available on some platforms. The first sub process or
206 thread will begin on the specified processor. Future processes
207 or threads will be placed on the next processor. Once the total
208 number of cpus is exceeded then future processes or threads will
209 be placed in a round robin fashion.
210
211 -q # Set maximum record size (in Kbytes) for auto mode. One may also
212 specify -q #k (size in Kbytes) or -q #m (size in Mbytes) or
213 -q #g (size in Gbytes). See -y for minimum record size.
214
215 -Q Create offset/latency files. Iozone will create latency versus
216 offset data files that can be imported with a graphics package
217 and plotted. This is useful for finding if certain offsets have
218 very high latencies. Such as the point where UFS will allocate
219 its first indirect block. One can see from the data the impacts
220 of the extent allocations for extent based filesystems with this
221 option.
222
223 -r # Used to specify the record size, in Kbytes, to test. One may al‐
224 so specify -r #k (size in Kbytes) or -r #m (size in Mbytes) or
225 -r #g (size in Gbytes).
226
227 -R Generate Excel report. Iozone will generate an Excel compatible
228 report to standard out. This file may be imported with Microsoft
229 Excel (space delimited) and used to create a graph of the
230 filesystem performance. Note: The 3D graphs are column oriented.
231 You will need to select this when graphing as the default in Ex‐
232 cel is row oriented data.
233
234 -s # Used to specify the size, in Kbytes, of the file to test. One
235 may also specify -s #k (size in Kbytes) or -s #m (size in
236 Mbytes) or -s #g (size in Gbytes).
237
238 -S # Set processor cache size to value (in Kbytes). This tells Iozone
239 the size of the processor cache. It is used internally for buf‐
240 fer alignment and for the purge functionality.
241
242 -t # Run Iozone in a throughput mode. This option allows the user to
243 specify how many threads or processes to have active during the
244 measurement.
245
246 -T Use POSIX pthreads for throughput tests. Available on platforms
247 that have POSIX threads.
248
249 -u # Set the upper limit on number of processes to run. When running
250 throughput tests this option allows the user to specify the
251 greatest number of processes or threads to start. This option
252 should be used in conjunction with the -l option.
253
254 -U mountpoint
255 Mount point to unmount and remount between tests. Iozone will
256 unmount and remount this mount point before beginning each test.
257 This guarantees that the buffer cache does not contain any of
258 the file under test.
259
260 -v Display the version of Iozone.
261
262 -V # Specify a pattern that is to be written to the temporary file
263 and validated for accuracy in each of the read tests.
264
265 -w Do not unlink temporary files when finished using them.
266
267 -W Lock file when reading or writing.
268
269 -x Turn off stone-walling. Stonewalling is a technique used inter‐
270 nally to Iozone. It is used during the throughput tests. The
271 code starts all threads or processes and then stops them on a
272 barrier. Once they are all ready to start then they are all re‐
273 leased at the same time. The moment that any of the threads or
274 processes finish their work then the entire test is terminated
275 and throughput is calculated on the total I/O that was completed
276 up to this point. This ensures that the entire measurement was
277 taken while all of the processes or threads were running in par‐
278 allel. This flag allows one to turn off the stonewalling and
279 see what happens.
280
281 -X filename
282 Used to specify a filename that will be used for the write
283 telemetry information. The file contains lines with offset,
284 size, delay_in_milliseconds. Each of these lines are used to
285 perform an I/O operation. This is used when an application'ss
286 specific I/O operations are known, and one wishes to benchmark
287 the system with this specific application file behavior.
288
289 -y # Set minimum record size (in Kbytes) for auto mode. One may also
290 specify -y #k (size in Kbytes) or -y #m (size in Mbytes) or
291 -y #g (size in Gbytes). See -q for maximum record size.
292
293 -Y filename
294 Used to specify a filename that will be used for the read
295 telemetry information. The file contains lines with offset,
296 size, delay_in_milliseconds. Each of these lines are used to
297 perform an I/O operation. This is used when an application'ss
298 specific I/O operations are known, and one wishes to benchmark
299 the system with this specific application file behavior.
300
301 -z Used in conjunction with -a to test all possible record sizes.
302 Normally Iozone omits testing of small record sizes for very
303 large files when used in full automatic mode. This option forces
304 Iozone to include the small record sizes in the automatic tests
305 also.
306
307 -Z Enable mixing of mmap I/O and file I/O.
308
309 -+m filename
310 Used to specify a filename that will be used to specify the
311 clients in a distributed measurement. The file contains one line
312 for each client. The fields are space delimited. Field 1 is the
313 client name. Field 2 is the working directory, on the client,
314 where Iozone will run. Field 3 is the path to the executable Io‐
315 zone on the client.
316
317 -+u Used to enable CPU statistics collection.
318
319 -+d Diagnostic mode to troubleshoot a broken file I/O subsystem.
320
321 -+p percentage_reads
322 Used to set the percentage of threads/processes that will per‐
323 form read testing in the mixed workload test case.
324
325 -+r Enable O_RSYNC | O_SYNC on all testing.
326
327 -+l Enable byte range locking.
328
329 -+L Enable byte range locking & shared file mode.
330
331 -+D Enable O_DSYNC on all testing.
332
333 -+t Enable network performance test. Use with -+m
334
335 -+A# Enable madvise behavior. 0 = normal, 1=random, 2=sequential,
336 3=dontneed, 4=willneed
337
338 -+B Enable sequential mixed workload testing.
339
340 -+T Enable time stamps logging.
341
342 -+h Manually set hostname.
343
344
346 Original Author: William D. Norcott. wnorcott@us.oracle.com
347
348 Features & extensions: Don Capps capps@iozone.org
349
350
351
352 IOZONE(1)