

/*****************************************************************************
 *
 *  Copyright (C) 2004,  Bill Pierce 
 *
 *  Bill Pierce can be contacted at:
 *  systems_r_up@yahoo.com
 *
 *****************************************************************************/

io_profile FAQ

Q. Can I use the -b option on NFS/CIFS mounted filesystems?
A. Probably not, since NFS/CIFS mounted filesystems have 
their own considerations, especially in terms of caching
and synchronous/asynchronous IO. 

Q. How can I change the number and configuration of
files created in multi-file mode?
A. Edit the io_profile_config.h file, setting
DEFAULT_LEVELS and DEFAULT_FILES_PER_LEVEL to 
whatever you want and recompile. Note that there
is a MAX_FILENAME_LENGTH of 256 characters

Q. How can I turn off pre-initialization? 
A. Edit the the io_profile_config.h file, setting
the DEFAULT_PRE_INITIALIZE_FLAG to DONT_PRE_INITIALIZE
and recompile. 

Q. How can I make the maximum file size greater than 1GB.
A. Edit the the io_profile_config.h file, setting
the DEFAULT_TEST_FILE_LENGTH and recompile. Note that
test_file_length is currently a signed integer,
so you'll be limited to 2GB. 

Q. How can I truly defeat cache effects on Linux and Solaris?
A. One way to defeat cache effects is to use a file(system)  size that is
much larger than physical memory (at least four times larger
seems to be the conventional wisdom).  This will reduce the 
probability of cache hits to the point where the cache
is effectively useless.  

Another way to eliminate the effects
of the cache is to run a test, then reboot your system
and re-run the same test at the same location in the filesytem
with the -r flag.  Since the data in the cache will not survive
a reboot reads will have to go all the way to disk to complete.
Depending on the size of the test file(system) size, this
will only have an effect until the cache loads with data, 
at which point cache hits will account for most of your reads
again. Note that neither of these strategies will defeat
effects like read-ahead caching on the disk devices themselves.

Another option is to look for specialized mount options 
requiring synchonous our DIRECT IO. For example, the 
mount command has a -o sync option which forces IO on 
the mounted filesystem to be done synchronously (as is done
in -b mode).  mount on Solaris has a -o forcedirectio 
option which should be compatible with -b mode of io_profile
because reads and writes are memory and sector aligned.

Q. How can I tell the degree to which the buffer cache is 
being used?
A. Most operating systems have utilities that communicate
with the kernel to keep track of things such as buffer 
cache size, cache hit ratio, and the rate at which buffer
cache pages are flused to physical disk. On windows this
is through the system monitor (formerly perfmon). On Linux
and Solaris, the sar utility has options for monitoring
these kinds of parameters.  If you see the cache size increase
when you run io_profile and then decrease again when you
delete the test file(system), this is an indication that
the cache has played a role in the I/O.

