zcav - program to test raw hard drive throughput.
zcav [-b block-size[:chunk-size]] [-c count] [-r
    [first-block]:last-block] [-w] [-s skip-rate] [-u
    uid-to-use:gid-to-use] [-g gid-to-use] [-l log-file] [-f]
    file-name [-l log-file [-f] file-name]...
This manual page documents briefly the zcav, program.
Modern hard drives have a constant rotational speed but have
    varying numbers of sectors per track (outside tracks are longer and have
    more sectors). This is referred to as Zoned Constant Angular Velocity (or
    ZCAV). The outer tracks will have a higher data transfer rate due to having
    more sectors per track, these tracks generally have the lower track/sector
    numbers.
This program tests the ZCAV performance of a hard drive, by
    reading the entire data on it a specified number of times. The file name
    given as the first parameter, it can be specified as -, for standard
    input. This file will be opened as read-only and in usual operation it will
    be /dev/hdX or /dev/ide/host0/busX/targetY/lun0/disc depending
    on whether you use devfs or not (NB operating systems other than Linux will
    have different device names).
The output should be able to be easily graphed with gnuplot
    which is what I use to view the results.
  - -b
 
  - the size (in Meg) of the blocks to read/write (default 512M), optionally
      followed by a ':' and the chunk size for read/write operations (default
      1M). Note that the chunk size must be less than or equal to the block size
      and must also be significantly less than the size of the RAM in the
      machine. Also note that for the write test there will be a fsync() after
      writing every chunk.
    
  
 
  - -c
 
  - the number of times to read/write the entire disk.
    
  
 
  - -r
 
  - the range of data (in Meg) to read/write on each pass (default the entire
      device). Useful if you want to quickly test part of a large drive. If a
      single number is given then that is the last block to read, if two numbers
      then it's the start and end of a range. Values are in megs, but they are
      rounded down to the block size.
    
  
 
  - -s
 
  - skip rate. The option -s 10 will cause it to read every 10th block and
      skip the rest. Accepts values from 2 to 20.
    
  
 
  - -f
 
  - the file-name for the input data. This isn't needed on well configured
      systems that have a recent Glibc where you can specify the file name
      without the -f flag.
    
  
 
  - -u
 
  - user-id to use. When running as root specify the UID to run the tests as,
      it is not recommended to use root, so if you want to run as root use -u
      root. Also if you want to specify the group to run as then use the
      user:group format. If you specify a user by name but no group then
      the primary group of that user will be chosen. If you specify a user by
      number and no group then the group will be nogroup.
    
  
 
  - -g
 
  - group-id to use. Same as using :group for the -u parameter,
      just a different way to specify it for compatibility with other programs.
    
  
 
  - -w
 
  - write zero blocks to the disk instead of reading from the disk - will
      destroy data!
    
  
 
This program, it's manual page, and the Debian package were
    written by Russell Coker <russell@coker.com.au>.
The source is available from http://www.coker.com.au/bonnie++
  .
See http://etbe.coker.com.au/category/benchmark for further
    information.