Document:         diskmbps.txt
File Group:       Classic Benchmarks
Creation Date:    26 May 1997
Revision Date:

Title:            Disk Data Transfer Rate Test
Keywords:         BENCHMARK PERFORMANCE DISK NETWORK CD 

Abstract:         This document contains details of pre-compiled C
                  programs that measure disk data transfer rates either
                  on the main PC disk or a network drive. Memory transfer
                  rates from disk cache can also be measured. An option is
                  also provided to read any existing file including from
                  CD ROM drives. The program generates a time stamped log
                  file, making it suitable for multitasking tests. Windows
                  95/NT, OS/2 and DOS versions are supplied. 

Note:             The program is still under test and should be treated
                  as beta test software.  Please submit feedback directly
                  directly to Roy, or as a posting in Section 12.

WARNING           The programs have been tested on various PCs including
                  486, Pentium and Pentium Pro systems. They have also
                  been run via Windows 95 and  NT 4.0. The DOS versions
                  have also been run directly in the associated DOS mode
                  and when booted as DOS only with MS DOS 6.2.

                  However, it is inevitable that they will not run properly
                  in all circumstances or occasionally may cause certain
                  systems to hang. Likely reasons for failure include
                  hardware or software incompatibility but particularly
                  miss use.

                  Before running the programs, ensure that sufficient free
                  disk space is available. Filling the disk to the last
                  byte can have serious consequences.                 

                  RUN AT YOUR OWN RISK                   

 Contributor:     Roy_Longbottom@compuserve.com


DISK DATA TRANSFER RATE TEST

0. SUMMARY

DISKDOS.EXE, DISKNT95.EXE and DISKOS2.EXE are compilations of a disk 
performance test to run via DOS, Windows 95 or NT and OS/2 respectively. 
DISKDOS requires DOS4GW.EXE the protected run-time program.

Parameters are required to define the file size and number of read passes, 
either by manual input or run time parameters appended to a xxxxx.EXE 
command line. The program writes and reads a single serial file to disk. 
This can be a disk on a remote computer. The parameters define the file 
size and number of read passes. Using different parameters, the program can 
read an existing file from disk or CD ROM. By defining the file size 
somewhat smaller than RAM size, the program can measure data transfer rates 
via a RAM based disk cache.  

The program calculates the data transfer rate in megabytes per second, 
displaying the results after writing and for each read pass. The results 
are also saved in a log file with name format JHHMMSSZ.TXT, where HHMMSS 
represent the time that the test started and Z can be changed to a 
different letter to avoid contention when multiple copies are run 
simultaneously. The data file name is JHHMMSSZ.TMP.

The programs can be used for testing multitasking capabilities.


0.1  FAST START

Unzip the programs into a new directory. Result logs will be written in 
this directory when the programs are run. Note free disk space. DO NOT RUN 
WITH FILE SIZES GREATER THAN THE FREE SPACE. The program can be run on 
compressed disks but some care is required on interpretation of results.

Windows varieties - close all other applications - display new directory - 
click on EXE icon.

DOS - reboot in direct DOS mode - change directory to that defined - enter 
DISKDOS at command prompt.

Batch test  Construct a BAT file (CMD file OS/2) with commands such as:
            
            DISKNT95 100 4
            DISKNT95 16 20

            to write a 100 MB file and read it four times, followed by a
            16 MB file read 20 times.

            Click on the BAT file icon or execute the BAT file from a 
            command line prompt.

Multitask   Construct a BAT file (CMD file OS/2) with commands such as:

            Start DISKNT95 50 6 A
            Start DISKST95 40 5 B E:\TEMP\
            Start DISKNT95  0 4 C D:\funstuff\videos\weezer.avi

            to run three versions of the program concurrently - write
            50 MB file and read six times, results log suffix A - write
            40 MB file on network drive E: and read four times, results 
            log suffix B - read CD ROM file four times, results log
            suffix C.

            Click on the BAT file icon or execute the BAT file from a 
            command line prompt.

 
1. INTRODUCTION

The program was compiled from DISKUT.CPP by a Watcom C/C++ 10.5 compiler. 
It can be run from a local disk or a network drive. Manual run time input 
parameters are provided for Server Name, Client Name, File Size 
(Megabytes), and number of times to read the file. Alternatively, the 
program can be run with no manual input via run time parameters, including 
the file path. This provides flexibility in testing network drives 

A further option is a read only facility, particularly provided so that CD 
ROM data transfer rates can be measured.

The data transfer rates in megabytes per second are measured for both 
writing and reading, the results being displayed and sent to a results 
file. The program reads and writes using 64KB block sizes but the size used 
by the Operating System will probably be different.

With a file (or files) somewhat smaller than available RAM, the program can 
measure data transfer rates from a memory based disk cache. When testing on 
a network, the file should generally be greater than the RAM size on the PC 
that is running the program to ensure that data is not retained in a local 
cache.

The filenames are mainly derived from the clock time to try to ensure that 
different names will be used if multiple versions are run. The format is 
JHHMMSSZ.TMP for the data file and JHHMMSSZ.TXT for the results file. The 
run time parameters allow the Z suffix to be changed to different 
characters as a further protection when multiple tasks are started at the 
same time.

Versions provided are DISKNT95.EXE for Windows 95 and NT, DISKOS2.EXE for 
OS/2 and DISKDOS.EXE for MS DOS. The latter needs DOS4GW.EXE the protected
run-time program.


2.  DATA

The program writes 16 blocks of 16384 words (4 bytes each) per megabyte. 
The same data, with numbers 1 to 16384 in the block, is repeatedly written. 
On reading, the last word is checked. These procedures were adopted to 
reduce CPU time due to data generation and checking results.


3.  EXAMPLE SCREEN DISPLAY

The following is for a large file and manual input.

DISKUT C++ Disk Performance Test NT Version 1 Thu May 15 22:24:44 1997

      Copyright (C) 1997, Roy Longbottom. All rights reserved


    J222444Z Enter server computer name: PPRO
    J222444Z Enter client computer name: PPRO

    File Size - Enter number of 1048576 repeats 33


    Data File J222444Z.tmp     33.0 Mbytes

    Enter number of read passes               4


     Data file closed 34603008 bytes (data*33) 

     8.62 seconds for writing file at      3.83 Mbytes/second

    11.98 seconds for read pass   1 at     2.75 Mbytes/second 
    10.38 seconds for read pass   2 at     3.18 Mbytes/second 
    10.82 seconds for read pass   3 at     3.05 Mbytes/second 
    11.75 seconds for read pass   4 at     2.81 Mbytes/second 

    End of program - results are in file J222444Z.txt

    Press any key to end


4.  EXAMPLES FILE OUTPUT

The results output file is similar to above, except a time stamp is given 
indicating when a pass finishes. Examples given in appendices include:

Large and small files written and read on a Pentium Pro (PPRO) based PC
Large and small files written and read on a 100 MHz Pentium (P100) based PC
Large and small files written and read on an 80486DX2/66 (486) based PC
Reading large CD ROM file on PPRO
Reading large CD ROM file on P100
PPRO client, access via LAN to files on P100 server, large and small files
P100 client, access via LAN to files on PPRO server, large and small files
P100 and 486 clients, access via LAN to files on PPRO server large files

Small files are invariably read from memory based disk caches.

Results include via Windows 95 (P100 and 486), NT 4.0 (PPRO) and MS DOS 6.2 
(All).


5.  MANUAL INPUT PARAMETERS

These can be used when an EXE file is run from a command line prompt or via 
a BAT file. The format is MMM RR X Path, where MMM is the file size in 
megabytes and RR is the number of read passes. X represents a unique 
character to replace Z in the data file name when multiple copies of the 
program are run. The path parameter identifies the disk drive and directory 
and is particularly provided for testing a remote computer. If the path is 
included, the unique file character must be provided or the path will  be 
ignored. Examples are:

DISKDOS 25 8

DOS command to write a 25 MB file in the same directory as DISKDOS.EXE and 
to read it 8 times. This could also be in a BAT file which could be run by 
clicking on the icon.


Start DISKNT95 33 6 A
Start DISKNT95 33 6 B

This could be in a BAT file to run two versions at the same time under 
Windows 95 or NT with data file suffixes of A and B.


DISKNT95 32 6
DISKNT95 20 12

This could be in a BAT file to first run a disk test on a Windows 95 or NT 
system with 32 MB memory, followed by a test where the data would 
eventually reside in the memory based disk cache to provide memory data 
transfer rates.


DISKNT95 20 8 Z E:\TEMP\

This would generate a file for testing on network drive E in TEMP 
directory.


DISKNT95 20 8 E:\TEMP\

This is WRONG. With the file letter missing, a local file will be written 
with file name suffix E.

Reading only is achieved by defining the first parameter as 0. The second 
parameter still defines the number of read passes. The file suffix 
character must still be given. The fourth parameter defines the path and 
file to be read. The following example to read a file from CD ROM could be 
a command or included in a BAT file:
 
DiskNT95 0 4 N D:\funstuff\videos\weezer.avi

Note that the file is 30 MB and is on the Windows 95 CD ROM.


6.  TESTING VIA A REMOTE CLIENT

The program can be run by clicking on the icon from a directory display on 
a remote computer for use with manual input parameters. In this case, the 
data file will be generated on the server. The EXE file can also be on the 
client with run time parameters specifying a directory on a server, as 
indicated above. With the file on the server, the following methods can be 
used, for example:

F:\TEST\DISKNT95 32 6  Downloads the program and runs using the client disk

F:
CD \TEST\
DISKNT95 32 6          Downloads the program using files on server F disk

Some consideration of client and server memory capacity is required for 
remote testing. In order to ensure that the network is used for reading and 
the data is not retained in the local memory based disk cache, the file 
size must be greater than available memory capacity on the client. The size 
must also be greater than memory on the server to use the disk 
continuously. With an appropriate balance of memory capacity, the fastest 
communications transfers are likely to be obtained where the file can 
reside in server disk cache.

On carrying out tests with multiple CPUs, it is ESSENTIAL that all system 
clocks are set at the same time (within a second or so) if the results are 
to be interpreted later, taking into account concurrent activity.  


7.  SPEED EXPECTATIONS

The data transfer rates obtained by this program may not be as high as that 
obtained via specially written hardware test programs. These are likely to 
be written in assembly language, only run under DOS and may even access 
disk sectors directly, ignoring the logical disk structure. Such programs 
can also just read data without doing anything with it.

All modern disk drives have a cache in the disk controller. When a read 
request is issued, the cache will be filled with sequential data. The first 
part of the data will also be transferred to memory. Following read 
requests can transfer data from the disk controller cache at high speed.

One fact is certain. A sustained data transfer rate faster than can be 
delivered by the disk is not possible.

Sometime ago, most disk drives had 63 x 512 byte sectors per track and 
rotated at 3600 RPM or 60 revolutions per second. The maximum sustained 
transfer rate would be 63 x 0.5 x 60 = 1890 Kbytes per second or, dividing 
by 1024, 1.846 megabytes per second. The actual transfer rate obtained can 
be considerably less than this for various reasons, including:

  Fragmentation, where the data is not in consecutive sectors and disk
  revolutions are wasted. In this case, running the defragmentation
  software should help. Generating a large extra file before the test
  might also help. This can be done by interrupting (break key or close
  window) the program after the file is written and before reading is
  finished (but remember to delete the TMP file later).

  CPU time required to transfer the data over the bus and for subsequent
  program activity being greater than the disk revolution time.

  Synchronisation problems or the way in which the controller and driver
  work, leading to missed disk revolutions.

The situation has become more complicated with more modern disk drives 
where the number of sectors per track is not constant. The technology makes 
use of the fact that, at a given recording density, more sectors can be 
written on the longer, outer tracks.

Disk rotation speeds have also increased through 4500 RPM, 5400 RPM, 7200 
RPM to greater than 10000 RPM. 

The Quantum Fireball TM2110A 2.1 GB disk on my Pentium Pro rotates at 4500 
RPM (75 RPS) and has 104 to 232 sectors per track or 52 to 116 KB. This 
leads to transfer rates between 3900 and 8700 KB per second. The fastest 
figure is similar to that obtained with the CORETEST * benchmark.

            * CORETEST by Core International Forum Library 4

Running DISKNT95 on this disk, which is currently about half full, about 
3.6 MB/second is obtained. As indicted below, this appears to be limited by 
the amount of CPU time used. Running DISKDOS via NT produces a slower 
result of around 2.5 MB/second but, when booted as a DOS 6.2 system, 
produced 5 MB/second.

In looking for evidence that the originally loaded software would occupy 
the fastest tracks on the disk, the read only option was used to read a 4 
MB Windows help file (\WINDOWS\BOOKS\WSYS.HLP). This file was also read 
with READFILE * which uses MS Windows I/O bypassing the memory disk cache. 
Both benchmarks also read a permanent file created by DiskNT95. Only 
DISKDOS showed that the old file could be read faster, the others, no 
doubt, being more influenced by excessive CPU time.

                      READFILE     DISKNT95      DISKDOS
                       Via NT       Via NT     Via DOS 6.2 
                       MB/sec       MB/sec       MB/sec

      40 MB TMP         4.4          3.9           5.0
      WSYS.HLP          4.4          4.0           6.0

            * READFILE by Gilles Vollant Forum Library 4 


8.  CPU TIME USED

With IDE based disk drives (as confirmed by Tom Cattrall), the CPU time 
involved in data transfer is excessive and SCSI drives should be used for 
multi-user disk dependent applications. It was not until I obtained a 
Pentium Pro that I saw anything less than 100% CPU utilisation on Windows 
based disk benchmarks.

A further complication is that this disk benchmark uses general purpose I/O 
functions to allow DOS and Windows versions to be produced. The Watcom 
compiler can also include MS Windows I/O procedures (as used in the 
READFILE benchmark) and this appears to be a little more efficient.

In running the benchmark on the Pentium Pro local disk, typically, at 3.6 
MB/sec, 90% CPU utilisation is indicated by the performance monitor. This, 
and other measurements, suggest 100% utilisation at 4 MB/sec and this is 
the maximum speed that can be obtained (with the NT version). The amount of 
CPU time used is equivalent to 0.25 CPU seconds per megabyte. Based on 
this, my 100 MHz Pentium based PC could not be expected to achieve better 
than 2 MB/sec.

When the file is in the memory cache, CPU utilisation is 100% but the speed 
obtained shows that the CPU time used in transferring data and by the 
program is relatively low.

CPU loading on receiving or sending data via a LAN (with the particular 
drivers used) is even higher than reading disk. Utilisation and loading 
with the Pentium Pro as the client then the server are shown. The remote PC 
is the P100 and data is not read from disk but is in the memory based 
cache. 

     Reading From               MB/Sec    CPU ut    CP sec/MB

     Local disk                  3.6       90%        0.25
     Local memory cache         75.0      100%        0.013 
     LAN remote cache receive    0.95      68%        0.72
     LAN local cache send        0.84      55%        0.65


9.  EXAMPLE RESULTS

Example results are given in Appendices 1 to 4

Reads from cache were all at 100% CPU utilisation.

                 Local transfers    
 
                      Disk    Cache      Disk       Disk
                      MB/S    MB/S      CPU ut    CP sec/MB

    PPro CoreTest     8.6
    PPro DOS 6.2      5.2                N/A                        
    PPro NT DOS       2.4     21.0       75%        0.31
    PPro NT           3.6     75.0       90%        0.25
    PPro 8* CD read   1.2                40%        0.33

    P100 CoreTest     1.8
    P100 DOS 6.2      1.6                N/A
    P100 Win95 DOS    1.3      6.5      100%        0.77
    P100 Win 95       1.8     16.7      100%        0.56
    P100 4* CD read   0.6               100%        1.67

    486  CoreTest     1.8
    486  DOS 6.2      1.1                N/A
    486  Win95        0.9      6.1      100%        1.11
 
    PPro Client       0.65     0.95      45%        0.69      
    PPro Server       0.67     0.84      55%        0.82

    P100 Client       0.67     0.84     100%        1.49
    P100 Server       0.65     0.95      85%        1.31

    PPro Server (2)   0.60               60%        1.00
    P100 Client       0.32              100%        3.12
    486  Client       0.28              100%        3.57

It appears that all the software I have just loops around waiting for data 
to appear, at least, once it thinks that it is coming.


10.  MULTIPLE PROGRAMS ON ONE PC

DiskNT95 was run four times on the Pentium Pro with NT 4.0, generating 40 
MB files and the program killed before the files were erased. The following 
batch file was then run to read the files (renamed), first with J1 and J3, 
then J1 to J3 and finally all four tasks.

All multitasking tests were run with Control Panel, System Properties, 
Performance, with performance boost for foreground tasks set to none.

Start DiskNT95 0 4 A J1.tmp
Start DiskNT95 0 4 B J2.tmp
Start DiskNT95 0 4 C J3.tmp
Start DiskNT95 0 4 D J4.tmp

As was expected, the disk heads were thrashing about when multiple copies 
of the programs were running.

During all the three tests, CPU utilisation averaged at about 50%. This 
means that the disk was 100% utilised and was confirmed by the job run 
times averaging 40 seconds with two tasks, 60 seconds for each of three 
tasks and 80 seconds when all four were running. With these running times, 
the total throughput was 2.0 to 2.1 MB/second.

It would be nice to be able to have details of the real physical reading 
rates and block sizes but the NT performance monitor settings do not work 
(IDE disk problem?). However, some guess work is possible.

Average service time for random access on a disk comprises the sum of the 
following:

  Average head movement time - the Quantum Fireball TM2110A has a
  specification of 3 ms minimum, 18 ms maximum, (18+3)/2 or 10.5 ms
  average. As the files are quite small and not using too many tracks,
  an average of 4 ms should be a reasonable estimate.

  Latency - an average delay of half a revolution or 6.67 ms is expected,
  waiting for the data to reach the read head.

  Data transfer time at 3900 and 8700 KB per second. As the disk is half
  full let us assume 6300 KB per second or 5 ms for 32 KB reads.

The throughput obtained of 2 MB/second equates to service time of 500 ms 
per megabyte (1024 KB). At 32 KB, the maximum I/O rate possible would be 64 
I/Os per second and there would be 32 I/Os per 1024 KB. At 500 ms, this 
would give 15.5 ms per I/O or similar to the sum of the above service time 
estimates.

The above pair of calculations are completely dissimilar for block sizes of 
64 KB or 16 KB and below but who knows how is really works with all that 
caching.


11.  MULTIPLE CD READS

The following BAT file was used to measure CD transfer rates with two files 
being read at the same time. 
  
Start DiskNT95 0 6 N D:\funstuff\videos\weezer.avi
Start DiskNT95 0 4 D D:\funstuff\videos\goodtime.avi

The average CPU utilisation was 12.5% and each program achieved 0.18 
MB/second. As shown above, with one program reading a file, the speed was 
about 1.2 MB/second and CPU utilisation 40%, giving 0.33 CP seconds per MB. 
The multitasking test produces a similar loading of 0.35 CP seconds per MB.

The eight speed drive is rated at 1.2 MB/second with average access time of 
160 ms. Rotation time varies between 1600 RPM and 4240 RPM or 14.2 to 37.5 
ms per revolution.

At 1.2 MB/S the transfer time is 0.81 ms per KB and total service time 2.7 
ms per KB for this test with a total throughput of 0.36 MB/S. This 
indicates 1.89 ms per KB for head movement time and latency. The latter 
equates to 120 ms per access if reads were 64 KB or 60 ms per access for 32 
KB (which one is it?). 


12.  CD AND DISK

The following BAT file was used to read a 40 MB file from disk (generated  
by DISKNT95) and a CD file concurrently.

Start DiskNT95 0 6 N D:\funstuff\videos\weezer.avi
Start DiskNT95 0 8 A J1.tmp

This generated 91% CPU utilisation with the CD achieving slightly less than 
1.2 MB/second, as when run by itself, and the disk 2.1 MB/second. The CD 
read uses 40% CPU utilisation leaving 51% for the disk.

Running the program with just J1.TMP produced 84.5% CPU utilisation at an 
average of 3.52 MB/second. This is equivalent loading to 50.4% CPU 
utilisation at 2.1 MB/second.

NT appears to give priority to processor time for reading the CD. This 
would leave 60% of the elapsed time for the disk reading program. So a 
reading speed of 0.6 x 3.52 or 2.1 MB/second might be expected (as it was).

The same disk file was read a few times via READFILE (Library 4) 
concurrently with the CD with a BAT file containing:

Start DiskNT95 0 6 N D:\funstuff\videos\weezer.avi
readfile J1.tmp
readfile J1.tmp
readfile J1.tmp
readfile J1.tmp

This time the CD speed obtained was 0.62 MB/second, NT giving more 
preference to reading disk with transfer rate reduced from 4.3 to 3.5 
MB/second. CPU utilisation was 100%.


***********************************************************************

APPENDIX 1 PENTIUM PRO

Dell XPS Pro, 200 MHz P6, 32 MB memory, 256K cache, Quantum Fireball 2.1 GB 
disk with 128K cache, 8 speed CD ROM ATAPI interface, Windows NT 4.0 
Workstation.

CORETEST (Library 4) 8772 KB/sec

6 Tasks run with the following BAT file

DiskNT95 10 20 N
DiskNT95 40 6 N
DiskDOS 10 20 D
DiskDOS 40 6 D
DiskNT95 0 4 N D:\funstuff\videos\weezer.avi
DiskDOS  0 4 D D:\funstuff\videos\weezer.avi


A1.1 NT Version Small File

Data eventually from memory cache then 100% CPU utilisation

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J143308N Wed May 21 14:33:08 1997
  
    Data File J143308N.tmp     10.0 Mbytes


    Files written 10485760 bytes (data*10)

      1.62 seconds for writing file  at     6.17 MB/s 14:33:10
      0.40 seconds for read pass   1 at    25.00 MB/s 14:33:10
      0.13 seconds for read pass   2 at    76.92 MB/s 14:33:10
      0.13 seconds for read pass   3 at    76.92 MB/s 14:33:11
      0.14 seconds for read pass   4 at    71.43 MB/s 14:33:11
      0.21 seconds for read pass   5 at    47.62 MB/s 14:33:11
      0.14 seconds for read pass   6 at    71.43 MB/s 14:33:11
      0.13 seconds for read pass   7 at    76.92 MB/s 14:33:11
      0.13 seconds for read pass   8 at    76.92 MB/s 14:33:11
      0.14 seconds for read pass   9 at    71.43 MB/s 14:33:11
      0.13 seconds for read pass  10 at    76.92 MB/s 14:33:12
      0.13 seconds for read pass  11 at    76.92 MB/s 14:33:12
      0.14 seconds for read pass  12 at    71.43 MB/s 14:33:12
      0.14 seconds for read pass  13 at    71.43 MB/s 14:33:12
      0.13 seconds for read pass  14 at    76.92 MB/s 14:33:12
      0.13 seconds for read pass  15 at    76.92 MB/s 14:33:12
      0.14 seconds for read pass  16 at    71.43 MB/s 14:33:12
      0.13 seconds for read pass  17 at    76.92 MB/s 14:33:12
      0.13 seconds for read pass  18 at    76.92 MB/s 14:33:13
      0.14 seconds for read pass  19 at    71.43 MB/s 14:33:13
      0.13 seconds for read pass  20 at    76.92 MB/s 14:33:13


A1.2 NT Version Large File  

Reading disk 90% CPU utilisation

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J143313N Wed May 21 14:33:13 1997
  
    Data File J143313N.tmp     40.0 Mbytes


    Files written 41943040 bytes (data*40)

      8.31 seconds for writing file  at     4.81 MB/s 14:33:21
     14.14 seconds for read pass   1 at     2.83 MB/s 14:33:36
     10.32 seconds for read pass   2 at     3.88 MB/s 14:33:47
     12.69 seconds for read pass   3 at     3.15 MB/s 14:33:59
     12.08 seconds for read pass   4 at     3.31 MB/s 14:34:12
     10.08 seconds for read pass   5 at     3.97 MB/s 14:34:22
     10.34 seconds for read pass   6 at     3.87 MB/s 14:34:32


A1.3 DOS Version via NT small file

Data eventually from memory cache 100% CPU utilisation

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J143440D Wed May 21 14:34:40 1997
  
    Data File J143440D.tmp     10.0 Mbytes


    Files written 10485760 bytes (data*10)

      2.03 seconds for writing file  at     4.93 MB/s 14:34:42
      0.71 seconds for read pass   1 at    14.08 MB/s 14:34:43
      0.55 seconds for read pass   2 at    18.18 MB/s 14:34:44
      0.44 seconds for read pass   3 at    22.73 MB/s 14:34:44
      0.50 seconds for read pass   4 at    20.00 MB/s 14:34:45
      0.44 seconds for read pass   5 at    22.73 MB/s 14:34:45
      0.49 seconds for read pass   6 at    20.41 MB/s 14:34:46
      0.44 seconds for read pass   7 at    22.73 MB/s 14:34:46
      0.49 seconds for read pass   8 at    20.41 MB/s 14:34:46
      0.44 seconds for read pass   9 at    22.73 MB/s 14:34:47
      0.50 seconds for read pass  10 at    20.00 MB/s 14:34:47
      0.49 seconds for read pass  11 at    20.41 MB/s 14:34:48
      0.44 seconds for read pass  12 at    22.73 MB/s 14:34:48
      0.50 seconds for read pass  13 at    20.00 MB/s 14:34:49
      0.44 seconds for read pass  14 at    22.73 MB/s 14:34:49
      0.44 seconds for read pass  15 at    22.73 MB/s 14:34:50
      0.49 seconds for read pass  16 at    20.41 MB/s 14:34:50
      0.49 seconds for read pass  17 at    20.41 MB/s 14:34:51
      0.44 seconds for read pass  18 at    22.73 MB/s 14:34:51
      0.50 seconds for read pass  19 at    20.00 MB/s 14:34:52
      0.44 seconds for read pass  20 at    22.73 MB/s 14:34:52


A1.4 DOS Version via NT large file

Reading disk 75% CPU utilisation

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J143453D Wed May 21 14:34:53 1997
  
    Data File J143453D.tmp     40.0 Mbytes


    Files written 41943040 bytes (data*40)

      9.78 seconds for writing file  at     4.09 MB/s 14:35:03
     19.28 seconds for read pass   1 at     2.07 MB/s 14:35:22
     15.92 seconds for read pass   2 at     2.51 MB/s 14:35:38
     15.44 seconds for read pass   3 at     2.59 MB/s 14:35:53
     17.14 seconds for read pass   4 at     2.33 MB/s 14:36:10
     16.03 seconds for read pass   5 at     2.50 MB/s 14:36:26
     16.10 seconds for read pass   6 at     2.48 MB/s 14:36:43


A1.5 NT version reading CD

Reading 8 speed CD drive 40% CPU utilisation

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Reading file D:\funstuff\videos\weezer.avi

    Job J143646N Wed May 21 14:36:46 1997
  
     26.07 seconds     30.1MB pass   1 at     1.15 MB/s 14:37:13
     27.54 seconds     30.1MB pass   2 at     1.09 MB/s 14:37:40
     25.96 seconds     30.1MB pass   3 at     1.16 MB/s 14:38:06
     25.86 seconds     30.1MB pass   4 at     1.16 MB/s 14:38:32


A1.6 DOS version via NT reading CD

Reading 8 speed CD drive 40% CPU utilisation

##############################################
    Disk test diskut in C++ DOS Version 1

    Reading file D:\funstuff\videos\weezer.avi

    Job J143837D Wed May 21 14:38:37 1997
  
     25.71 seconds     30.1MB pass   1 at     1.17 MB/s 14:39:02
     24.93 seconds     30.1MB pass   2 at     1.21 MB/s 14:39:27
     26.20 seconds     30.1MB pass   3 at     1.15 MB/s 14:39:53
     26.15 seconds     30.1MB pass   4 at     1.15 MB/s 14:40:20


A1.7 DOS version booted with DOS 6.2, no SmartDrive, small file 

Command line used DiskDOS 8 8 - not as fast as could be

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J150208Z Wed May 21 15:02:08 1997
  
    Data File J150208Z.tmp      8.0 Mbytes


    Files written 8388608 bytes (data*8)

      1.97 seconds for writing file  at     4.06 MB/s 15:02:10
      1.98 seconds for read pass   1 at     4.04 MB/s 15:02:12
      1.87 seconds for read pass   2 at     4.28 MB/s 15:02:13
      1.92 seconds for read pass   3 at     4.17 MB/s 15:02:15
      1.87 seconds for read pass   4 at     4.28 MB/s 15:02:17
      1.87 seconds for read pass   5 at     4.28 MB/s 15:02:19
      1.92 seconds for read pass   6 at     4.17 MB/s 15:02:21
      1.87 seconds for read pass   7 at     4.28 MB/s 15:02:23
      1.86 seconds for read pass   8 at     4.30 MB/s 15:02:25


DiskDos 30 6 - 30 MB file written, CTRL/BREAK pressed to stop
test without deleting file


A1.8 DOS version booted with DOS 6.2, no SmartDrive, small file 

Repeat DiskDOS 8 8

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J150403Z Wed May 21 15:04:03 1997
  
    Data File J150403Z.tmp      8.0 Mbytes


    Files written 8388608 bytes (data*8)

      1.64 seconds for writing file  at     4.88 MB/s 15:04:05
      1.60 seconds for read pass   1 at     5.00 MB/s 15:04:06
      1.53 seconds for read pass   2 at     5.23 MB/s 15:04:08
      1.54 seconds for read pass   3 at     5.19 MB/s 15:04:10
      1.54 seconds for read pass   4 at     5.19 MB/s 15:04:11
      1.54 seconds for read pass   5 at     5.19 MB/s 15:04:13
      1.54 seconds for read pass   6 at     5.19 MB/s 15:04:14
      1.53 seconds for read pass   7 at     5.23 MB/s 15:04:16
      1.54 seconds for read pass   8 at     5.19 MB/s 15:04:17


A1.9 DOS version booted with DOS 6.2, no SmartDrive, large file 

Command used DiskDOS 40 6

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J150444Z Wed May 21 15:04:44 1997
  
    Data File J150444Z.tmp     40.0 Mbytes


    Files written 41943040 bytes (data*40)

      8.13 seconds for writing file  at     4.92 MB/s 15:04:52
      7.86 seconds for read pass   1 at     5.09 MB/s 15:05:00
      7.74 seconds for read pass   2 at     5.17 MB/s 15:05:08
      7.69 seconds for read pass   3 at     5.20 MB/s 15:05:16
      7.75 seconds for read pass   4 at     5.16 MB/s 15:05:24
      7.69 seconds for read pass   5 at     5.20 MB/s 15:05:31
      7.74 seconds for read pass   6 at     5.17 MB/s 15:05:39

*************************************************************************

APPENDIX 2 PENTIUM 100 MHz

Escom 100 MHz Pentium, 16 MB memory, 256K cache, Seagate ST5850A 850 MB 
256K cache, 4 speed CD ROM, Windows 95.

CORETEST 1833 KB/sec


All tests gave 100% CPU utilisation.

A2.1 Win95/NT Version Large File

Run by clicking on DiskNT95.EXE icon, manual input

With Windows 95, the memory based disk cache does not appear to
be completely overwritten when the file size is greater than
physical RAM capacity. The lower speeds are probably for real
disk transfers.

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Server  p100
    Client  p100

    Job J120932Z Wed May 21 12:09:32 1997
  
    Data File J120932Z.tmp     20.0 Mbytes


    Files written 20971520 bytes (data*20)

     12.32 seconds for writing file  at     1.62 MB/s 12:10:07
     10.11 seconds for read pass   1 at     1.98 MB/s 12:10:17
     11.97 seconds for read pass   2 at     1.67 MB/s 12:10:29
      9.27 seconds for read pass   3 at     2.16 MB/s 12:10:39
      8.83 seconds for read pass   4 at     2.27 MB/s 12:10:48
      8.71 seconds for read pass   5 at     2.30 MB/s 12:10:56
     11.44 seconds for read pass   6 at     1.75 MB/s 12:11:08


A2.2 Win95/NT version Small File

Run by clicking on DiskNT95.EXE icon, manual input - Transfers
eventually from cache.

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Server  p100
    Client  p100

    Job J120852Z Wed May 21 12:08:52 1997
  
    Data File J120852Z.tmp      6.0 Mbytes


    Files written 6291456 bytes (data*6)

      3.40 seconds for writing file  at     1.76 MB/s 12:09:10
      0.49 seconds for read pass   1 at    12.24 MB/s 12:09:10
      1.52 seconds for read pass   2 at     3.95 MB/s 12:09:12
      0.40 seconds for read pass   3 at    15.00 MB/s 12:09:12
      0.36 seconds for read pass   4 at    16.67 MB/s 12:09:12
      0.35 seconds for read pass   5 at    17.14 MB/s 12:09:13
      0.38 seconds for read pass   6 at    15.79 MB/s 12:09:13
      0.35 seconds for read pass   7 at    17.14 MB/s 12:09:13
      0.37 seconds for read pass   8 at    16.22 MB/s 12:09:14
      0.36 seconds for read pass   9 at    16.67 MB/s 12:09:14
      0.35 seconds for read pass  10 at    17.14 MB/s 12:09:15
      0.38 seconds for read pass  11 at    15.79 MB/s 12:09:15
      0.35 seconds for read pass  12 at    17.14 MB/s 12:09:15
      0.36 seconds for read pass  13 at    16.67 MB/s 12:09:16
      0.37 seconds for read pass  14 at    16.22 MB/s 12:09:16
      0.36 seconds for read pass  15 at    16.67 MB/s 12:09:16
      0.37 seconds for read pass  16 at    16.22 MB/s 12:09:17
      0.36 seconds for read pass  17 at    16.67 MB/s 12:09:17
      0.36 seconds for read pass  18 at    16.67 MB/s 12:09:17
      0.36 seconds for read pass  19 at    16.67 MB/s 12:09:18
      0.36 seconds for read pass  20 at    16.67 MB/s 12:09:18


A2.3 DOS Version via Windows 95 Large File

Run by clicking on DiskDOS.EXE icon, manual input

##############################################
    Disk test diskut in C++ DOS Version 1

    Server  p100
    Client  p100

    Job J121822Z Wed May 21 12:18:22 1997
  
    Data File J121822Z.tmp     20.0 Mbytes


    Files written 20971520 bytes (data*20)

     13.19 seconds for writing file  at     1.52 MB/s 12:19:11
     16.75 seconds for read pass   1 at     1.19 MB/s 12:19:28
     15.38 seconds for read pass   2 at     1.30 MB/s 12:19:43
     15.60 seconds for read pass   3 at     1.28 MB/s 12:19:59
     15.43 seconds for read pass   4 at     1.30 MB/s 12:20:14
     15.43 seconds for read pass   5 at     1.30 MB/s 12:20:30
     15.77 seconds for read pass   6 at     1.27 MB/s 12:20:45


A2.4 DOS Version via Windows 95 Small File

Run by clicking on DiskDOS.EXE icon, manual input - Transfers
eventually from cache.

##############################################
    Disk test diskut in C++ DOS Version 1

    Server  p100
    Client  p100

    Job J121711Z Wed May 21 12:17:11 1997
  
    Data File J121711Z.tmp      6.0 Mbytes


    Files written 6291456 bytes (data*6)

      3.13 seconds for writing file  at     1.92 MB/s 12:17:26
      5.93 seconds for read pass   1 at     1.01 MB/s 12:17:32
      4.72 seconds for read pass   2 at     1.27 MB/s 12:17:37
      4.73 seconds for read pass   3 at     1.27 MB/s 12:17:42
      4.78 seconds for read pass   4 at     1.26 MB/s 12:17:46
      3.68 seconds for read pass   5 at     1.63 MB/s 12:17:50
      0.93 seconds for read pass   6 at     6.45 MB/s 12:17:51
      0.88 seconds for read pass   7 at     6.82 MB/s 12:17:52
      0.93 seconds for read pass   8 at     6.45 MB/s 12:17:53
      0.94 seconds for read pass   9 at     6.38 MB/s 12:17:54
      0.93 seconds for read pass  10 at     6.45 MB/s 12:17:55
      0.88 seconds for read pass  11 at     6.82 MB/s 12:17:56
      0.93 seconds for read pass  12 at     6.45 MB/s 12:17:57
      0.94 seconds for read pass  13 at     6.38 MB/s 12:17:58
      0.93 seconds for read pass  14 at     6.45 MB/s 12:17:58
      0.88 seconds for read pass  15 at     6.82 MB/s 12:17:59
      0.93 seconds for read pass  16 at     6.45 MB/s 12:18:00
      0.94 seconds for read pass  17 at     6.38 MB/s 12:18:01
      0.93 seconds for read pass  18 at     6.45 MB/s 12:18:02
      0.88 seconds for read pass  19 at     6.82 MB/s 12:18:03
      0.93 seconds for read pass  20 at     6.45 MB/s 12:18:04


Run with BAT file containing

disknt95 0 2 C D:\funstuff\videos\weezer.avi
diskdos  0 2 C D:\funstuff\videos\weezer.avi


A2.5 Win95/NT Version CD Disk

CD 100% CPU utilisation, 4 speed CD Drive

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Reading file D:\funstuff\videos\weezer.avi

    Job J125954C Wed May 21 12:59:54 1997
  
     53.28 seconds     30.1MB pass   1 at     0.56 MB/s 13:00:47
     51.53 seconds     30.1MB pass   2 at     0.58 MB/s 13:01:39


A2.6 DOS Version via Windows 95 CD Disk

CD 100% CPU utilisation, 4 speed CD Drive

##############################################
    Disk test diskut in C++ DOS Version 1

    Reading file D:\funstuff\videos\weezer.avi

    Job J130139C Wed May 21 13:01:39 1997
  
     51.52 seconds     30.1MB pass   1 at     0.58 MB/s 13:02:31
     51.36 seconds     30.1MB pass   2 at     0.59 MB/s 13:03:22


a2.7 DOS Version Booted with DOS 6.2 Large File 

DOS 6.2 No SmartDrive

Run from command prompt DiskDOS 20 6

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J131652Z Wed May 21 13:16:52 1997
  
    Data File J131652Z.tmp     20.0 Mbytes


    Files written 20971520 bytes (data*20)

     11.70 seconds for writing file  at     1.71 MB/s 13:17:04
     12.31 seconds for read pass   1 at     1.62 MB/s 13:17:16
     12.14 seconds for read pass   2 at     1.65 MB/s 13:17:28
     12.13 seconds for read pass   3 at     1.65 MB/s 13:17:40
     12.20 seconds for read pass   4 at     1.64 MB/s 13:17:53
     12.19 seconds for read pass   5 at     1.64 MB/s 13:18:05
     12.19 seconds for read pass   6 at     1.64 MB/s 13:18:17

**************************************************************************

APPENDIX 3 80486DX/2 RESULTS

Escom 80486DX2 66 MHz, 20 MB RAM, 128K cache, Seagate ST 3250A disk, 
windows 95


CORETEST 1822 KB/sec

All tests gave 100% CPU utilisation.


A3.1 Wi95/NT Version Small File

Command DiskNT95 8 10

Data eventually from memory cache.


##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J112053Z Thu May 22 11:20:53 1997
  
    Data File J112053Z.tmp      8.0 Mbytes


    Files written 8388608 bytes (data*8)

      1.90 seconds for writing file  at     4.21 MB/s 11:20:55
      2.16 seconds for read pass   1 at     3.70 MB/s 11:20:57
      2.15 seconds for read pass   2 at     3.72 MB/s 11:20:59
      2.10 seconds for read pass   3 at     3.81 MB/s 11:21:01
      2.11 seconds for read pass   4 at     3.79 MB/s 11:21:04
      1.64 seconds for read pass   5 at     4.88 MB/s 11:21:05
      1.30 seconds for read pass   6 at     6.15 MB/s 11:21:07
      1.31 seconds for read pass   7 at     6.11 MB/s 11:21:08
      1.31 seconds for read pass   8 at     6.11 MB/s 11:21:09
      1.30 seconds for read pass   9 at     6.15 MB/s 11:21:10
      1.31 seconds for read pass  10 at     6.11 MB/s 11:21:12


A3.2 Win95/NT Version Large File

Command DiskNT95 25 6

With Windows 95, the memory based disk cache does not appear to
be completely overwritten when the file size is greater than
physical RAM capacity. The lower speeds are probably for real
disk transfers.

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J112126Z Thu May 22 11:21:26 1997
  
    Data File J112126Z.tmp     25.0 Mbytes


    Files written 26214400 bytes (data*25)

     32.93 seconds for writing file  at     0.76 MB/s 11:21:59
     27.59 seconds for read pass   1 at     0.91 MB/s 11:22:27
     24.56 seconds for read pass   2 at     1.02 MB/s 11:22:51
     18.66 seconds for read pass   3 at     1.34 MB/s 11:23:10
     16.83 seconds for read pass   4 at     1.49 MB/s 11:23:27
     27.46 seconds for read pass   5 at     0.91 MB/s 11:23:54
     15.34 seconds for read pass   6 at     1.63 MB/s 11:24:10


A3.3 DOS Version Booted with DOS 6.2 Large File 

DOS 6.2 No SmartDrive

Run from command prompt DiskDOS 20 6

##############################################
    Disk test diskut in C++ DOS Version 1

    Job J083815Z Thu May 22 08:38:15 1997
  
    Data File J083815Z.tmp     20.0 Mbytes


    Files written 20971520 bytes (data*20)

     50.69 seconds for writing file  at     0.39 MB/s 08:39:06
     18.62 seconds for read pass   1 at     1.07 MB/s 08:39:25
     18.62 seconds for read pass   2 at     1.07 MB/s 08:39:43
     18.68 seconds for read pass   3 at     1.07 MB/s 08:40:02
     18.62 seconds for read pass   4 at     1.07 MB/s 08:40:20
     18.62 seconds for read pass   5 at     1.07 MB/s 08:40:39
     18.62 seconds for read pass   6 at     1.07 MB/s 08:40:58

************************************************************************

APPENDIX 4 COMMUNICATION VIA 10 Mbits/sec LAN

A4.1  PPRO Client P100 server Large File
 
Run with batch file - data file on P100 compressed drive E:

DiskNT95 40 6 N E:\TEMP\
   
               CP Util    CP Util  Packets/sec
                PPRO       P100

  Writing        20%        75%    350 received P100
  Reading        45%        85%    490 sent by P100


##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J173633N Wed May 21 17:36:33 1997
  
    Data File E:\TEMP\J173633N.tmp     40.0 Mbytes


    Files written 41943040 bytes (data*40)

    123.31 seconds for writing file  at     0.32 MB/s 17:38:36
     62.07 seconds for read pass   1 at     0.64 MB/s 17:39:38
     61.77 seconds for read pass   2 at     0.65 MB/s 17:40:40
     61.88 seconds for read pass   3 at     0.65 MB/s 17:41:42
     61.59 seconds for read pass   4 at     0.65 MB/s 17:42:43
     61.46 seconds for read pass   5 at     0.65 MB/s 17:43:45
     61.43 seconds for read pass   6 at     0.65 MB/s 17:44:46


A4.2  PPRO Client P100 server Small File

Run with batch file - data file on P100 compressed drive E:

DiskNT95 8 10 N E:\TEMP\

Note: NT 4.0 does not appear to cache LAN data locally. The
following utilisation is when reading data cached on the P100.

               CP Util    CP Util  Packets/sec
                PPRO       P100

  Reading        65%        75%    705 sent by P100


##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J175341N Wed May 21 17:53:41 1997
  
    Data File E:\TEMP\J175341N.tmp      8.0 Mbytes


    Files written 8388608 bytes (data*8)

     19.65 seconds for writing file  at     0.41 MB/s 17:54:00
     11.16 seconds for read pass   1 at     0.72 MB/s 17:54:11
      8.50 seconds for read pass   2 at     0.94 MB/s 17:54:20
      8.38 seconds for read pass   3 at     0.95 MB/s 17:54:28
      8.51 seconds for read pass   4 at     0.94 MB/s 17:54:37
      8.40 seconds for read pass   5 at     0.95 MB/s 17:54:45
      8.47 seconds for read pass   6 at     0.94 MB/s 17:54:54
      8.53 seconds for read pass   7 at     0.94 MB/s 17:55:02
      8.38 seconds for read pass   8 at     0.95 MB/s 17:55:11
      8.52 seconds for read pass   9 at     0.94 MB/s 17:55:19
      8.47 seconds for read pass  10 at     0.94 MB/s 17:55:28


A4.3  P100 Client PPRO Server Large File

Run with batch file:

disknt95 40 6 L F:\Test\

Data from PPRO disk

               CP Util    CP Util 
                PPRO       P100

  Writing        50%       100%
  Reading        55%       100% 

##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J120415L Thu May 22 12:04:15 1997
  
    Data File F:\Test\J120415L.tmp     40.0 Mbytes


    Files written 41943040 bytes (data*40)

     63.03 seconds for writing file  at     0.63 MB/s 12:05:18
     64.84 seconds for read pass   1 at     0.62 MB/s 12:06:23
     62.00 seconds for read pass   2 at     0.65 MB/s 12:07:25
     58.38 seconds for read pass   3 at     0.69 MB/s 12:08:24
     60.67 seconds for read pass   4 at     0.66 MB/s 12:09:24
     58.63 seconds for read pass   5 at     0.68 MB/s 12:10:23
     58.50 seconds for read pass   6 at     0.68 MB/s 12:11:21


A4.4  P100 Client PPRO Server Small File

Run with batch file:

disknt95 16 10 S F:\Test\

Data from PPRO memory disk cache

               CP Util    CP Util 
                PPRO       P100

  Reading        55%       100% 


##############################################
    Disk test diskut in C++ Win95/NT Version 1

    Job J121127S Thu May 22 12:11:27 1997
  
    Data File F:\Test\J121127S.tmp     16.0 Mbytes


    Files written 16777216 bytes (data*16)

     23.13 seconds for writing file  at     0.69 MB/s 12:11:50
     18.73 seconds for read pass   1 at     0.85 MB/s 12:12:08
     19.35 seconds for read pass   2 at     0.83 MB/s 12:12:28
     18.57 seconds for read pass   3 at     0.86 MB/s 12:12:46
     18.55 seconds for read pass   4 at     0.86 MB/s 12:13:05
     18.94 seconds for read pass   5 at     0.84 MB/s 12:13:24
     19.87 seconds for read pass   6 at     0.81 MB/s 12:13:44
     19.51 seconds for read pass   7 at     0.82 MB/s 12:14:03
     18.94 seconds for read pass   8 at     0.84 MB/s 12:14:22
     19.20 seconds for read pass   9 at     0.83 MB/s 12:14:41
     19.02 seconds for read pass  10 at     0.84 MB/s 12:15:00


A4.5 P100 and 486 Clients PPRO Server Large Files

P100 bat file - DiskNT95 40 6 L F:\Test\
 486 bat file - DiskNT95 40 6 X G:\Test\

The P100 test was started when the 486 had finished writing its
file. Pass end times from the logs are merged to show
concurrent activity. Disk head movement, no doubt, reduced
total MB/second throughput.

CPU utilisation on both 486 and P100 was 100%.

                 Recorded on 486     Recorded on P100    PPRO
                                                        CPU ut
  486 write      0.69 MB/s 12:43:16                       50%
  486 read       0.42 MB/s 12:44:52                       75%
  P100 write                         0.46 MB/s 12:45:42   75%
  Both reading   0.32 MB/s 12:46:56                       60%
                                     0.37 MB/s 12:47:32   60%
                 0.28 MB/s 12:49:18  0.32 MB/s 12:49:35
                 0.31 MB/s 12:51:29  0.34 MB/s 12:51:31
                 0.24 MB/s 12:54:19  0.26 MB/s 12:54:05
                                     0.37 MB/s 12:55:53
                 0.31 MB/s 12:56:26
                                     0.41 MB/s 12:57:31


