70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
|
3/19/91
|
|||
|
russbl
|
|||
|
|
|||
|
|
|||
|
NT Clear Memory Utility
|
|||
|
|
|||
|
|
|||
|
|
|||
|
This is a utility for flushing the memory.
|
|||
|
|
|||
|
|
|||
|
Program Structure & Theory of Operation
|
|||
|
=======================================
|
|||
|
|
|||
|
The central routines are all in clearmem.c.
|
|||
|
|
|||
|
You will want to grab three routines:
|
|||
|
|
|||
|
FlushCache - Principle routine for cache flushing, just
|
|||
|
calls the next two routines
|
|||
|
|
|||
|
AccesSection - Creates a 16 mbyte portion of virtual memory
|
|||
|
and reads all of it. This uses all available
|
|||
|
pages, causing the system cache to shrink to
|
|||
|
its quota of 168 pages (672 k).
|
|||
|
|
|||
|
ReadFlushFile - Creates three files for flushing (FLUSH1,
|
|||
|
FLUSH2, FLUSH3) if they do not exist in the
|
|||
|
current directory. Each is 256 kb long.
|
|||
|
Reads the three files into the cache, replacing
|
|||
|
every page in the cache with pages from the
|
|||
|
three files. The closes teh three files.
|
|||
|
|
|||
|
Currently CreateFile calls are made, since
|
|||
|
OpenFile is not working at present.
|
|||
|
|
|||
|
Three files must be used since 256 kb is the
|
|||
|
maximum the file systems will allow to be mapped
|
|||
|
into the cache for any one file at any one time.
|
|||
|
|
|||
|
There are no global variables to worry about. However, error routines
|
|||
|
in cmutl.c are called for diagnostic purposes. You will probably
|
|||
|
wish to handle errors differently. The usage of these is trivial
|
|||
|
to spot.
|
|||
|
|
|||
|
FLUSH.CSH is a kernel debugger output showing that the cache working
|
|||
|
set is indeed filled with only records from the three files (mapped
|
|||
|
to C1a......) when the operation is completed. (A write to the disk
|
|||
|
is currently required to clear the cache completely of the three files
|
|||
|
after they are closed. This is a bug in NT and will be fixed. In
|
|||
|
FLUSH.CSH an mkdir is used to force this. This bug does not affect
|
|||
|
the clearing of the cache by filling it with the three, which happens
|
|||
|
regardless. This unimportant detail which may safely be ignored.)
|
|||
|
|
|||
|
|
|||
|
Build Instructions:
|
|||
|
===================
|
|||
|
|
|||
|
You may build clearmem.exe for test purposes.
|
|||
|
|
|||
|
1. cd \nt\private\sdktools\clearmem
|
|||
|
|
|||
|
2. build
|
|||
|
|
|||
|
The results will be in .\obj\i386. You want the clearmem.exe in
|
|||
|
this directory.
|
|||
|
|
|||
|
|
|||
|
*** END OF README ***
|
|||
|
|