SPEW

The spew package is used to test I/O performance and to generate load
on character devices, block devices, and file systems.  It is similar
to the lmdd program found in the lmbench test-suite
(http://www.bitmover.com/lmbench). It is a bit easier to use than lmdd
and has some added functionality.  For example, it can test both
random and sequential I/O.

There is a web-page for the spew project.  It can be found at:

   http://spew.berlios.de

The spew package includes 3 programs: spew, gorge, and regorge. Gorge and 
regorge are actually just links to the spew executable.

spew:
  
  The spew program creates an output stream and writes it to a file or
  device. Various patterns can be used to test data integrity. No
  system calls are used to generate the output data, so there is very
  little overhead created by the spew program itself.

  The spew program can generate both cumulative and semi-instantaneous
  transfer-rate statistics. Here is an example of spew being used to
  test the sequential transfer rate to a file system:

  $ spew --pattern=random --min-buffer-size=64k 1g /tmp/bigfile
  Write transfer rate:    46677.47 KiB/s    Transfer time: 00:00:22

  You can use the --progress option to display a "progress-meter" that
  also shows intermediate transfer rates:

  $ spew --progress --pattern=numbers --min-buffer-size=64k 1g /tmp/big file
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w   6%    67455.44 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  12%    66028.24 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  19%    65537.31 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  25%    65576.72 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  31%    64064.94 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  38%    64511.87 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  44%    64721.35 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  50%    64315.61 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  56%    62824.13 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  62%    31459.13 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  69%    61698.42 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  75%    62481.59 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  81%    63303.35 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  88%    63340.19 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  94%     9244.02 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w 100%    52467.96 KiB/s
  Write transfer rate:    44277.80 KiB/s    Transfer time: 00:00:23
   
gorge:

  The gorge program is similar to spew except that it reads data
  rather than writes it.  Gorge is generally used to read data
  generated by spew, but this is only needed for data integrity
  testing. Here is an example of gorge being used to test the
  sequential transfer rate from a file system:

  $ gorge --pattern=numbers --min-buffer-size=64k 1g /tmp/bigfile 
  Read transfer rate:     57793.09 KiB/s    Transfer time: 00:00:18

  Like spew, you can also use the --progress option with gorge:

  $ gorge --progress --pattern=numbers --min-buffer-size=64k 1g /tmp/bigfile
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r   6%    12410.84 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  12%    18828.70 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  19%    45099.61 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  25%    47520.40 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  31%    48074.34 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  38%    51332.70 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  44%    50236.13 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  50%    50963.74 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  56%    19302.02 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  62%    50757.10 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  69%    46999.70 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  75%    51887.14 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  81%    20509.24 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  88%   118888.97 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  94%   198531.37 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r 100%   199081.99 KiB/s
  Read transfer rate:     36694.72 KiB/s    Transfer time: 00:00:28
  
regorge:

  The regorge program just does a spew followed by a gorge.  Data integrity
  is checked during the gorge phase.

  $ regorge --pattern=numbers --min-buffer-size=64k 1g /tmp/bigfile
  Write transfer rate:    72985.71 KiB/s    Transfer time: 00:00:14	
  Read transfer rate:     43234.09 KiB/s    Transfer time: 00:00:24
  
  Like spew and gorge, you can also use the --progress option with regorge:

  $ regorge --progress --pattern=numbers --min-buffer-size=64k 1g /tmp/bigfile
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w   6%   198344.51 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  12%   180722.66 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  19%   180448.48 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  25%   180828.37 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  31%   175934.15 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  38%   176317.55 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  44%   176369.75 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  50%   175558.53 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  56%   175559.94 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  62%    33211.64 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  69%    18744.87 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  75%   171271.02 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  81%    14932.66 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  88%   169616.72 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w  94%   170134.11 KiB/s
  w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w 100%   171290.72 KiB/s
  Write transfer rate:    71438.31 KiB/s    Transfer time: 00:00:14
  
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r   6%     5650.53 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  12%    42761.38 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  19%    51937.35 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  25%    46905.78 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  31%    50760.52 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  38%    46721.39 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  44%    52162.35 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  50%    38172.26 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  56%    41188.34 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  62%    47083.10 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  69%    51387.36 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  75%    48277.87 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  81%    48538.21 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  88%   123075.07 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r  94%   179621.55 KiB/s
  r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r-r 100%   176579.31 KiB/s
  Read transfer rate:     35313.10 KiB/s    Transfer time: 00:00:29
  
Spew, gorge, and regorge have lots of different options.  Consult the
man-page for more information.

PORTS

The spew package has currently been ported to ia32 Linux, ia64 Linux,
parisc64 Linux, HP-UX, and MS Windows.

