Double Scan 95 "RAM Doubler" Performance/Compression Analyzer
Copyright (C) 1995, Mark Russinovich and Bryce Cogswell
You may copy and publish this as long as the authors get credit.
Introduction
The Double Scan utiltity determines the fraction of a program's data which
is compressed by "RAM doublers", as a tool to validate and
compare manufacturers' claims.
Sample output from DblScan, while running SoftRAM 95 under
Windows 3.1, with a permanent swap file. Note that "Total uncompressed
pages found" is equal to "Pages Allocated." In contrast, here is
DblScan output, also from Windows 3.1, but with a genuine RAM
compressor, RAM Doubler from Connectix, installed:
Notice that the number of uncompressed pages found by DblScan is
less than the number of pages allocated: some of the pages were
compressed by RAM Doubler. Similar (actually, in this
case, even better) results are achieved with MagnaRAM from
Quarterdeck, another genuine RAM compressor. Now note the results
from DblScan, with no RAM-compression software at all:
Of course, the number of uncompressed pages is identical to the
number of pages allocated, just as if SoftRAM were installed. Notice
too that more time is used (25 sec.) than when a genuine RAM compressor
is installed (14 sec.), but less time than when SoftRAM is installed
(27 sec.).
Installing Double Scan
Double Scan runs under Windows 3.1 and Windows 95.
To install Double Scan, unpack the files into a directory such as c:\dblscan.
Next, add a line to "[386Enh]" section of your "\windows\system.ini" file
of the form:
device=c:\dblscan\dblscan.386
Running Double Scan
Begin Double Scan as you would any other Windows program.
The Help button brings up this readme file. The Start button starts the
test. After hitting Start, you will be prompted for a delay period and a
scan string. The delay period represents the length of time that Double
Scan will wait after its test before it scans memory to accumulate results.
This delay gives RAM doublers that claim to compress during Windows idle
periods the opportunity to do so.
The scan string represents the text information that Double Scan fills
the memory it allocates with. It is not really important what the string
is as any reasonable compression algorithm will have no problem
compressing repeated strings of 8 characters in length, but the
compressability will be increased further if you choose a string of
8 identical characters.
Double Scan requires several seconds to several minutes to perform its
analysis, during which time your machine may not be useable. To
ensure accurate and reproducible results you should reboot the machine
prior to each run, and ensure that no other programs are currently running.
Running the program twice without rebooting may confuse Double Scan into
miscounting the number of pages being compressed.
See the "Interpreting results" section below for help on how to interpret the
output of the program.
Background
The size of a computer's RAM memory determines the amount of information
that the system can directly access. Each program, or block of data used
by a program, requires a portion of the valuable RAM space proportional to
the program's size. When a machine's RAM is exhausted the system will either
fail to load additional programs or data, or will be forced to begin storing
some of the information on the hard disk instead of RAM. Data being stored
on the hard disk cannot be directly accessed by the machine; it must first
be copied into RAM, usually displacing other information which is then copied
to the hard disk. The process of copying data from disk before accessing
it can be thousands of times slower than accessing directly in RAM memory.
(This behavior is refered to as "paging" or "virtual memory".)
RAM "multipliers"
The principal behind "RAM doublers" is that by compressing the information
in a computer's RAM memory, more programs and data can reside in the machine
simultaneously, and the need to copy information to and from the hard disk
is reduced. The result is that more and bigger programs can execute
simultaneously, and performance is increased because more information can
be accessed directly. (Performance will never be as good as if real additional
RAM chips are added to the machine, because the overhead of compressing and
uncompressing the data slows the machine).
Double Scan behavior
The Double Scan utility verifies the functionality of a RAM multiplier (the
term "doubler" is a misnomer because it is impossible to guarantee the
specific amount by which data can be compressed and thus memory increased).
It detects what fraction of the data a program uses is actually being
compressed, and the proportion that is stored in RAM versus stored on the
hard disk. Double Scan accomplishes this by allocating and using an amount
of memory larger than the system's RAM memory. In order to satisfy this
request the system is forced to either store some of the information on
the hard disk, or if equiped with a RAM multiplier, to compress some of
the information in RAM. While running, Double Scan audits the information
being written to disk, and searches the RAM memory to determine if it can
locate its data in an uncompressed form. It then reports the total
counts to the user.
Interpreting results
Double Scan reports its results in terms of memory "pages." A page of
memory is 4096 bytes (4 kilobytes), and when the system allocates or
manipulates RAM memory it does so in chunks of this size. Similarly,
when RAM memory must be copied to or from the hard disk it is done in
blocks of this size.
The meanings of the numbers reported by Double Scan are as follows:
Pager type: This entry tells you what type of mechanism is being used
by the pager to write to the disk. Here are the possible settings:
Win3.1 Paging Type
------ -----------
NOPG No paging activity was encountered hence the
type of pager was not detected
DOS You have a temporary swap file so DOS is being
used to access it
BIOS You have a permanent swap file, but your 32-bit
disk access is disabled
BLCK You have a permanent swap file and 32-bit disk
access is enabled
Win95 Paging Type
----- -----------
NOPG No paging activity was encountered hence the
type of pager was not detected
DOS Windows does not recognize your hard drive's type
so its using DOS to do the accesses
IFS The normal case where Windows is using the IFS
manager to access the swap file
Number of disk writes: The number of times the system copied
information from memory onto the hard disk. A larger number
translates to worse performance. If compression is taking place this
number should be smaller than without compression, since a greater
fraction of information will be kept in RAM rather than on the disk.
Number of pages allocated: This is the total amount of memory
that Double Scan requested from the system. Some fraction of this
memory will be in RAM, some will be on the hard disk, and some will
be compressed by any existing RAM multiplier.
Number of pages in RAM: This is the number of pages that Double Scan
allocated that were stored in RAM in an uncompressed form.
Number of pages on disk: This is the number of pages that Double Scan
allocated that were stored on the hard disk in an uncompressed form.
Total pages found: This is the number of pages that Double Scan
allocated that were uncompressed by a RAM multiplier. If this number
comes out to a number larger than the total pages allocated, it means
that there is some internal buffering being used by either the
RAM doubler or the disk subsystem and it represents redundant un-used
information.
Total time: This is the amount of time required to run the
experiment not including clean-up time at the end. A quality RAM
multiplier should reduce this time by reducing the amount of
information copied to the disk. If you specified a delay for memory
scan, then the time represents time up to the point where Double Scan
started to wait for the delay period to expire.
If the number of pages reported as being compressed is close to zero, then
the RAM multiplier you have installed is not functioning correctly.
If a good RAM doubler is being used, then what you should see is the
following:
-
a drop in the number of disk writes under the RAM doubler versus
without, since more pages are kept in RAM due to compression
-
a drop in the total time under the RAM doubler since there
are fewer disk accesses and compression should be faster than
disk accesses
-
a drop in the number of pages found on disk and in RAM since
compression will prevent Double Scan from finding its signature
IF YOU DO NOT SEE ANY DIFFERENCE IN PAGES FOUND AND PAGES ALLOCATED
THERE IS NO COMPRESSION BEING USED
Example Results
A thorough comparison has been made between native Windows, Syncronous
Softcorps.'s SoftRAM95, Quarterdeck's MagnaRAM2 and Connectix's RAM
Doubler (Windows 3.1 only). Runs were executed for each setup for each
of the three Windows 3.1 paging types (see above) as well as Windows 95.
Example screen-shots for runs under Windows 3.1 are in the Windows 3.1
Write file "rslt31.doc." Example screen-shots for runs under Windows 95 are in the WordPad document "rslt95.doc."
The following table summarizes the results of the experiments:
Windows 3.1: Temporary Paging File, DOS Paging
----------------------------------------------
Pages Compressed Time
Native 0 31
SoftRAM 0 34
RAM Doubler 818 14
MagnaRAM 1617 15
Windows 3.1: Permanent Paging File, BIOS Paging
-----------------------------------------------
Pages Compressed Time
Native 0 25
SoftRAM 0 27
RAM Doubler 918 14
MagnaRAM 1565 12
Windows 3.1: Permanent Paging File, Blockdev Paging
---------------------------------------------------
Pages Compressed Time
Native 0 21
SoftRAM 0 19
RAM Doubler 918 14
MagnaRAM 1344 12
Windows 95: IFS Manager Paging
------------------------------
Pages Compressed Time
Native 0 18
SoftRAM 0 18
RAM Doubler N/A N/A
MagnaRAM 3040 12
The results indicate that under the test conditions, SoftRAM does
not perform any compression while MagnaRAM and RAM Doubler both do.
Runs were made on SoftRAM with delays of 30 seconds and the results
were identical to those in the above summary table. This result
is consistent with the conclusion that SoftRAM does not use compression.
The Double Scan algorithm
Double Scan detects the number of pages being compressed by allocating pages
and filling them with an easily recognized signature string. It hooks the
disk read/write services, and while executing counts the number of pages
that are written to disk containing this signature. Written pages that
have been compressed will no longer have the signature clearly visible,
while uncompressed pages are easily detected.
When all memory is allocated and filled (some of which will have been
written to disk), Double Scan scans through the machine's RAM and counts
the number of pages in RAM that have not been compressed. The total number
of uncompressed pages is computed by adding the uncompressed count on
disk and uncompressed count in RAM.
Modifying and recompiling the sources
Double Scan is free software, and may be freely modified and redistributed.
Double Scan was built using Visual C 1.5 and VTools 1.11.
SoftRAM 95: Does it do Anything?
The O'Reilly Windows Center
Unauthorized Windows 95 Update