Finally: LBAcache-13nov02.zip should be more efficient :-)

Eric Auer <[email protected]> Wed, 13 Nov 2002 04:38:47 +0100 (MET)
Newsgroups gmane.os.freedos.devel,gmane.spam.detected
Message-ID <[email protected]>
Hi, the LBAcache in      
http://www.coli.uni-sb.de/~eric/stuff/soft/ lbacache-13nov02.zip

now finally contains a less stupid allocation algorithm (still verry
simplistic): It may scan a whole lot of entries (6300 for a 25M cache)
until it finds back a cached sector (bad) but it can store the sector
in any of those (good). The old version had a fixed mapping of sector
number to cache entry. So the allocated XMS should be used much more
efficiently now!

Further changes:
Better GNU public license disclaimer in each .asm file, .lsm package
description now included. The lbacached.com and lbacached.sys will print
a short debugging message on the screen whenever they decide to discard
a sector from cache to make room for a new sector (actually, discard up
to 8 for up to 8, but the message does not tell you about that). Useful
for determining a good cache size for you. The README.TXT has also been
improved :-).

Old changes:
Advantages of LBACACHE-DEVEL compared to LBACACHE:
- shorter help and info screen, which you can redirect to a file with the
  usual shell "... > file" method.
- human readable number of read/write hit/miss and read/write hit percentage
  display in info mode (no rounding of the percentage now: was broken).
- fixed an old fatal bug that occured when you tried to unload several
  instances at the same time with lbacache stop (only for .com instances
  under certain circumstances).
- the new version detects up to 8 harddisks and does LBA-ability and sanity
  checking for each of them, the old version detects up to 4 harddisks and
  only does LBA-ability checking for the whole BIOS once.
- the new version consumes 4k plus for each allocated 0.25MB (maximum is
  99*0.25MB=24.75MB) an additional 0.5k of DOS RAM (DEVICEHIGH and LOADHI
  are possible), the old version consumed 2k for each 0.5MB (maximum was
  9*0.5MB=4.5MB) of XMS, plus the same 4k. The old version allowed you to
  use either no or 500 bytes of local stack. The new version always uses
  300 bytes which you can no longer turn off. This is safer for FreeDOS.
- Floppy disk caching probably is better now: It might be the case that you
  can now cache 1.2MB disks in 1.2MB drives (and XXXk disks in XXXk drives
  in general) without trashing all data copied to/from them. Only 1.44MB are
  officially supported, and using an XXXk disk in an YYYk drive still is VERY
  likely to trash data!
  Remember that if you do not dare to cache floppies, just do not enable the
  floppy cache. To enable the floppy cache, use the FLOP option. To disable
  the harddisk cache, use the DRV NULL option.
- the new version automatically detects when it is short on DOS RAM (DOS 5+
  required) and will shrink itself then and give a warning. The old version
  crashed your system sooner or later in that case. Important for people who
  use big LBAcache caches but load them into (too) small UMB areas...
- the new version allows you to use a debugger (or a tool you would have to
  write) to make cache entries persistent (protected from being reused by
  other sectors). You may want to read the internal "table" table anyway,
  for example to create some nifty histogram of the cache usage statistics.
- most changes should also be mentioned in README.TXT, and there may be
  changes that I forgot to mention in this mail.

For the announcement: Please use this short text for the announcement:


/---
Hi, the LBAcache in      
http://www.coli.uni-sb.de/~eric/stuff/soft/ lbacache-13nov02.zip

now finally contains a less stupid allocation algorithm (still verry
simplistic). This will take more CPU time but will use the allocated
XMS more efficiently. The hit percentage display in the info screen
now finally works, and the screen output is now generally shorter (two
columns, redirection to a file with ">" is possible, unless you have a
buggy kernel). LBACACHD works like LBACACHE but prints debugging messages
when the cache spills (is full).

Further important changes comparing the DEVEL version to the STABLE
(lbacache.zip) version: DEVEL detects up to 8 harddisks, may work with
1.2M floppies now (only 1.44MB recommended! Read the warning in README.TXT),
and uses memory much better now (STABLE crashes sometimes when uninstalling
with LBAcache STOP, and STABLE crashes when installed in a too small UMB).
Also uses less DOS RAM than STABLE. While STABLE was limited to using 4.5MB
of XMS, DEVEL now allows using 24.75MB with the BUF 99 option. Detection of
harddisks on systems with several BIOSes is now better. For more information
on everything, please read README.TXT before using LBAcache. Have fun!

Please send benchmark results, comparing LBAcache to SMARTDRV and NWCACHE
(make sure to use the same amounts of XMS or EMS, and the /X option with
SMARTDRV or the /DELAY=OFF (alternatively /W=0) option with NWCACHE). I am
especially interested in the effect of varying the /BL (or /BU or /BE)
option value in NWCACHE or the /B option value in SMARTDRV, and the /E
option value in SMARTDRV.
Or send other suggestions for improving LBAcache (apart from: "please add
delayed writing" or "please add CD-ROM caching" - too complicated for now).
\---




Have fun with this one. I hope it runs fine, stable and efficient now,
but as usual with drivers under GNU GPL you cannot know. But I promise
that I did not include any intentional bugs or damage-causing code...

Cheers, Eric.