Subject: REVIEW: FastCache version 1.0
From: [email-masked] (Mike Noreen)
Date: 9 Jul 1993 01:48:04 GMT
Newsgroups: comp.sys.amiga.reviews

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:		[email-masked]

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: [email-masked]                
                        FidoNet: 2:201/411.14

---

   Daniel Barrett, Moderator, comp.sys.amiga.reviews
   Send reviews to:	[email-masked]
   Request information:	[email-masked]
   Moderator mail:	[email-masked]
   Anonymous ftp site:  math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews