DiskSpeed v1.0 by Michael Sinz Copyright (c) 1989 by MKSoft Development Yes, this is yet another disk speed testing program, but with a few differences. It was designed to give the most accurate results of the true disk performance in the system. For this reason many of DiskSpeed's results may look either lower or higher than current disk performance tests. This program was thrown together in a few hours because I needed more accurate and consistant results for disk performance as seen from the application's standpoint. This program has now served its purpose and I am now giving it to the rest of the Amiga world to play with as long as all of the files remain together in unmodified form. (That is, the files DiskSpeed, DiskSpeed.info, DiskSpeed.c, DiskSpeed.doc, and MakeFile) ------------------------------------------------------------------------ User's Guide DiskSpeed is very easy to operate. Just start the program by either clicking on its icon or typing its name in from the CLI. DiskSpeed will open another window with the "Drive:" string gadget active. Enter the drive name and select "Test" from the menu and DiskSpeed will go and test that device. The results will be displayed as they are generated. After the device has been tested, the results may be saved to the DiskSpeed.Results file in the current directory or printed on the printer. When the results are saved in DiskSpeed.Results, they are appended to the end of that file in order to make it possible to create a single file containing the results of all of your devices. The Menus have shortcuts for all of the options. ------------------------------------------------------------------------ How Does DiskSpeed Work? DiskSpeed is rather simple. It uses the Amiga's Timer.device to get and calculate the time differences between the start and end of each test section. This timer is locked to the VBlank frequency and thus is rather stable and accurate. (Resolution is ~0.02 seconds so the accuracy is +/- ~0.04 seconds. This should be rather good as most operations take well over 2 seconds...) The tests work as follows: DiskSpeed will first create a temparary directory on the selected device. Note that the device will have to be write enabled and will need around 600 free blocks. (Depends on the filing system) All tests are done in this directory and all files and this directory are removed when the test is completed. It is for this reason that some parts of the tests can not be stoped as there is a large amount of cleanup after them. File Create Test: ------------------------------------------------ In this test, the program generates 256 unique file names. As each of the names are generated, the program Open()s the file as MODE_NEWFILE and the Close()s it. This is to time the overhead in creating a file. All of the files created are 0-bytes in length as no data is writen to these files. These same files will be used for the Directory Scan and File Delete tests. Directory Scan Test: ------------------------------------------------ In this test, the directory of files created in the File Create test is scanned twice to see how quickly the system can walk directories. Thus, the timing is based on 512 directory ExNext()s. Note that results on some very fast devices (such as RAM) could have more error as they can scan over 900 files/second. However, most FFS and OFS devices peak out in the range of 250 files/second and thus are less prone to timing granularity. File Delete Test: ------------------------------------------------ This test times the deletion of the files created in the File Create test. This shows the overhead in the deletion of a file from the filing system/device. After this point, the program once again checks for the close gadget as it would be safe to exit here. Seek And Read Test: ------------------------------------------------ For this test, a 256K-byte file was created. The program seeks to the start of the file and reads 64 bytes; then it seeks to the end of the file - 128 bytes and then reads 64 bytes; then it seeks to the middle of the file and reads 64 bytes. It uses each of the three seeking methods (OFFSET_BEGINNING, OFFSET_END, OFFSET_CURRENT) to do this. This activity is repeated 150 times, for a total of 450 seek/reads. The timings from this test will show both disk seek performance and filesystem performance in the calculation of seek locations and actual block values. Raw Read Test: ------------------------------------------------ For this test, a 256K-byte file was created. The program seeks to the start of the file and reads it in n-byte increments. (In the current version of DiskSpeed, this is 512, 4096, and 32768 byte chunks.) The complete file is read 12 times to give a more complete view of actual read speeds. This test will mainly show the raw data transfer rate of the machine plus the overhead of the operating system calls and device driver calls. If the disk was very fragmented, it would also show some signs of how the seek time is causing performance to drop due to the fragmentation. Raw Write Test: ------------------------------------------------ For this test, a 256K-byte file was created. The program seeks to the start of the file and writes it in n-byte increments. (In the current version of DiskSpeed, this is 512, 4096, and 32768 byte chunks.) The complete file is written 6 times to give a more complete view of actual write speeds. This test will mainly show the raw data transfer rate of the machine plus the overhead of the operating system calls and device driver calls. If the disk was very fragmented, it would also show some signs of how the seek time is causing performance to drop due to the fragmentation.