• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

MakefileH A D03-May-20221.1 KiB3431

READMEH A D03-May-202210.5 KiB211172

iozone.cH A D03-May-202237.2 KiB1,235959

README

1
2	IOZONE: Performance Test of Sequential File I/O  --  V2.01 (10/21/94)
3		By Bill Norcott
4
5	Operating System: SunOS -- using fsync()
6
7IOZONE: help mode
8
9       'IO Zone' Benchmark Program
10
11       Author: Bill Norcott (b_norcott@xway.com)
12               4 Dunlap Drive
13               Nashua, NH 03060
14
15  Copyright 1991, 1992, 1994   William D. Norcott
16
17  License to freely use and distribute this software is hereby granted
18  by the author, subject to the condition that this copyright notice
19  remains intact.  The author retains the exclusive right to publish
20  derivative works based on this work, including, but not limited to,
21  revised versions of this work
22
23  This test writes a X MEGABYTE sequential file in Y byte chunks, then
24  rewinds it  and reads it back.  [The size of the file should be
25  big enough to factor out the effect of any disk cache.].  Finally,
26  IOZONE deletes the temporary file
27
28  The file is written (filling any cache buffers), and then read.  If the
29  cache is >= X MB, then most if not all the reads will be satisfied from
30  the cache.  However, if it is less than or equal to .5X MB, then NONE of
31  the reads will be satisfied from the cache.  This is becase after the
32  file is written, a .5X MB cache will contain the upper .5 MB of the test
33  file, but we will start reading from the beginning of the file (data
34  which is no longer in the cache)
35
36  In order for this to be a fair test, the length of the test file must
37  be AT LEAST 2X the amount of disk cache memory for your system.  If
38  not, you are really testing the speed at which your CPU can read blocks
39  out of the cache (not a fair test)
40
41  IOZONE does not normally test the raw I/O speed of your disk or system.
42  It tests the speed of sequential I/O to actual files.  Therefore, this
43  measurement factors in the efficiency of you machines file system,
44  operating system, C compiler, and C runtime library.  It produces a
45  measurement which is the number of bytes per second that your system
46  can read or write to a file.
47
48  You use IOZONE to test the I/O speed of a UNIX 'RAW DEVICE' such
49  as a tape drive, hard disk drive, floppy disk drive, etc.  To do this,
50  you must define the symbol NO_DELETE when you compile IOZONE.  If you
51  fail to define NO_DELETE, IOZONE will treat the raw device as a
52  temporary file, and WILL DELETE THE RAW DEVICE after the test completes!
53  When testing raw devices, any UNIX buffer caching is bypassed.  IOZONE
54  still is using the read()/write() system calls, so you are not quite
55  testing the device at the low level of say, disk controller diagnostics.
56  On the other hand, that kind of testing is highly system- and device-
57  specific, and my goal for IOZONE has been to build a highly portable
58  benchmark -- not one which is tied to a particular operating system or
59  hardware configuration.  In practice, I have tested raw disk and tape
60  peripherals and the results are very close to the manufacturer's specs
61  for those devices.
62
63  For V1.06, IOZONE adds the 'auto test' feature.  This is activated
64  by the command:  'iozone auto' .  The auto test runs IOZONE repeatedly
65  using record sizes from 512 to 8192 bytes, and file sizes from 1 to 16
66  megabytes.  It creates a table of results.
67
68  For V1.06, IOZONE lets you specify the number of file system sizes and
69  record lengths to test when using auto mode.  Define the constants
70  MEGABYTES_ITER_LIMIT and RECLEN_ITER_LIMIT as seen below
71
72  For V1.09 you can show the development help by typing 'iozone help'
73
74  For V1.10 IOzone traps SIGINT (user interrupt) and SIGTERM
75  (kill from shell) signals and deletes the temporary file
76
77  For V1.11 IOzone requires no compilation flags for AIX
78  Also, come miscellaneous cleanups have been made to the source
79
80  For V1.12 IOzone support has been added for the MIPS RISCos,
81  Tandem Non-StopUX, and Tandem GUARDIAN 90 operating systems.
82  IOzone is now a 'Conforming POSIX.1 Application'  (IEEE Std 1003.1-1990)
83
84  For V1.14 IOzone supports Next and QNX systems.  It also prints out
85  the name of the operating system when run.  There is now the option
86  to force IOzone to flush all writes to disk via fsync()
87  Defining USE_FSYNC will make IOzone include in its measurements the time
88  it takes to actually write the data onto disk, as opposed to
89  just writing into the system cache.  BSD UNIX and SVR4 support fsync(),
90  but SVR3 and generic POSIX systems do not.  I have enabled USE_FSYNC
91  for the systems which support it
92
93  For V1.14, we now officially support AT&T SVR4.  It has worked just
94  fine using SVR4 with previous versions of IOzone.  Also, for systems
95  which use the times() function, we calculate the 'base time' the first
96  time we ever call time_so_far(), then subtract this time from all
97  future measurements.  This increases the precision of our measurement
98  and fixes a loss-of-precision problem which occurred on some systems
99
100  For V1.15, add the NO_DELETE symbol.  If you define NO_DELETE during
101  the compilation (e.g., for UNIX systems compile with cc -DNO_DELETE),
102  IOzone will not delete the 'temporary' file which it reads & writes.
103  This is REQUIRED when testing RAW DEVICES such as disks and tape drives!
104
105  For 2.0, after a long hiatus ;-} this new release supports 'raw'
106  option for raw mode devices. Raw mode can be used together with auto
107  mode.  Also, Tandem Computers NonStop OSS operating system is added.
108
109  This program has been ported and tested on the following computer
110  operating systems:
111
112    Vendor             Operating System    Notes on compiling IOzone
113    -------------------------------------------------------------------------
114    Apollo		  Domain/OS           no cc switches -- BSD domain
115    AT&T               UNIX System V Release 4
116    AT&T 6386WGS       AT&T UNIX 5.3.2     can't get it to compile with cc
117					      It should work with gcc via:
118					      'gcc -ansi -o iozone iozone.c'
119    Generic AT&T       UNIX System V R3    may need cc -DSVR3
120    Convergent         Unisys/AT&T Sys5r3  cc -DCONVERGENT -o iozone iozone.c
121    Digital Equipment  ULTRIX V4.1
122    Digital Equipment  VAX/VMS V5.4        see below **
123    Digital Equipment  VAX/VMS (POSIX)
124    Hewlett-Packard    HP-UX 7.05
125    IBM                AIX Ver. 3 rel. 1
126    Interactive        UNIX System V R3
127    Microsoft          MS-DOS 3.3          tested Borland, Microsoft C
128    MIPS               RISCos 4.52
129    NeXt               NeXt OS 2.x
130    OSF                OSF/1
131    Portable!          POSIX 1003.1-1990   may need to -D_POSIX_SOURCE
132    QNX                QNX 4.0
133    SCO                UNIX System V/386 3.2.2
134    SCO                XENIX 2.3
135    SCO                XENIX 3.2
136    Silicon Graphics   UNIX                cc -DSGI -o iozone iozone.c
137    Sony Microsystems  UNIX                same as MIPS
138    Sun Microsystems   SUNOS 4.1.1
139    Tandem Computers   GUARDIAN 90         1. call the source file IOZONEC
140                                           2. C/IN IOZONEC/IOZONE;RUNNABLE
141                                           3. RUN IOZONE
142    Tandem Computers   Non-Stop UX
143    Tandem Computers   Non-Stop OSS
144
145    ** for VMS, define iozone as a foreign command via this DCL command:
146
147       $IOZONE :== $SYS$DISK:[]IOZONE.EXE
148
149       this lets you pass the command line arguments to IOZONE
150
151  Acknowledgements to the following persons for their feedback on IOzone:
152
153  Andy Puchrik, Michael D. Lawler, Krishna E. Bera, Sam Drake, John H. Hartman,
154  Ted Lyszczarz, Bill Metzenthen, Jody Winston, Clarence Dold, Axel
155  Dan Hildebrand, Joe Nordman, Bob Fritz, Jeff Johnson
156
157  --- MODIFICATION HISTORY:
158
159
160    3/7/91 William D. Norcott (Bill.Norcott@nuo.mts.dec.com)
161                               created
162
163    3/22/91 Bill Norcott       tested on OSF/1 ... it works
164
165    3/24/91 Bill Norcott       V1.02 -- use calloc in TURBOC to
166                                       fix bug with their malloc
167
168    3/25/91 Bill Norcott       V1.03 -- add ifdef for XENIX
169
170    3/27/91 Bill Norcott       V1.04 -- Includes for SCO UNIX
171
172    4/26/91 Bill Norcott       V1.05 -- support AIX and SUNos, check
173                                       length of read() and write()
174    4/26/91 Bill Norcott       V1.06 -- tabulate results of a series
175                                       of tests
176    5/17/91 Bill Norcott       V1.07 -- use time() for VMS
177    5/20/91 Bill Norcott       V1.08 -- use %ld for Turbo C and
178                                       use #ifdef sun to bypass
179                                       inclusion of limits.h
180    6/19/91 Bill Norcott       V1.09 -- rid #elif to support HP-UX and
181                                       Silicon Graphics UNIX, and
182                                       add #ifdef SGI
183                                       add #ifdef CONVERGENT
184                                       for Convergent Technologies
185                                       also add help option
186    7/2/91 Bill Norcott        V1.10 -- delete file if get SIGINT
187                                       or SIGTERM
188    8/20/91 Bill Norcott       V1.11 -- require no flags with AIX
189    11/4/91 Bill Norcott       V1.12 -- support MIPS RISCos
190                                         Tandem NonStop-UX, and
191                                        IEEE Std POSIX 1003.1-1990
192    12/4/91 Bill Norcott       V1.13 -- support NeXT; tell host OS type
193    1/23/92 Bill Norcott      V1.14 -- support QNX & use calloc() for buffer
194    5/1/92 Bill Norcott      V1.15 -- support SVR4; fix loss of precision
195                                       in times() function.
196                                       support Interactive UNIX
197                                       detect ANSI if no O/S
198                                       Also, define for generic SVR3
199                                       Apollo Domain/OS
200                                       Define NO_DELETE and iozone wont
201                                       delete the temp file.  Needed to
202                                       test raw devices without deleting
203                                       them
204    10/28/92 Bill Norcott    V1.16 -- bug fix: some unsigned longs changed
205                                      to unsigned in V1.15 caused problem
206                                      so change back.  Also, note problems
207					 with AT&T 6386WGS systems
208    10/21/94 Bill Norcott    V2.01 -- add support Tandem NonStop OSS,
209                                      also support auto with raw mode I/O
210
211