Path: menudo.uh.edu!usenet From: Mike_Noreen@p14.anet.bbs.bad.se (Mike Noreen) Newsgroups: comp.sys.amiga.reviews Subject: REVIEW: FastCache version 1.0 Followup-To: comp.sys.amiga.applications Date: 9 Jul 1993 01:48:04 GMT Organization: The Amiga Online Review Column - ed. Daniel Barrett Lines: 475 Sender: amiga-reviews@math.uh.edu (comp.sys.amiga.reviews moderator) Distribution: world Message-ID: <21iiok$k1b@menudo.uh.edu> Reply-To: Mike_Noreen@p14.anet.bbs.bad.se (Mike Noreen) NNTP-Posting-Host: karazm.math.uh.edu Keywords: cache, disks, shareware PRODUCT NAME FastCache version 1.0 [MODERATOR'S NOTE: This review was updated on July 15, 1993. -Dan] BRIEF DESCRIPTION FastCache is a program for speeding up your disk access. It is a fully associate shareware disk-cache which features prefetch and write-back. AUTHOR/COMPANY INFORMATION Name: Philip D'Ath Address: 9 Elmwood Crescent Pukete, Hamilton New Zealand E-mail: pid@waikato.ac.nz SHAREWARE FEE You may use the program freely for a period of three months. If you continue to use it after that period, you are requested to send $20 to the author, payable in either New Zealand, Australian or American dollars. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS HARDWARE At least 256K free RAM is recommended. FastCache uses RAM to speed up disk read/write operations, and will not give much increase in disk performance if the cache is smaller than this. If you cannot spare this much RAM, then FastCache probably isn't for you. FastCache is supplied in two flavours: one for 68000-based machines such as the Amiga 500, and one for 68030-based machines such as the Amiga 3000. SOFTWARE FastCache was designed to be used under AmigaDOS 2.0, and seems to work well under AmigaDOS 3.0. It MIGHT work under AmigaDOS 1.3, but it's not guaranteed. COPY PROTECTION None. MACHINE USED FOR TESTING Amiga 3000-25 2 MB Chip RAM, 4MB Static Column Fast RAM Kickstart v40.9, Workbench v40.4 DEC RZ24 hard disk, 199MB formatted, 64KB onboard cache, 19ms seek time. REVIEW The reason I tested FastCache was because I needed to speed up the handling of mail on my system. I had earlier tested a public domain disk cache called SmartDisk and had not been terribly impressed. FastCache, however, had features which made it worth checking out. Here's its feature list from its manual: * Fully associate cache (one of the best algorithms) * LRU cache replacement policy (one of the best) * Can handle multiple drives * *Should* be able to handle removable media * All cache settings are determined at run time * Optional write retention * Does not require large continuous chunks of memory * Uses a hashing system to locate date (one of the best) * Performs both forward and reverse prefetching * Will utilize the blitter to move data, if possible Having gotten this far, I think most people will agree that it is high time for a short explanation of what a disk cache is, how it works, and what all these fancy terms and abbreviations mean. (Many thanks to John C. Chu for helping me out with this!) WHAT IS A DISK CACHE? RAM is faster than the disks on your computer. A cache takes advantage of this fact to speed up read (and sometimes write) operations that use your disks. Any data read by the computer is stored in the cache, so that if the data is used again, it is read from the cache (in RAM) instead of the cached device (the disk). From the above explanation, note that information is read from the cache only if it is already IN the cache -- that is, the second (or later) time that it is read. However, a cache can also speed up the initial read by using "Prefetch." This takes advantage of the fact that it's faster to read data in large chunks rather than in little pieces. Prefetch means that if the computer asks for block N from the hard drive, it is put into the cache along with a number of subsequent blocks, anticipating their use. So, when the computer has processed block N, and asks for block N+1, it is already in the cache. On a fast, unfragmented hard disk, prefetch can give huge boosts in speed, while on a heavily fragmented disk it can lower performance. Some caches, like FastCache, may optionally cache write operations as well as read operations. While this means less disk contention and faster writes, it also means that a crash or reset before the cache is flushed will result in LOSS OF DATA! For this reason, I do not recommend write retention (write-back). Sooner or later, one IS going to lose data if one uses write-back, so do *NOT* use write-back on important files. Also, writes to the disk which are verified (like formatting) will be verified against the cache, and so is useless. Caching writes is DANGEROUS STUFF! [MODERATOR'S NOTE: The author of FastCache, Philip D'Ath, says the following about verifying writes against the cache: "...you mentioned about programs who try to verify data essentially wasting their time. This will not be the case if the program issues any kind of flush command (like CMD_FLUSH). FastCache honours all such requests, by flushing its entire cache, for this exact reason. If any program does a verify operation now, without issuing a flush command, then it is probably already broken, as many KS2 devices buffer at least a track already."] Time to get technical! (Non-technical users can safely skip ahead to "INSTALLATION" below.) Basically, there are three types of disk caches: * Direct Map Caches. The most primitive form, easy to implement and with low processing overhead; but since it is "unintelligent", large parts of the cache memory will be wasted. * Set Associative Caches. A set associative cache consists of some number of small Direct Map caches combined. While being smarter about memory usage than a Direct Map cache, a Set Associative cache is less efficient than a Fully Associative cache (described below), and it requires more processing than a Direct Map cache. Examples of Set Associative caches are PowerCache and SmartDisk. * Fully Associative Cache. The best and brightest of the caches. Will not flush data until completely full; but as it is the most complex of the caches, it is also the one which requires the most processing overhead and is the hardest to implement. FastCache is of this kind. When the cache is full, it has to flush old data to be able to cache new, and this can be done in a number of ways. FastCache uses an algorithm called LRU, Least Recently Used, meaning that the information least recently accessed is flushed before more recently accessed information. INSTALLATION Installation is easy. You simply put the appropriate FastCache version (68000 or 68030) where you want it, edit its ToolTypes to fit your system, and double-click on its icon. It's runnable from the shell also, with arguments instead of ToolTypes. Setting the ToolTypes is no problem if you know a little about your hard disk; in my case, as on all A3000's, the device name is "scsi.device" (case sensitive!), and unit number is 6. On other controllers, you will have to check what your device driver is called (like GVPscsi.device for GVP controllers), and what unit number your hard drive is (usually 0). BENCHMARKS The wonderful bit about reviewing something like FastCache is that its performance can be MEASURED OBJECTIVELY! Therefore, you are now going to be treated to a number of impressive benchmarks, all obtained with DiskSpeed v4.2. Here is my system with no caching: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: My setup, without any disk cache. Test partition is 52Mb, 40% full. No CPU Speed Rating -- CPU % not available. Testing directory manipulation speed. File Create: 147 files/sec File Open: 129 files/sec Directory Scan: 221 files/sec File Delete: 322 files/sec Seek/Read: 784 seeks/sec Testing with a 512 byte, MEMF_FAST, LONG-aligned buffer. Create file: 28864 bytes/sec Write to file: 28480 bytes/sec Read from file: 108928 bytes/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 552909 bytes/sec Write to file: 791497 bytes/sec Read from file: 799219 bytes/sec It's not a speed-demon, but not too bad either. Now here are results for my system running FastCache with a 512K cache: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: FastCache 512KB cache, default settings. No CPU Speed Rating -- CPU % not available. Testing directory manipulation speed. File Create: 76 files/sec File Open: 207 files/sec Directory Scan: 897 files/sec File Delete: 344 files/sec Seek/Read: 606 seeks/sec Testing with a 512 byte, MEMF_FAST, LONG-aligned buffer. Create file: 132480 bytes/sec Write to file: 132435 bytes/sec Read from file: 377984 bytes/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 1410065 bytes/sec Write to file: 2453564 bytes/sec Read from file: 3693550 bytes/sec The above is FastCache with its default settings. While it's noticeably faster than my plain system, it is not very impressive; apart from the write-caching, it's slower than SmartDisk. The cache is 512KB, with a LINE_SIZE (prefetch) of 4 blocks, NUM_LINES is 256, and ChipRAM is always used as cache-memory. So, we tweak some parameters and get: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: FastCache 512KB cache, after tweaking of parameters. Testing directory manipulation speed. File Create: 89 files/sec File Open: 231 files/sec Directory Scan: 916 files/sec File Delete: 344 files/sec Seek/Read: 761 seeks/sec Testing with a 512 byte, MEMF_FAST, LONG-aligned buffer. Create file: 175808 bytes/sec Write to file: 214976 bytes/sec Read from file: 438400 bytes/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 1719508 bytes/sec Write to file: 3530118 bytes/sec Read from file: 5799936 bytes/sec While the cache is still 512KB, I've changed the parameters. I've added the NO_CHIP ToolType, and changed the prefetch to 8 blocks. The reason this improves performance is because my partition is fairly unfragmented. To keep the cache at a manageable size, I've halved the NUM_LINES to 128. This setting is pretty optimal on my setup. Now, let's increase the cache size: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: Num_Lines = 256, Line_Size = 16 Testing directory manipulation speed. File Create: 98 files/sec File Open: 210 files/sec Directory Scan: 900 files/sec File Delete: 384 files/sec Seek/Read: 800 seeks/sec Testing with a 512 byte, MEMF_FAST, LONG-aligned buffer. Create file: 202767 bytes/sec Write to file: 244874 bytes/sec Read from file: 540096 bytes/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 2386098 bytes/sec Write to file: 4455156 bytes/sec Read from file: 7733248 bytes/sec This is as fast as it will go on my system. Cache-size here is 2MB, but on systems with more memory it can undoubtedly go even faster. The author claims performance will increase up to a cache size of about 10MB. How about floppy drives? Here is what FastCache can do: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: df0: Buffers: 10 Comments: This is how fast a FLOPPY get with FastCache. Testing directory manipulation speed. File Create: 6 files/sec File Open: 168 files/sec Directory Scan: 926 files/sec File Delete: 416 files/sec Seek/Read: < 1 seeks/sec Testing with a 512 byte, MEMF_FAST, LONG-aligned buffer. Create file: 285 bytes/sec Write to file: 6657 bytes/sec Read from file: 366080 bytes/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 381763 bytes/sec Write to file: 141241 bytes/sec Read from file: 978591 bytes/sec Considering a floppy normally has a peak performance of about 20KB/sec, these are pretty amazing results. I think the figures here are a VERY misleading, though; in normal usage, the increase would be nowhere NEAR this huge. You will NOT get hard disk performance out of a floppy even with a disk cache, no matter what. The settings were the same as for my 512KB tweaked cache, except the unit number was 0 (for df0:) and the device was trackdisk.device. DOCUMENTATION FastCache comes with a text file explaining the usage and various ToolTypes/arguments of FastCache. If you have had a little experience with your Amiga, you will not have any difficulties with the documentation. (If you're a REAL novice to the Amiga, it might be wise to stay clear of potentially dangerous software like disk caches anyway.) LIKES AND DISLIKES Well, I think it's a great program. Although I've heard complaints about FastCache not running, or crashing and causing data losses, it has not caused me any problems during these two weeks. If it continues to behave this well, I will certainly register for the program. My mail-handling now takes only a few minutes, as compared to 15-20 minutes before I got FastCache. Having said this, I'd like to point out that there ARE things that could be improved in the program. Most important would be a less awkward way of configuring FastCache. If it could pop up a window with gadgets for all settings like its competitor PowerCache does, that would be great. Also, I'd like a program which generated statistics about the cache (hit-rate, usage, etc.). COMPARISON TO OTHER SIMILAR PRODUCTS There are a bunch of other disk caches out. I will try to give a short rundown on those here, and add short benchmarks where possible. * SmartDisk. This is a 8-way set-associate disk cache. It does not support multiple devices. The version I've tested is 1.41. It has a fixed size of 512KB, and the parameters cannot be changed. Since it does not do write-back, only reads are sped up. Generally very stable. Very poor documentation. Public domain; author David Le Blanc. MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: SmartDisk v1.41 Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 411578 bytes/sec Write to file: 652099 bytes/sec Read from file: 5701632 bytes/sec * PowerCache. Another set-associate cache. Supports multiple devices. It's released under the concept of shareware, but is so badly crippled that it is hard to test. It is, however, probably faster than FastCache, and far easier to configure. A word of caution: PowerCache v37.46e has a few bugs and causes Enforcer hits when its window is opened. I'd stay away from ANY program that causes Enforcer hits; wait for a bug-fixed version instead. The documentation is outstanding. Shareware; registration fee is $20US, or the equivalent. A fine disk cache indeed. Author: Michael Berg. Here is how PowerCache performed on my stock system: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: PowerCache v37.45e; cache size approximately 660KB. Testing directory manipulation speed. File Create: 114 files/sec File Open: 209 files/sec Directory Scan: 707 files/sec File Delete: 370 files/sec Seek/Read: 901 seeks/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 3899392 bytes/sec Write to file: 6946816 bytes/sec Read from file: 6979584 bytes/sec And now, here is PowerCache with a 10*32*8 cache setting: MKSoft DiskSpeed 4.2 Copyright - 1989-92 MKSoft Development ------------------------------------------------------------ CPU: 68030 AmigaOS Version: 40.9 Normal Video DMA Device: dh0: Buffers: 200 Comments: PowerCache tweaked slightly. Large (1.3MB) cache. Testing directory manipulation speed. File Create: 123 files/sec File Open: 208 files/sec Directory Scan: 717 files/sec File Delete: 370 files/sec Seek/Read: 900 seeks/sec Testing with a 262144 byte, MEMF_FAST, LONG-aligned buffer. Create file: 4620288 bytes/sec Write to file: 8060928 bytes/sec Read from file: 8093696 bytes/sec This is very impressive speed. If properly bug-fixed and less crippled, this program would be the best shareware disk cache available. BUGS Unfortunately, there seem to be bugs or incompatibilities in FastCache. It does not run at all on some systems, on others it LOWERS throughput, and on some it runs fine until it one day crashes and causes loss of data. Possibly this is not FastCache's fault (a misbehaved program which does a write to a portion of the memory allocated to FastCache would cause corrupt data), but equally likely it is. Anyway, if you do not use write-back you will not lose data, so stay safe and disable that feature if you cannot afford to have files destroyed. This is sound advice and goes for ALL disk caches which can do write-back. FUTURE PLANS According to the author, the following features are planned for future versions of FastCache: - GUI. - Stats-program. - Complete rewrite of FastCache, with time critical sections done in assembly. - Buffer for small writes, to speed up small write operations. - AREXX port. - Ability to specify multiple devices to cache (ie: you could specify that trackdisk.device 0 and 1 and scsi.device 6 should be cached, where the most used device will get most of the cache, resulting in more efficient use of memory when multiple devices are cached). CONCLUSIONS Anyone who moves lots of little files, scans large directories, has a slow hard drive, handles mail, or reads large data files from disk would probably benefit from a disk cache. At present, I'd have to recommend FastCache or SmartDisk over the others. It's true that FastCache does have problems on some systems, but it runs beautifully for me and is not crippled, so you can really try it out under the three trial months you are allowed before registering. SmartDisk is pretty limited, but is free, and has no bugs known to me. If PowerCache gets properly debugged, it will be the best shareware disk cache, but until then I don't feel I can recommend it. If stability and safety is REALLY an issue, you might wish to check out the commercial disk caches. I can't really say if they're good or not, as I've not used them, but generally commercial software's more stable than its public domain or shareware counterparts. MVH: Mike Noreen InterNet: radharc@p14.anet.bbs.bad.se FidoNet: 2:201/411.14 --- Daniel Barrett, Moderator, comp.sys.amiga.reviews Send reviews to: amiga-reviews-submissions@math.uh.edu Request information: amiga-reviews-requests@math.uh.edu Moderator mail: amiga-reviews@math.uh.edu Anonymous ftp site: math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews