home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d574 / diskspeed.lha / DiskSpeed / DiskSpeed.doc < prev    next >
Text File  |  1991-12-22  |  24KB  |  459 lines

  1.  
  2.                           DiskSpeed v4.1
  3.                                 by
  4.                            Michael Sinz
  5.  
  6.              Copyright (c) 1989 by MKSoft Development
  7.  
  8.                        MKSoft Development
  9.                        163 Appledore Drive
  10.                        Downingtown, PA 19335
  11.  
  12.  Yes, this is yet another disk speed testing program, but with a few
  13.  differences.  It was designed to give the most accurate results of the
  14.  true disk performance in the system.  For this reason many of
  15.  DiskSpeed's results may look either lower or higher than current disk
  16.  performance tests.
  17.  
  18. ******************************************************************************
  19. *                                                                            *
  20. *      Reading legal mush can turn your brain into guacamole!                *
  21. *                                                                            *
  22. *              So here is some of that legal mush:                           *
  23. *                                                                            *
  24. * Permission is hereby granted to distribute this program's source           *
  25. * executable, and documentation for non-commercial purposes, so long as the  *
  26. * copyright notices are not removed from the sources, executable or          *
  27. * documentation.  This program may not be distributed for a profit without   *
  28. * the express written consent of the author Michael Sinz.                    *
  29. *                                                                            *
  30. * This program is not in the public domain.                                  *
  31. *                                                                            *
  32. * Fred Fish is expressly granted permission to distribute this program's     *
  33. * source and executable as part of the "Fred Fish freely redistributable     *
  34. * Amiga software library."                                                   *
  35. *                                                                            *
  36. * Permission is expressly granted for this program and it's source to be     *
  37. * distributed as part of the Amicus Amiga software disks, and the            *
  38. * First Amiga User Group's Hot Mix disks.                                    *
  39. *                                                                            *
  40. ******************************************************************************
  41.  
  42. DiskSpeed 4.1 brings a whole new set of disk drive performance testing
  43. technologies to the game.  These tests, along with smart usage of the
  44. results will give you a very good indication of the performance of
  45. a disk subsystem in the Amiga enviorment.
  46.  
  47. DiskSpeed 4.1 is now fully configurable and can run from an Icon or
  48. from the CLI.  From the CLI, you have a choice as to if you want the
  49. graphical user interface to the program.
  50.  
  51. From Workbench, you can start DiskSpeed 4.1 from its tool icon with
  52. the settings within the tooltype of that icon.  You can also start
  53. DiskSpeed from a project icon and it will use the setting from that
  54. icon's tool types.  (Example project icon included)
  55.  
  56. Two of the options in DiskSpeed 3.1 have been removed for DiskSpeed 4.
  57. CPU Stress testing started out as a good test but ended up becoming
  58. meaningless as the drive manufactures modified the task priorities of
  59. their drives.  However, DiskSpeed 4 went to a much better method:  The
  60. CPU availability index.  This is calculated via a simple task that runs
  61. at a very low priority.  DiskSpeed takes a reading of the system's
  62. performance while idle and uses that reading to determin how much of
  63. the system's CPU is in use during each of the tests.  In addition to
  64. providing better results, it also keeps the CPU in a busy state
  65. and thus could cause a difference in drive performance.
  66.  
  67. The other feature, DMA stress, has been removed and no direct replacement
  68. is available yet.  The reason there is little that can be done is because
  69. under Release 2 of the operating system the Workbench screen is no longer
  70. a fixed resolution and mode.  This means that using DiskSpeed in different
  71. workbench screen modes will cause a difference in results.  However, it
  72. also means that it will let the user see the performance of the system
  73. with the display mode he uses.  (Most likely)  I am currently investigating
  74. how to implement a safe and reliable DMA stress for a future DiskSpeed.
  75. If something can be found that works in 1.3 I may release a DiskSpeed 4.2
  76. that contains this.  Currently there has been no good way found yet.
  77. (When testing under 2.0 you can switch to the display mode you wish to test
  78. in and try that result.  A 16-colour high-resolution overscanned display
  79. will work out as a good test of custom chip DMA vs the hard drive)
  80.  
  81. DiskSpeed 4.x will be the last 1.2/1.3 compatible version of DiskSpeed.
  82. As of this point in time, no new DiskSpeed is planned, but if another
  83. version is made, it will require AmigaOS Release 2 as a minimum
  84. operating system version.
  85.  
  86. The DiskSpeed command line options look much like the standard ReadArgs()
  87. options of Release 2.  They are, however, not the ReadArgs() since that
  88. feature is only available as of Release 2.
  89.  
  90.  
  91. These key words are also available from the TOOLTYPES of the icon.
  92.  
  93. * DRIVE/K    - select drive  (Default is current directory)
  94.     You can use either 'DRIVE <path>'  or  'DRIVE=<path>'
  95.  
  96. * COMMENT/K    - set comment string
  97.     You can use either 'COMMENT <comment>'  or  'COMMENT=<comment>'
  98.  
  99. * ALL/S        - select all tests
  100.     This turns on all of the tests below
  101.  
  102. * DIR/S        - setect DIR tests
  103. * SEEK/S    - select SEEK tests
  104.  
  105. * CHIP/S    - select CHIP memory buffer tests
  106. * FAST/S    - select FAST memory buffer tests
  107.     You can select both and DiskSpeed will then do a test pass
  108.     with each type of memory.
  109.  
  110. * LONG/S    - select LONG aligned tests
  111. * WORD/S    - select WORD aligned tests
  112. * BYTE/S    - select BYTE aligned tests
  113.     You can select any combinations of the above.  DiskSpeed
  114.     will do a test pass with each one.  These combine with
  115.     the memory type above to create up to 6 test passes.
  116.  
  117. * BUF1/K/N    - select buffer size 1    (Default = 512)
  118. * BUF2/K/N    - select buffer size 2    (Default = 4096)
  119. * BUF3/K/N    - select buffer size 3    (Default = 32768)
  120. * BUF4/K/N    - select buffer size 4    (Default = 262144)
  121.     Will let you select the buffer sizes for the tests.
  122.     To eliminate a buffer test, set the buffer to 0.
  123.     You can use either 'BUF1 <num>'  or  'BUF1=<num>'
  124.  
  125. * WINDOW/S    - use the GUI even though started from the CLI
  126.  
  127. * MINTIME/K/N    - Selects the number of seconds to run each test. (1 to 500)
  128.   New keyword that lets you select the minimum amount of time any test takes.
  129.   This applies to all tests except for the Directory entry create and delete
  130.   tests.  Also, note that after the file create speed test, a full 256K file
  131.   is created and this can, on slow systems take some time.
  132.  
  133. * NOCPU/S    - Turns off the CPU available task.
  134.   New keyword that lets you turn off CPU percentage collection.  This is so
  135.   that the secondary task is not created.  Seems that just having this task
  136.   around can be enough to throw the performance of the system way off.  The
  137.   difference in time it takes to task-switch from STOP to the harddisk driver
  138.   and from a background task and the harddisk driver is sometimes just enough
  139.   to cause a rotation on the disk to be missed.  This feature may well be
  140.   removed, but the difference in the numbers is rather interesting.  (The
  141.   background task is at -127 priority...)
  142.  
  143.  
  144.  
  145. Below is a small part of an article I wrote for AmigaWorld Tech Journal
  146. Volume 1, Issue 5.
  147.  
  148. To get the full article and diagrams, you can contact AmigaWorld
  149. at 1-800-343-0728.  Other back issues are also available.
  150.  
  151.     Michael Sinz
  152.     MKSoft Development
  153.  
  154. ---------------------------------------------------------------------------
  155.  
  156. In search of speed...
  157.  
  158. As the industry moves to even faster drives and even larger data
  159. requirements, high speed drives and drive support will become a
  160. required feature of computers.  Multimedia is one of the application
  161. areas where high performance, large storage devices are required.
  162.  
  163. The Amiga did not have good hard drive support until the "Fast Filing
  164. System" came out.  However, now that it is here, the performance has
  165. proven that the Amiga is not just a graphics box.  The performance of
  166. the Fast Filing System and the hardware of the Amiga's hard drive
  167. controllers have pushed the limits of data transfer speeds.  With a
  168. good controller, many times the performance is limited by the speed of
  169. the data coming from the drive itself.
  170.  
  171.  
  172. Disk Drives:  How fast are they really
  173.  
  174. 500 K-bytes/second.  34 files/second.  This drive.  That controller.
  175. DMA. Non-DMA.  Multitasking friendly.  Video speed.  Millisecond access
  176. times. SCSI.  ST-506.  AT.  IDE.  Adaptec.  OMTI.
  177.  
  178. The amount of confusing, conflicting, and just plain wrong information
  179. about hard drives is rather extreme.  Maybe the reason for this is
  180. because the Amiga used to have slow hard drives.  Maybe it is because
  181. the Amiga now has some of the fastest hard drives in the industry.
  182. Some of it is also due to a misunderstanding of what the various terms
  183. and numbers mean.  So, what do these numbers mean?  How do they relate
  184. to how fast the system really is? And why are they what they are?
  185.  
  186. First, what does a disk drive, or more specifically, a hard disk drive
  187. really do?  Yes, we know it stores data, but there must be more
  188. involved in the process.  So, let us first look at some of the basic
  189. technical issues.
  190.  
  191. Data within a computer is just a series of 1s and 0s. (I know, we all
  192. know that already)  To store this data, the computer must, in some way,
  193. be able to take the 1s and 0s and record them such that they can be
  194. read back as the same pattern of 1s and 0s that were written.  One of
  195. the most popular methods of doing this is magnetic recording.  In much
  196. the same way as audio tape records sounds and plays it back, the
  197. computer generates a signal, or sound, that is recorded and when played
  198. back can be decoded and understood by the computer.  Computers did this
  199. on magnetic tape, magnetic drums, magnetic plated media, spinning
  200. magnetic tape (what became the floppy), and sealed magnetic plated
  201. media.  Through the history of computers, this has been one of the most
  202. complex and fastest advancing fields.  It was not much more than 10
  203. years ago when sealed media hard disk drives (known as Winchesters)
  204. were getting a whopping 5 to 10 million bytes on 8-inch drives. Today,
  205. on small 3.5-inch drives, over 1,000 million bytes are being stored.
  206.  
  207.  
  208. Measuring performance
  209.  
  210. Measuring the performance of a disk subsystem is a rather interesting
  211. science.  In addition to the physical limitations of the drive and
  212. controller, there are issues of software technology at the drive
  213. controller level, the filesystem level, and the operating system level.
  214. In addition, many of the standard testing issues come into play, such
  215. as accuracy of the test, accuracy of the observation, applicability of
  216. the test, etc.
  217.  
  218. The accuracy of the test can be defined rather exactly.  On the Amiga,
  219. the system has a timer that has a 1/60 second (1/50 in PAL) resolution.
  220. This comes out to roughly 0.02 seconds.  Thus, any given time reading
  221. will be only accurate to within +/- 0.02 seconds.  In order to test the
  222. speed of the tests, the time must be read at the beginning and at the
  223. end of the test. This results in +/- 0.04 seconds of accuracy.  Thus,
  224. in order to make the test have a +/- 1% accuracy, it would have to run
  225. for a minimum of 4 seconds.
  226.  
  227. The accuracy of the observation is much more difficult to quantify. The
  228. issue here is that in doing the observation, the test, and thus the
  229. results, are affected.  The best that can be done is to try to minimize
  230. the effect of observing the test while not compromising the quality of
  231. the observations.
  232.  
  233. The last issue:  the applicability of the test.  What this really means
  234. is how well the test (and the results of the test) relates to the
  235. real-use performance of the drive.  This is in many ways more important
  236. that the other two issues as without reasonable applicability, the test
  237. results would be useless.
  238.  
  239. With DiskSpeed, the disk performance test software that MKSoft
  240. Development has been developing, attention has been paid to make the
  241. tests both accurate and realistic.  DiskSpeed 3.1 has proven itself as
  242. being accurate and has become the standard by which Amiga hard disks
  243. and controllers are judged. With DiskSpeed 4.1 a whole new set of tests
  244. will be possible.
  245.  
  246.  
  247. DiskSpeed - The standard in the Amiga world
  248.  
  249. I had first developed DiskSpeed due to the fact that other disk drive
  250. performance testers were either highly inaccurate or did not relate
  251. well to real-world disk drive usage.  The accuracy issues are easy to
  252. solve, however the applicability issues took some thinking.
  253.  
  254. The accuracy issues were solved, in DiskSpeed 3.1, by making the tests
  255. take a long time.  This made sure that the clock's accuracy did not
  256. adversely affect the results of the test.  In addition, the tests were
  257. done with as clean of a software design as possible.
  258.  
  259. With DiskSpeed 4.1, I have developed a new technology that can
  260. automatically size the test time to give as accurate a result as
  261. possible.  It was important that this was only done in the appropriate
  262. tests as some tests radically change their results if they are run for
  263. more iterations.
  264.  
  265. The more important, and more difficult, part of designing a set of
  266. tests is to come up with ones that will show results that apply to the
  267. real world. In that direction, none of the tests use anything other
  268. than standard AmigaDOS file I/O calls.  Some people ask me to add a
  269. test that does direct device I/O.  However, no application would do
  270. direct device I/O to open/read/write/close/delete a file.  It would not
  271. only be ridiculous, but the amount of work required to write a
  272. filesystem is well beyond what an application developer needs to spend
  273. their time on.
  274.  
  275. Now that the tests are to only do AmigaDOS I/O, what needs to be
  276. tested?  This is where some knowledge of the physical limitations of
  277. the disk drives and how application software works is needed.
  278.  
  279. As many of you already know, the Amiga's filing system is very powerful
  280. and flexible.  Much of this power is from the way data is laid out on
  281. the disk.  However, as I am sure you also know, this layout makes some
  282. things a bit slower.  The most noticeable is that of listing a
  283. directory.  Since this is something that causes the system to read many
  284. blocks of data, many from different areas on the disk, and since many
  285. (most) applications and all users run into this performance issue
  286. during every-day use, a test that would measure the performance of the
  287. drive/controller combination when scanning a directory would provide
  288. numbers that directly relate to user experience.
  289.  
  290. In addition to scanning directories, it is important to be able to
  291. create new directory entries, find directory entries, and delete them.
  292. Again, these are situations that users run into every time they use an
  293. application that does anything with a disk.  All together, these tests
  294. are designed to show the performance of the filesystem's directory
  295. structure.  Note that in order to make these tests fair, the number of
  296. files created in the test directory is always the same.  The speed of
  297. access in a directory structure changes as the number of files change
  298. and if this test were to auto-size itself based on the speed of the
  299. device, the results would no longer be valid.
  300.  
  301. Another test that help show the performance of the filesystem and
  302. device driver is the Seek/Read test.  This test helps show how well a
  303. database application may run as database operations tend to be very
  304. disk bound and tend to access various locations with a large file. The
  305. Seek/Read test reads small chunks from the file at various locations
  306. within the file.  The speed with which the filesystem can find the
  307. correct data location within the file and then read a part of it is
  308. directly tested by this test.  (Note that the DiskSpeed 3.1 Seek/Read
  309. test was rather simplistic and produced uninteresting numbers.)
  310.  
  311. The final tests, are the basic file data read and write tests.  There
  312. are three of these:
  313.  
  314. File Write/Create:  this is where a new file is created and the data is
  315. filled in.  The speed of this is dependant on how fast the filing
  316. system can locate new empty blocks of disk space for the file.
  317.  
  318. File Write:  this is where an old file is written to.  The performance
  319. here is determined by how well the filing system deals with rewriting
  320. the data in a file that already exists.  This will usually be faster
  321. than the Write/Create test.
  322.  
  323. File Read:  this is where an old file is read from.  The performance
  324. here is determined by how quickly the filing system finds the data
  325. blocks of a file.
  326.  
  327. With DiskSpeed 3.1, each of these three tests were done with various
  328. buffer sizes ranging from 512-bytes to 262144-bytes.  DiskSpeed 4.1
  329. adds a few twists to this in that each test will also happen on
  330. LONGWORD aligned buffers, WORD aligned buffers, and BYTE aligned
  331. buffers.  Each test is then done in FAST memory and in CHIP memory (if
  332. you have them available.)  Also new for DiskSpeed 4.1 is the feature
  333. with which you can select the sizes of the tests.
  334.  
  335. While the larger size buffers are nice to play with, it is important to
  336. remember that most older applications only use a 512-byte buffer. Many
  337. of the newer applications are using 4096-byte buffers as the speed
  338. improvement by just increasing the amount of data read in one I/O call
  339. is rather significant.  DiskSpeed 3.1 helped show this fact.
  340.  
  341. In addition to the basic tests, DiskSpeed 3.1 let you turn on DMA and
  342. CPU stress factors.  The DMA feature would increase the amount of
  343. bandwidth the video control chips were using.  This was in order to
  344. show how well the drive/controller combination would work in a video
  345. environment.  The CPU stress was an attempt to simulate heavy work
  346. loads in the multi-tasking environment the Amiga provides.
  347.  
  348. With DiskSpeed 4.1, the CPU stress test has been removed.  It turned
  349. out to produce results that did not mean much.  However, to take its
  350. place is a CPU availability value that is reported for each test. This
  351. is a rough calculation of the available CPU percentage during the test.
  352. This is a very useful number as it will tell you if there is enough CPU
  353. time available to decompress a picture while loading the next one or to
  354. handle user input during disk I/O.
  355.  
  356. Observing a test always has an impact on the results.  This is a known
  357. fact.  DiskSpeed is no able to get around this fact.  In doing the CPU
  358. availability checking, the performance of the system may change.  This
  359. is due to the fact that just the act of counting the CPU time will
  360. cause some CPU time to be used and will change the dynamics of the
  361. system.  However, if all tests are done the same way, the relative
  362. merits of the drives under test will still be valid.
  363.  
  364.  
  365. Why is ... ?
  366.  
  367. So, now that we have some results, why are they like they are?
  368.  
  369. Why are small transfers so much slower?
  370. There are a number of reasons.  One of the major ones is the layout of
  371. data on the disk.  The sectors may be lade out on the disk in a number
  372. of ways. When a large transfer happens, it asks for the disk drive to
  373. send the data for a number of blocks.  If these were blocks 1 to 8, the
  374. drive could read all of these blocks in one revolution of the disk.
  375. (given a 1:1 interleave) However, if a program asks for only one block
  376. worth of data at a time, the time between the blocks could be too much
  377. and the next block will have passed by the head of the disk. Then the
  378. disk will have to rotate around until the right block was available
  379. again.  In the example, that would mean that a read of 8 blocks done 1
  380. at a time would take 7 full revolutions once the first block was
  381. transferred.  This makes for a total of 7 times slower than the
  382. transfer that asked for 8 blocks at once.  This is worst case. Many
  383. drives today have some caching and read-ahead that will help minimize
  384. this.
  385.  
  386. Why are the results inconsistent from one test to another?
  387. Disk performance testing is a rather complex task.  Without special
  388. equipment, many things can not be done.  When DiskSpeed does its tests,
  389. it does not know the exact location of the disk relative to the drive
  390. heads. This means that there will be some difference in timing between
  391. the time the drive is asked to read (or write) a block and the time
  392. that block is under the read/write head.  This time is known as
  393. rotational latency.  The faster the drive spins, the lower this time is.
  394.  
  395. Why does the CPU test make the drive speed so much slower?
  396. Depending on the method used to implement the controller software, the
  397. CPU test task, which runs at -127 priority, becomes extra overhead.
  398. The difference in speed may be rather small from the CPU standpoint,
  399. but it may be just enough in order to fall pray to the rotational
  400. latency problem.  The overhead difference is that when no task is
  401. running, waking up a task is just starting that task again. If,
  402. however, another task is running at the same time, the old task must
  403. first be put to sleep and this work can be just enough time to make the
  404. system miss the next block that is coming around and would then need to
  405. wait until it comes around again.
  406.  
  407. Why does drive performance change as the drive gets older?
  408. Drive performance does not really change due to the age of the disk.
  409. However, as files are written to the disk and then later removed, the
  410. empty areas of the disk become scattered.  When the disk is then
  411. tested, the system will have to seek to each of the locations where
  412. part of the data is stored.  This adds seek time, rotational latency,
  413. control overhead, and processor overhead as this information is handled.
  414.  
  415. Why are write speeds sometimes faster than read?
  416. Well, the way the drive works can have a major impact on this.  If the
  417. drive has a cache, a write could be sent to the cache while the drive
  418. is still waiting for the read/write head to get the position it wanted.
  419. Thus, the disk can say that the write is completed while it is not
  420. quite done.  During the time the system is getting ready for the next
  421. write, the drive will hopefully have sent the last write to the disk.
  422.  
  423. What number is most important?
  424. This is a hard question.  It would depend on your application and how
  425. you use your machine.  If you many times do directory listings or
  426. create files, it would be best to look at the directory manipulation
  427. tests; these include Files-per-second create/open/scan/delete.  One of
  428. the numbers that is most important to me is the small buffer
  429. performance.  That is, the performance of the drive/controller on
  430. buffered reads between the sizes of 512 bytes to 4096 bytes)  These two
  431. buffer sizes are much more representative of the size of the read/write
  432. buffers of most applications.  While the large buffer sizes are
  433. important to graphics and animation persons where high speed
  434. performance to large files is a major factor.  However, this is only
  435. useful if the file can be read as one big chunk.
  436.  
  437. Why does the test sometimes show more that 100% available CPU?
  438. Due to the fact that the CPU availability had to be measured to get a
  439. reading of how much total CPU there was, the measurement could have
  440. been a small amount incorrect.  The measurement code tries its best to
  441. get an accurate measurement but this is not always possible.  It will
  442. notice (most of the time) when accurate measurements are not possible
  443. and turn off the CPU testing since it would be meaningless.
  444.  
  445.  
  446. With the addition of the CPU availability numbers, a much more complete
  447. picture of drive and system performance can be obtained.  As multimedia
  448. becomes more important, the performance combination of high drive speed
  449. along with large amounts of available CPU power will be what makes it
  450. all possible.
  451.  
  452. With DiskSpeed 4.1, it will be possible for developers to make sure
  453. that the design of their hardware/software lives up to the performance
  454. needs of their users.  It will also give the data that proves the
  455. performance of the system for real work.  Applications such as database
  456. servers, file servers, and multimedia require as much performance as
  457. possible in the drive subsystem. The Amiga has the performance to
  458. outshine most other platforms in this area.
  459.