DRVSPEED is rather simple drive speed test. It however measures all pertinent
aspects of drive data transfer rate. Usually most drives have about 50%
higher DTR at outer cylinders or start of the drive than inner cylinders.
Therefore measuring both DTR at start and end of drive gives more realistic
view of performance. Another important variable is the number of sectors
that are read with one BIOS call. Usually this is determined by cluster size
or disk cache. The most common value is 16 sectors or 8KB.

The speed is often limited by the speed of interface. ISA hosted adapter
has normally a speed limit of about 2MB/s. Therefore it is valuable to
measure interface speed by repeatedly reading the same area from cache
memory of the drive. Most drives have a cache memory that has ample speed
reserves. That is why one is able to measure as high as 12MB/s with modern
IDE drives by reading their cache. Healthy sign is when "cache+bus+BIOS speed"
is much higher than "Start of disk" and "End of disk" values. Then one can
be sure that the values represent drive performance and are not limited
by interface.

The source code is included. Because I can't think of anything better, I
leave it under GNU GPL, which means that you can do anything with it except
not sell.
If you port it to other OS, I would like to see the ported code. In DOS
measuring CPU load is not sensible, but in "real" OS it is valuable. Well,
I ought to port this to OS/2 myself, maybe some day..

Version 1.1 adds test for CD-ROM speed. MSCDEX must be loaded. Also
picked one value to display as a result. The idea with DRVSPEED is
to show detailed results, but in some cases one value is better.


About testing
=============

Drvspeed might look like not so usefull test program, but once you get a
grip about meaning of all those numbers, you will be able to make some
surprising interpretations. It often helps to import the numbers to a
spreadsheet and make a graph of them. Below are two interesting examples
of interpreting the results. Usually the results are not this exciting,
but these examples demonstrate the possibilities.


Quantum Bigfoot 1.2GB
=====================

Testing disk 2 (CHS 623/64/63) BIOS Data Transfer Rate
Reading   24192.0KB blocks (about 20 promilles of disk space)

Sectors/  Start of disk  End of disk  Average  cache+bus+BIOS speed
record         KB/s         KB/s        KB/s        KB/s
   64         1589.5       2975.0      2282.2      9368.0
   32         5644.8       2995.2      4320.0      8467.2
   16         5718.1       3015.7      4366.9      6879.6
    8         5718.1       3015.7      4366.9      4402.9
    4          658.1       2975.0      1816.6      2701.2
    2          736.3       2636.5      1686.4      1380.2
Average       3344.2       2935.5      3139.8      5533.2

This drive has an average reading speed of   3139.8KB/s
                                            ===========


Testing disk 2 (CHS 623/64/63) BIOS Data Transfer Rate
Reading   24192.0KB blocks (about 20 promilles of disk space)

Sectors/  Start of disk  End of disk  Average  cache+bus+BIOS speed
record         KB/s         KB/s        KB/s        KB/s
   64         5718.1       2975.0      4346.5      9368.0
   32         5644.8       2995.2      4320.0      8307.4
   16         5718.1       2975.0      4346.5      6773.8
    8         5718.1       3015.7      4366.9      4402.9
    4          658.1       3015.7      1836.9      2701.2
    2          784.8       2701.2      1743.0      1375.9
Average       4040.4       2946.3      3493.3      5488.2

This drive has an average reading speed of   3493.3KB/s
                                            ===========

===============================

Test was run twice because some values were suspiciously low,
but they were all on outer tracks of the disk and that leads
to concluding that they are caused by thermal calibrations.
Bigfoots are 5 1/4" disks and because of big diameter the heat
has much bigger effect than usually. The results are quite good,
but this is certainly no AV disk.


Fujitsu M2954SAU
================

This is a very fast SCSI disk with MR heads and 7200 RPM. Despite the
nominal 10MB/s speed of fast SCSI, the manufacturer claims continous
DTR of 9 to 14MB/s.

Fujitsu was connected to SC-200, NCR53c810 adapter in a P120 machine.
The slower inner track DTR levels at about 6.3MB/s, so that must be
tha fastest possible speed. Outer tracks show no leveling and 10MB/s
fast SCSI ought to cause slower raising of DTR after about 6-7 MB/s.
This drive alone can saturate fast SCSI and should show better results
with Ultra SCSI version.


Testing disk 2 (CHS 1022/132/63) BIOS Data Transfer Rate
Reading   79002.0KB blocks (about 20 promilles of disk space)

Sectors/  Start of disk  End of disk  Average  cache+bus+BIOS speed
record         KB/s         KB/s        KB/s        KB/s
  128         8032.6       6362.1      7197.4      3834.2
   64         7335.9       6390.4      6863.1      3844.5
   32         6224.4       6334.1      6279.2      1919.7
   16         4410.5       4593.7      4502.1       960.5
    8         3046.3       2995.5      3020.9       480.1
    4         1862.5       1834.0      1848.2       240.1
    2         1058.0       1001.3      1029.6       120.0
Average       3989.6       3858.2      3923.9      1260.8

This drive has an average reading speed of   3923.9KB/s
                                            ===========

It is widely known that SCSI commands are complex and processing them is
slow. IDE commands are simple and they are processed about 100 times
faster. Fujitsu is fast but only if reading many sectors per BIOS call
ie. fewer commands are processed. Contrast this to a IDE drive with
faster than average imbedded controller, ST32140A.



Testing disk 0 (CHS 525/64/63) BIOS Data Transfer Rate
Reading   20160.0KB blocks (about 20 promilles of disk space)

Sectors/  Start of disk  End of disk  Average  cache+bus+BIOS speed
record         KB/s         KB/s        KB/s        KB/s
  128         4420.6       2237.3      3328.9     10791.5
   64         4420.6       2237.3      3328.9     10483.2
   32         4420.6       2237.3      3328.9      9916.5
   16         4420.6       2237.3      3328.9      8949.1
    8         4420.6       2237.3      3328.9      7488.0
    4         4420.6       2264.9      3342.8      5733.0
    2         3597.2       2251.0      2924.1      3744.0
Average       4283.4       2244.2      3263.8      7719.0

This drive has an average reading speed of   3263.8KB/s
                                            ===========

Only when reading 2 sectors per BIOS call, there is noticeable effect
of command processing time.

We have now base data for continue testing with more real world
setup. To test file system read speed we throw about 100MB to bit bucket
with "copy /b d:\100MB.fil nul" and take time. The results were:

                DTR     time
                MB/s     s
OS/2            7,09    12,91
OS/2, HPFS      6,12    14,96
NT 3.51, HPFS   4,84    18,92
NT 3.51, NTFS   4,81    19,01
NT 3.51         4,56    20,05
MS-DOS 7.0      7,37    12,42
MS-DOS 7.0,     5,03    18,18
smartdrv
Win95           2,44    37,57


MS-DOS 7.0 means Win95 booted straight to command line. Then I loaded
smartdrv for second result and third is normal Win95 booted to GUI.
Filesystem is FAT if not mentioned. Partition is 2GB and empty except for
test file, no other partitions defined.

Now one can guess how many sectors per BIOS/driver call each environment
reads. Win95 propably reads 8, NT and Smartdrive 16, OS/2 32 or 64
depending on filesystem. With FAT bare MS-DOS 7.0 and possibly also
OS/2 depend on cluster size to determine number of sectors per read
call.

With Win95 even fastest SCSI drives are markedly slower than normal new
IDE drives and even with NT there usually is no speed advantage.
With OS/2 only a small fraction of speed is wasted and with a bit slower
SCSI disks there should be no loss.

The sad part of the story is that only fools and those few who really
need the capacity options of SCSI buy SCSI for Windows use, keeping it
rare and expensive.
Another sad thing is that the fastest drives are sold with SCSI interface
even when IDE would allow faster speeds in normal conditions than SCSI.
Using wide and/or Ultra SCSI doesn't help slow command processing at all,
it just raises upper limit for DTR and need for more sectors per read
call. RAID is an another matter, but hardly common on desktops.
