DiskSpeed v3.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 consistent 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, DiskSpeedWindow.c, DiskSpeedWindow.h, MakeBoxes.c, MakeBoxes.h, StandardGadgets.c, StandardGadgets.h, RenderInfo.c, RenderInfo.h, DiskSpeed.doc, and MakeFile) Version 2.0 of this program added a few features and cleaned up the user interface. I hope you like this... Version 3.0 of this program added the performance stress and cleaned up some parts of the older code. (Fix to RenderInfo.c) ************************************************************************ Reading legal mush can turn your brain into guacamole! So here is some of that legal mush: Permission is hereby granted to distribute this program's source, executable, and documentation for non-commercial purposes, so long as the copyright notices are not removed from the sources, executable or documentation. This program may not be distributed for a profit without the express written consent of the author Michael Sinz. This program is not in the public domain. Fred Fish is expressly granted permission to distribute this program's source and executable as part of the "Fred Fish freely redistributable Amiga software library." Permission is expressly granted for this program and it's source to be distributed as part of the Amicus Amiga software disks, and the First Amiga User Group's Hot Mix disks. ************************************************************************ ------------------------------------------------------------------------ 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. ------------------------------------------------------------------------ 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 temporary 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 stopped as there is a large amount of cleanup after them. Gadgets in DiskSpeed 2.0------------------------------------------------ Device Gadget: This is the device that is to be tested... Comment Gadget: This is the comment that will be written out with the results of the test. (79 characters...) Test Intensity: This selects the test intensity. Due to the timer on the Amiga, you will get more accurate results with a higher test intensity. However, when testing slow drives or floppies, this may not be a good thing as it would take too long. The settings select the multipliers that will be used during testing. This affects the number of times the large file is read for the Create/Write/Read tests. Low settings on a FAST device will give inaccurate values. High settings on a slow device will take a long time to complete. Perfomance Stress: These two settings turn on the stress code for either DMA or CPU performance. The DMA stress will cause a very large COPPER list to be generated that will eat up as many CHIP/DMA cycles as it can. It leaves a few at VBlank, as to simulate a relatively "standard" DMA load as would be seen in heavy video overscan. Note that this is not 100% the same as video overscan, however, it is within +/- 5% of the DMA usage. Also note that this depends on your software's useage of overscan too. The CPU stress will make a simple task that just sits there copying strings from one place to another. This is to simulate a heavy multi-tasking load on the system and what that does to disk performance. Note that since this is a CPU stress, this causes the AmigaDOS routines to also slow down a bit. This simulates much the same enviroment as a system that is doing a RAY-Trace or other 3D type of generation while your system is doing disk I/O in other operations. (Many people run the ray-tracers in the background while they do other work) Note that these two stress settings can be use together to stress *BOTH* CPU and DMA. File Create Test: ------------------------------------------------ In this test, the program generates some 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 written to these files. These same files will be used for the Directory Scan, File Open/Close, and File Delete tests. File Open/Close Test: ------------------------------------------------ In this test, the program opens and then closes each of the files that were created in the test above. This shows the overhead for these calls... Directory Scan Test: ------------------------------------------------ In this test, the directory of files created in the File Create test is scanned three times to see how quickly the system can walk directories. 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 Write/Create Test: ------------------------------------------------ For this test, a 256K-byte file is created. The program recreates this file for each pass, thus showing the speed of laying down new blocks on the drive. The data is written in n-byte increments. (In the current version of DiskSpeed, this is 512, 4096, 32768, and 262144 byte chunks.) The complete file is written multiple 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, 32768, 262144 byte chunks.) The complete file is written multiple 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. 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, 32768, and 262144 byte chunks.) The complete file is read multiple 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.