Disktest Version v1.2.x README

WHAT IS DISKTEST?

  Disktest performs repeated i/o accesses to disk devices or filesystems
  and optionally writes to, reads from, and verifies the data.

  There are many optional parameters that can be supplied to disktest to have
  it perform in a multitude of test cases.

  It is distributed under the GNU General Public License - See the LICENSE
  file that accompanies this distribution for more details.

CHANGES SINCE v1.1.x

  Major Changes:

    A new option -F has been added.  This allows the use of a file to discribe
    the targets that disktest will run against.  This should work as if an
    individual command line was started for each of the targets specified in the
    file.

    Add an option, C, to the performance option -P.  This allows the user to
    specify at the end of each cycle or test, to display the performance
    information for the cycle.  In the case were there is only one cycle, then
    the total and cycle performance data will be identical.

  Minor Changes:

    Added day calculation to runtime statistics.

    When setting a finite pass count, the passes would continue one more cycle
    then specified.

    Added fsync on close for unix systems when doing file IO.  The fsync will
    occur in between cycles and at the conclusion of a test.  Also added a
    modification to -If, -Ifs, this will force an fsync on every write.  The
    default is to only fsync at the end of a cycle or test.

    When using the the mark option, -m, disktest would some times report a
    false data miss compare.  Also the only -m available no is -ma.  There
    are cases that could cause false miss-compares when using variable block
    transfer size and the -mf or -ml options.  For now these modifiers have
    been disabled.

    Disktest now detects the size of a file when doing filesystem IO tests. It
    previously defaulted to the internal default of 2000 LBAs.

    Updated the man page and usage text to describe option -z and option -Q.
    They have always been there, but never in the documentation.

    I had made use of lots of globals to share data between threads. Most of
    these have now been cleaned up.

    when using the -PPA option, the values were being rounded and not showing
    the calculated tenths.

    When running -C0, dsktest was showing 'Starting pass x of 0', removed the
    'of 0' part.

    Statistics ere never being shown when using -C0 option.  Now, statics will
    be show for each cycle and the total for all cycles.

    The process ID that is shown as part of the running test is unique to the
    test running, not to each thread.  This change was made to make it easier
    to track a single test out of a log file by searching for the id.  It is
    also that same id used for the random seed and the dump file identifier.

    The -f option did not take into consideration the endian-ness of the arch.
    this would cause issues in the line value of the data pattern when using
    the option.  This has been fixed.

    Added IFDEF for Power when using ioctl BLKGETSIZE where the size must be a
    unsigned long for the value to return correctly

CHANGES SINCE v1.0.x

  Major Changes:

    Updated performance output based on command line.  Gave one decimal in
    MB/s output.

    Rewrote -pL IO routine to show correct stats.  Now shows pass count when
    using -C.

    Added dump function from command line.  Created formatted dump output for
    Data miscomare and command line.

    Modified performance statistic printing to be more accurate with respect
    to throughput and IO/s.  Added one decimal place of precision in MB/s
    calculation.

  Minor Changes:

    Code cleanup to remove the plethora if #ifdef for windows/unix functional
    differences.

    Updates to parsing routines for user input.  Added multipliers for -S and
    -s command line arguments. Forced default seeks to default if performing
    a diskcache test.

    Can now leave off filespec the full path header as it will be added based
    on -I.

WHAT Operating Systems/Architectures DOES IT RUN ON?

  This code has been written to compile on Linux, AIX, and Windows.  Both
  on a 32bit and 64bit environments on Intel and Power.  There should be no
  compatibility issues at the time of compilation or execution.  If you have
  the time and can expand that list of OS/Arch types please fell free.

DOCUMENTATION:

  At present, the only documentation provided with disktest is the man page
  which is included with the source files as man1/disktest.1.  You can either
  install it as a man page on your system, use groff to view it if man is
  not available, or export the man page to another readable format such as
  html.

INSTALLING THE SOURCE:

  You can install the source by untaring the source tar files:

          gzip -cd disktest.<version>.tar.gz | tar xvf -

  This will create a directory in the current directory of:

          disktest.<version>

  The directory contents that should have been included in this source package
  are:

          /
          README        LICENSE         childmain.c  childmain.h
          defs.h        Getopt.c        Getopt.h     globals.c
          globals.h     main.c          main.h       Makefile.windows
          Makefile.aix  Makefile.linux  parse.c      parse.h
          sfunc.c       sfunc.h         threading.c  threading.h
          usage.c       usage.h         timer.c      timer.h
          stats.c       stats.h         io.c         io.h
          dump.c        dump.h

          man1/
          disktest.1.gz

BUILDING THE SOURCE

  You will need a compiler for the machine that you want to build the source
  for.  There is a make file included for each OS type, which will attempt to
  use the default compiler on your system.

  If you wish, create a symbolic link to the correct Makefile for the system
  that you are compiling the code for, the following defines are used in the
  code to #ifdef code fragments:

          Windows:       -D"WINDOWS"
          AIX:           -D"AIX"
          Linux:         -D"LINUX"
          Power:         -D"PPC"

  This will set up the includes and typedefs correctly to support the
  different system types.

  Issue the make command:

          "make all"

  The result should be a file in the source directory that is executable with
  'disktest' as the name.

  There are other make commands defined:

          "make clean"     Will remove executable and object files only

          "make all-clean" Will remove executable, temp files, object files and
                           archives (*tar* & *zip*)

          "make distro"    Will repackage the source files

          "make install"   Will copy man page to /usr/share/man1, and binary to
                           /usr/bin/

          "make uninstall" Will remove man page and binary out of install
                           directories.

EXECUTING

  To get started, run disktest with the -? flag:

          "disktest -?"

  This will display a simplified usage to get started.  More descriptive
  documentation is located in the man page, along with examples of executions
  and output that can give you the first look and feel of how disktest will
  receive inputs and display outputs.

SO WHAT ABOUT BUGS, FEATURES, ENHANCEMENTS?

  It is possible that there will be issues, whether they are bugs or features
  that would like to be added.  You can do a couple of things, one,  fix/add the
  code yourself and send it to me.  This is the fastest way to get improvements
  into the code.  Two, You can send me a note that has a description of the
  problem and if possible the recreate setup.  I will see what I can do about
  getting these things added to the code.

  Comments are always welcome, even if it is just a note to let me know how
  well the tool is working for you.  I am also interested in comparing the
  tool to others people have used.  I would be interested in any feedback
  about the usability, data output, functionality, etc. as compared to other
  tools or testing needs.

CONTACT

  My email address is: yardleyb@us.ibm.com  (Brent Yardley)


