1IOZONE(1)                   General Commands Manual                  IOZONE(1)
2
3
4

NAME

6       Iozone - Filesystem Benchmark
7

SYNOPSIS

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

DESCRIPTION

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

OPTIONS

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

AUTHOR

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)
Impressum