Wow.. you've been busy.
-F is for use only when using throughput mode ( -t )
-f is for use when using auto mode ( -a )
-i 5 is a test that needs a file to be able to work. So, it must be preceded by -i 0
or a combination of -w and a previous execution with -i 0
(The -w tells Iozone to leave its test files behind)
Iozone -r 64 -s 1m -t 1 -F /mnt/mymount/test -i 0 -w
Iozone -r 64 -s 1m -t 1 -F /mnt/mymount/test -i 5 -w
-a Auto mode is for testing with a single stream of I/O operations. This is used
to answer the question, "How fast and a single stream application perform I/O ?"
-t Throughput mode is for testing with multiple processes and multiple streams
of I/O operations. It is used to answer the question "What is the maximum aggregate
throughput that this system can achieve?"
-+m in combination with -t can be used to expand the multiple processes and streams
of I/O operations across multiple physical client nodes.
-u sets the upper limit on the number of processes that will be tested. This is
for use in throughput mode, when one is scaling the number of I/O streams
from 1 to N and monitoring how well the system I/O performs as the workload
-x (disable stonewalling) is a special case where one is wishing to relax the testing
of multiple streams such that the measurement is not confined to only the region
of time when all of the processes were performing I/O at the same time.
Combining throughput and auto mode features is not permitted because humans
don't like to process 4 dimensional data in their brains. :-) If one were to permit
the combination of features then one would be able to produce 4D results:
Kbytes/sec on one axis
File size on another axis
Transfer size on another axis
Number of streams on another axis
Thus, Iozone limits the possible combinations such that the output is at most
a three dimensional data set.
Auto mode (3D): File size, Transfer size, Kbytes/sec.
Throughput mode(2D): Number of streams, Kbytes/sec.
-U un-mount between tests... This is limited to only working in auto mode. Getting
this to work reliably in throughput mode, where there may be hundreds of physical
clients participating in the testing, is a bit too painful.
Note: If one doesn't specify a transfer size, or a file size, then Iozone will try to
pick some rational defaults for the testing. If these are not good choices, then
one may wish to use -r and -s to choose more reasonable values for their
system under test.
Note: If one is wishing to control the caching behavior of the client, one may
wish to explore using -I ( this enables O_DIRECT, bypassing caches )
There are also many other options that Iozone supports that affect caching.
(O_SYNC, O_RSYNC, O_DSYNC, file size, aggregate data set size, unmounting
between tests, file locking mode (disables caching on NFS clients ) and
the ability to engage multiple physical clients to present load on a server under
Iozone is a very flexible tool. But because it has such extreme flexibility, it
also can be complex to use. Such is the nature of modern systems.
It can take a while to learn the 52 factorial possible command line combinations.. :-(
BTW, I wrote most of this 20 years ago... my more recent works have considerably
more flexibility... :-)