Dec 282017
 
Microsoft Q&A text file about SMARTDrive for Windows 3.1, 14 Jul 92.
File SMRTDTXT.ZIP from The Programmer’s Corner in
Category Tutorials + Patches
Microsoft Q&A text file about SMARTDrive for Windows 3.1, 14 Jul 92.
File Name File Size Zip Size Zip Type
SMARTDRV.TXT 26136 7626 deflated

Download File SMRTDTXT.ZIP Here

Contents of the SMARTDRV.TXT file



Title: Windows 3.1 SMARTDrive: Questions and Answers
Document Number: Q81617 Publ Date: 14-JUL-1992
Product Name: Microsoft Windows 3 Retail Product
Product Version: 3.10
Operating System: WINDOWS

Summary:
Microsoft Windows, Version 3.1
Automated Product Support Service Fax-Script
Questions and Answers: SMARTDrive
--------------------------------------------
1. Q. Why is SMARTDrive in both my CONFIG.SYS and AUTOEXEC.BAT files?
A. This is because there are really two device drivers in a single file:
a disk cache and a double buffer driver. See Question 2 for a
description of double buffering. The cache component of SMARTDRV.EXE
is installed in the AUTOEXEC.BAT file and the double buffer driver is
installed in the CONFIG.SYS file.
2. Q. What is double buffering?
A. Certain disk controllers support a concept called bus mastering where
the disk controller takes over a computer's bus in order to directly
transfer data to and from memory. Sometimes a problem can occur when
running an MS-DOS-based application in the 386 enhanced mode of
Windows. In this mode, MS-DOS applications are running in a virtual
machine. Virtual machines don't have physical memory addresses. So,
the address that is passed to your bus mastering controller is not
always a physical memory address. This can cause data to be read from
the wrong location or, worse, can cause data to be written to the
wrong place in memory. The result can be erratic or dysfunctional
system behavior.
Microsoft created a standard called Virtual DMA Services that
provides an interface that allows these bus master controllers to get
correct addresses and avoid this problem. However, some older bus
master controller cards do not support this standard. To provide a
solution for this, we have added a feature to SMARTDrive. SMARTDrive
can provide a memory buffer that has physical and virtual addresses
that are the same. This allows you to avoid the problem even with an
older bus mastering controller.
This feature is used by placing the following line in the CONFIG.SYS
file:
device=smartdrv.exe /double_buffer
This will install only the double-buffering capabilities of
SMARTDrive. You'll need to add SMARTDrive to your AUTOEXEC.BAT file
in order to install the disk cache.
3. Q. Do I need the double buffering that SMARTDrive provides?
A. Most disk controllers do not need double buffering. These include all
MFM, RLL, and IDE controllers as well as many ESDI and SCSI devices.
SMARTDrive has a feature to help you determine if your system needs
double buffering. Once your system is running with SMARTDrive loaded
for double buffering, type SMARTDRV at the MS-DOS prompt. You will
see a table with some information. Notice the column labeled
buffering. For each drive that is being cached, it can have one of
three values: yes, no, or a hyphen. A yes indicates that double
buffering is needed. A no indicates that buffering is not needed. A
hyphen indicates that SMARTDrive has not yet determined the necessity
of double buffering. If the buffering column has all no's in it, the
double buffer driver is not needed.
An important note: If the double buffer driver is not loaded, you
will see only no's in the buffer column, whether or not your system
needs double buffering.
4. Q. Is it OK to load the double buffer driver into the Upper Memory Area,
or to load it high?
A. The double buffer driver must be loaded into conventional memory, or
in other words, it must be loaded low. In order for the double buffer
driver to work, it needs to operate in memory that has real, physical
addresses. Memory that is provided by a software memory manager, like
EMM386, QEMM386, or 386MAX, should not be used. Loading the double
buffer driver into the Upper Memory Area will result in the same
problem that you are trying to avoid; once again, you will be
buffering memory in a location that does not have a true physical
address.
You will not lose much conventional memory because the double buffer
driver only takes about 2.5K.
5. Q. Can the disk cache portion of SMARTDrive be loaded high?
A. Yes. It will automatically load itself high under MS-DOS 5.0 if
EMM386 is loaded and configured to provide upper memory support. If
you are unsure how to configure EMM386, check your MS-DOS 5.0 Upgrade
documentation or your "Microsoft Windows User's Guide" for version
3.1.
SMARTDrive can also be loaded high with a third-party memory manager
such as 386MAX or QEMM386. Check your memory manager documentation
for more information on loading programs into upper memory.
6. Q. Does SMARTDrive work with Stacker?
A. Yes, SMARTDrive works quite well with Stacker. SMARTDrive is aware of
Stacker and will automatically cache the underlying drive that
Stacker uses. This provides significantly better cache performance
due to the fact that SMARTDrive will be caching compressed code. For
the same amount of memory, you can cache twice as much code because
of Stacker's compression ratio.
7. Q. Why doesn't my Stacker volume show up in the SMARTDrive status
screen?
A. This is because SMARTDrive is caching underneath Stacker. You should
see the underlying drive letter listed in the SMARTDrive status
screen.

COPYRIGHT Microsoft Corporation, 1992.



Title: Troubleshooting Problems with SMARTDrive 4.0
Document Number: Q83303 Publ Date: 8-MAY-1992
Product Name: Microsoft Windows 3 Retail Product
Product Version: 3.10
Operating System: WINDOWS

Summary:
This article discusses solutions to problems that may occur when you
use SMARTDrive version 4.0 (SMARTDRV.EXE), which is included with
Microsoft Windows operating system version 3.1.
More Information:

Double Buffering
----------------
The Windows Setup program attempts to install the double-buffering
portion of SMARTDrive if Setup detects that it is needed. To verify
that SMARTDrive's double buffering is not needed, load the double
buffer portion of SMARTDrive from the CONFIG.SYS file by adding the
following line to the CONFIG.SYS file.
DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER
Note: This does not load the disk cache portion of SMARTDrive.
To see if double buffering is needed, type the following command at
the MS-DOS command prompt:
SMARTDRV
If all of the buffering entries list "no", then double buffering is
not necessary, and the double buffer line can be safely removed from
the CONFIG.SYS file. The SMARTDRV entry in the AUTOEXEC.BAT
file should not be disabled, as this is the portion that actually
loads the disk cache.
For more information on SMARTDrive and double buffering, please query
on:
SMARTDRV and DOUBLE_BUFFER and CACHE and STATUS

Loading SMARTDrive Low
----------------------
SMARTDrive 4.0 attempts to load into the upper memory blocks (UMBs)
automatically on a 386 or higher machine with a UMB provider such as
EMM386.EXE loaded. If there is a memory conflict in the UMB,
SMARTDrive may have problems. If SMARTDrive loads into a UMB that is
currently in use by some other device, such as a video card or network
card, all disk transfers become unreliable.
If you are having problems with SMARTDrive, modify the AUTOEXEC.BAT
file to load the cache low with the following command:
SMARTDRV /L
If problems disappear when SMARTDrive is loaded low, you need to use
an exclude statement on your UMB provider to exclude the area of
memory in conflict. You may be able to use Microsoft Diagnostics (MSD)
to find the ranges that need to be excluded.

Parity Errors
-------------
Parity error messages come from the system BIOS, not Windows or
MS-DOS. A parity error indicates that there is a hardware problem; one
of the memory chips is not functioning properly.
If a parity error occurs using SMARTDrive, it is likely that some
areas of extended memory are being used, which may not have been used
before.
If you are getting parity errors, your memory is unreliable and should
be serviced.

Simulating SMARTDrive Memory Usage for Testing
----------------------------------------------
Sometimes, problems are cause by memory configurations unrelated to
but exacerbated by SMARTDrive. To verify that a problem is related to
the memory configuration, and not SMARTDrive, RAMDrive can be loaded
using the same amount of extended memory as SMARTDrive. You may have
to manipulate the free conventional memory to match when RAMDrive is
loaded instead of SMARTDrive. You can do this by loading a TSR that
causes the first free block of memory to be in the same place as
before. You can do this using MS-DOS 5.0 with the following steps:
1. Use the MEM /DEBUG command to show how much conventional memory
is available when SMARTDrive is loaded
2. Edit the CONFIG.SYS and AUTOEXEC.BAT files. Add RAMDrive to the
CONFIG.SYS and remove SMARTDrive from the AUTOEXEC.BAT.
3. Load TSRs to reduce the free conventional memory to the value
found in step one. The MS-DOS 5.0 utility DOSKEY is convenient for
this because you can control its conventional memory size with the
/REINSTALL /BUFSIZE= parameters.
Additional reference words: 3.10 SCSI Future Domain

COPYRIGHT Microsoft Corporation, 1992.



Title: Configuring SMARTDRV.EXE 4.0 DOUBLE_BUFFERING Properly
Document Number: Q82856 Publ Date: 2-APR-1992
Product Name: Microsoft Windows 3 Retail Product
Product Version: 3.10
Operating System: WINDOWS

Summary:
Failure to use the double-buffering feature of the SMARTDrive
(SMARTDRV.EXE) utility included with the Microsoft Windows operating
system version 3.1 when this feature is required may cause MS-DOS
virtual machines to crash, Windows to crash at startup, and other
random operational problems.

The Windows Setup program attempts to install the double-buffering
portion of SMARTDrive if Windows detects that it is needed. These
problems may occur if the DOUBLE_BUFFERING entry is disabled in the
CONFIG.SYS file.
More Information:
To verify whether the SMARTDrive utility is necessary, enter the
following command at the MS-DOS command prompt:
smartdrv
If all of the buffering entries list "no", then double buffering is
not necessary. If the double-buffering entry is contained within the
CONFIG.SYS file, it may be disabled. The entry in the AUTOEXEC.BAT
file should not be disabled.

If the 32-Bit Disk Access option is available, then double-buffering
is probably not necessary. If the 32-Bit Disk Access option is not
available, the following command line should be present in the
CONFIG.SYS file
DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER
where C is the drive and Windows is the directory location of the
Windows 3.1 SMARTDrive utility.
If at any time the buffering entries list "yes", then the problem has
been corrected. If the entry "-" appears in the DEVICE= buffering
line, SMARTDrive hasn't yet determined if double buffering is
necessary. This entry may be forced to change (from a "-" to a "yes"
or a "no") by one of the following methods:
1. Loading drivers or TSRs (terminate-and-stay-resident) programs into
UMBs (upper memory blocks).
2. Run Windows and start multiple instances of MS-DOS virtual
machines. This may not trigger it to change, however, because only
certain types of writes (DMA into linear != physical memory) will
cause the buffering to start. If problems occur and the line still
says "-", then this is most likely not the problem.
Some disk ROM BIOS versions cause Windows to crash when multitasking
occurs. (Technically, this occurs when a page-fault or instance fault
occurs during a read of memory-mapped I/O). Double buffering usually
works around this problem because faults will not occur on the double
buffer. In these cases, double buffering can be forced to start by
adding a plus sign (+) to the end of the command line in the
CONFIG.SYS file as follows
DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER+
where C is the drive and Windows is the directory location of the
Windows 3.1 SMARTDrive utility.
Usually, a better approach is to disable the 32-Bit Disk Access option
and use a temporary swap file.
If the machine continues to exhibit random operational problems while
the 32-Bit Disk Access option is disabled, install the DOUBLE_BUFFER+
entry into the CONFIG.SYS file. Because "instance faults" on the
double buffer may still occur, the complete solution is to load a 4K
memory buffer before and after the double-buffer line in the
CONFIG.SYS file. (Most any driver will work, as long as it does not
contain Windows instance data. The idea is to ensure there is no
Windows instance data in the same 4K page[s| as the double buffer.)
Additional reference words: 3.10 win31

COPYRIGHT Microsoft Corporation, 1992.


Title: SMARTDRV Cache Status -- What Does Buffering Mean?
Document Number: Q82709 Publ Date: 1-APR-1992
Product Name: Microsoft Windows 3 Retail Product
Product Version: 3.10
Operating System: WINDOWS

Summary:
In Microsoft Windows operating system version 3.1, the character mode
display of the status of SMARTDRV.EXE has a column for buffering
status. The entries in this column can be "yes", "no" or "-" (minus
sign). This article describes the meaning of these entries.
More Information:
The following is an example of the printout you receive if you access
SMARTDRV.EXE from the MS-DOS prompt by typing "smartdrv" (without the
quotation marks) and pressing the ENTER key:
Microsoft SMARTDrive Disk Cache version 4.0
Copyright 1991,1992 Microsoft Corp.
Cache size: 1,048,576 bytes
Cache size while running Windows: 1,048,576 bytes
Disk Caching Status
drive read cache write cache buffering
--------------------------------------------
A: yes no no
B: yes no no
C: yes yes yes
F: yes yes -
G: yes no no
For help, type "Smartdrv /?".
The column labeled "buffering" describes the state of double
buffering. There are three possible states: yes, no and maybe. A "yes"
in this column means that double buffering is being performed on the
drive (noted under the "drive" column). A no means that buffering is
not being performed on the drive. The maybe state (indicated by a
minus sign) means that SMARTDRV.EXE cannot determine if buffering is
needed.
SMARTDRV.EXE watches each data transfer to determine the need for
buffering. If it sees a transfer to an upper memory block (UMB), it
may be unable to determine if there is a need for double buffering.
The double buffer driver must be loaded for SMARTDRV.EXE to determine
if there is a need for buffering. If the double buffer driver is not
loaded, all entries in the buffering column read "no." The double
buffer driver is loaded from the CONFIG.SYS file. Below is an sample
line to install the double buffer driver:
DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER
Even if you install the double buffer driver, SMARTDRV.EXE may decide
that it is not needed. In this case, the double buffer driver is not
loaded and does not take up any memory.
You can force the double buffer driver to load even if SMARTDRV.EXE
decides that it is unnecessary. Using a plus sign (+), as in the
following example, forces the double buffer to load:
DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER+
Additional reference words: 3.10

COPYRIGHT Microsoft Corporation, 1992.




Title: SmartDrive 4.0 Design Overview
Document Number: Q82203 Publ Date: 2-JUN-1992
Product Name: Microsoft Windows 3 Retail Product
Product Version: 3.10
Operating System: WINDOWS

Summary:
SMARTDrive version 4.0 is designed as block-oriented disk cache. It
hooks into the system at the MS-DOS device driver level rather than at
the ROM BIOS INT13 level. Each block device driver on the MS-DOS
device driver chain is "front-ended" by SMARTDrive 4.0, which provides
the caching.

SMARTDrive 4.0 is a utility included with Microsoft Windows operating
system version 3.1.
More Information:
SMARTDrive 4.0 calls the MS-DOS level device driver to perform any
needed physical disk I/O. This design yields the following benefits:
1. It is independent of the INT13 interface. Many device drivers do
not use the INT13 interface. This means that these devices can be
cached where INT13-level caches cannot. Examples are Bernoulli
drives, some hard cards, and many SCSI and WORM drives. SMARTDrive
4.0 can cache any disk controller that uses an MS-DOS block device
driver.
2. It is independent of disk geometry. Some disk managers and disk
controllers use a disk-geometry mapping scheme that causes the
"logical" geometry (that is, what MS-DOS sees) to be different from
the physical geometry. Examples are many PS/2 systems, Ontrack's
Disk Manager, and several disk controllers.
INT13-based caches are sensitive to this difference and often have
problems. For example, some disk-management software will actually
change the ROM BIOS specified disk geometry on the fly and thus
confuse INT13-based caches.
There usually is an interface to determine the true geometry, but
this requires detection of the specific disk manager driver and
generally complicates the disk cache software. Often, logical
tracks will actually cross physical track boundaries, which then
causes track caches to incur performance penalties (inter-track
seeks and rotational latencies). Also, in order to get around the
ROM BIOS 1024 cylinder limitation, disk managers and controllers
will "fold" multiple tracks into 1 logical track. Doing this yields
the above problem as well as forcing track caches to have a very
large track buffer. In some cases, this cache is as large as 31.5K
and must reside in low memory. The design of SMARTDrive 4.0
eliminates the geometry mismatch problem.
3. SMARTDrive 4.0 is also a write-behind cache. It adds significant
performance improvement when files are being written. An
application will write data to what it thinks is the disk.
SMARTDrive will take this data and place it in a cache rather than
physically writing it to the disk. This write-behind data will stay
in the cache until one of the following events occurs:
a. The cache fills up. The oldest block in the cache is freed up
and if it is write-behind data, it is physically written to the
disk.
b. The system goes idle. SMARTDrive will write the oldest
write-behind data block to the physical disk. As long as the
system is idle, it will continue to write data until all the
write-behind data has been written. This includes both Windows
and MS-DOS applications being idle.
When a disk-reset operation occurs (INT21H, function 0DH),
SMARTDrive will write all write-behind data to the physical
disk. This is a synchronous operation--SMARTDrive does not give
up control until all data has been written. Because of this
feature, disk defragmenters and other utilities (such as CHKDSK)
do not get the benefit of write-behind caching, but this feature
provides safety since this is a common way to "commit files"
(that is, to make sure that all writes have completed) under
MS-DOS. A number of applications force a system reboot, and they
generally issue a disk reset prior to jumping to FFFF:0.
c. If a block is older than 5 seconds, it is written to the
physical disk.
Note: SMARTDrive cannot flush its buffers when exiting Windows if
you are running a version of QEMM earlier than 6.02. Earlier
versions of QEMM trap the INT 2Fh shutdown broadcast. After exiting
Windows in this configuration, SMARTDrive would not increase its
cache size to the cache size prior to starting Windows, nor would
the cache be flushed.
4. SMARTDrive 4.0 implements a shrink algorithm that frees memory for
Windows that is similar to the one in SMARTDrive 3.x. The
difference is that SMARTDrive 4.0 watches for the Windows startup

broadcast while SMARTDrive 3.x provides an IOCTL interface. The net
effect is identical but the SMARTDrive 4.0 code is much simpler.
When Windows is exited, the process is reversed and the memory is
reacquired by SMARTDrive 4.0.
Testing the Performance of SMARTDrive 4.0
-----------------------------------------
1. Hard disk performance tests will not produce representative results
since they often use the disk-reset function. These are designed to
test the physical performance of the disk, not the disk cache. Disk
defragmenters and other utilities that directly manipulate the disk
(such as CHKDSK) also issue a disk reset to make sure that the data
is really written to the disk. These will not show performance
gains with write-behind caching.
2. Cache size. SMARTDrive will automatically determine a reasonable
cache size based on the amount of free extended memory when it
initially loads. Any tests should load SMARTDrive with the cache
size specified on the invocation line. A small cache will not
perform as well as a large cache.
3. Windows startup speed is not a good test of SMARTDrive's
performance since the shrink algorithm causes the cache to be
flushed.
Double Buffering and Bus Masters
--------------------------------
Certain disk controllers support a concept called bus mastering. This
is where the actual disk controller takes over the bus in order to
transfer data to or from system RAM. Some SCSI controllers have this
feature. A problem occurs when running in the virtual 8086 mode that
Windows 3.0 and 3.1 virtual machines provide. Popular memory managers
also use virtual 8086 mode. The read or write address that is passed
to MS-DOS is often not the same as the actual physical memory address.
This can cause data to be read from the wrong location or worse, can
cause data to be written to the wrong RAM. The result can be erratic
system behavior.
Microsoft created a standard called Virtual DMA Services, which
provides an interface that allows these bus-master controllers to get
the correct address and avoid the problems mentioned above. However,
some older bus-master controller cards do not support this standard.
To this end, a feature has been added to SMARTDrive that provides a
memory buffer that has physical and virtual addresses that are the
same. This avoids the problem at the cost of 2.5K of conventional
memory and a small amount of performance (the cost of moving the data
to and from the buffer.) To use this feature, place the following line
in the CONFIG.SYS file:
DEVICE=SMARTDRV.EXE /DOUBLE_BUFFER
This line does not install the cache, only the double-buffer driver.
(The cache must be installed in the AUTOEXEC.BAT file.)
Most disk controllers do not need double buffering. This includes all
MFM, RLL, and IDE controllers as well as many ESDI and SCSI devices.
The Windows 3.1 Setup program will not install the double buffer
driver in most cases. In the cases where Setup is unable to determine
if double buffering is needed or not, it will install the driver based
on the reasoning that it is better to err on the side of safety. A
feature has been added to SMARTDrive to help determine if double
buffering is unneeded and allow removal of the driver. Once the system
is running with SMARTDrive loaded, type "SMARTDRV" (without quotation
marks) at the MS-DOS prompt. The following will appear:
Copyright 1991,1992 Microsoft Corp.
Cache size: 1,048,576 bytes
Cache size while running Windows: 1,048,576 bytes
Disk Caching Status
drive read cache write cache buffering
--------------------------------------------
A: yes no no
B: yes no no
C: yes yes yes
D: yes yes -
Microsoft SMARTDrive Disk Cache version 4.00
For help, type "Smartdrv /?".
Note the column labeled buffering. For each drive that is being
cached, it can have one of three values: yes, no, or -. "Yes"
indicates that double buffering is needed, "no" indicates that
buffering is not needed. "-" indicates that SMARTDrive has not yet
determined the necessity of double buffering. If the buffering column
has all "no"'s in it, the double buffer driver is unneeded.
Additional reference words: 3.10 3.1 SMARTDRV.EXE smart drive

COPYRIGHT Microsoft Corporation, 1992.




 December 28, 2017  Add comments

Leave a Reply