[comp.os.vms] dumping to the page file

gkn@M5.SDSC.EDU (Gerard K. Newman) (12/25/87)

    From: Richard Steinberger <STEINBERGER@KL.SRI.COM>
    Date: Wed 23 Dec 87 09:49:46-PST

    There is a dump file on my system disk that is 32767 blocks large (the
    same size as physical memory).  My understanding is that this area will
    be used by VMS in case the system crashes.  The contents of memory will 
    be stored here.  This is fine; but I was wondering if there are any ways
    to have this file/disk area serve two functions since it seems to be
    unused during "normal" VMS operations.  For example, is there a way that
    it can also be a page or swap file until/unless the system crashes? 
    Are there other uses or should I just keep my hands off?  Thanks
    in advance to all who respond.

    -Ric Steinberger

You can get by without a dump file if your system doesn't crash often, or
you don't care about dumps, or you don't have a lot of disk space.

Your dump file has to be <size-of-physical-memory-in-pages> + 4 blocks in
V4.x of VMS (the formula is different for V5.0, but not much different).
The 4 blocks are for processor context (registers, etc), two error log
buffers, and a reserved block.

If you set the SYSGEN parameter SAVEDUMP to 1, and make your primary page
file <dump-file-size> plus enough to get your system to boot and have
SDA run (~ 5K blocks), the system can dump in the pagefile.  Running SDA
from an account with CMKRNL privilege and using the SDA> COPY command to
move the dump out of the page file (even to NLA0:) will release the blocks
occupied by the dump back to normal paging use.

Changing your system to do this on the fly is a little difficult if you
already have a dump file.  VMS remembers where the dump file is in the
boot control block.  If you delete the dump file and then shut your system
down you're still going to get a dump on the blocks that used to comprise
your dump file.  There are two workarounds:  one is not for the faint of
heart, and the other is a more acceptable approach.

The acceptable approach involves setting up your page file to be the right
size, renaming your dump file to something besides SYSDUMP.DMP, setting
SAVEDUMP to 1, and rebooting your system.

The neat-hack approach involves locating the boot control block (whose
address is handily in EXE$GL_BOOTCB), and either invalidating the checksum
(at offset BOO$L_CHECKSUM) or blasting the dump VBN, size, or retrieval
pointer map (at BOO$L_DMP_VBN, BOO$L_DMP_SIZE, and BOO$L_DMP_MAP).  Blasting
the latter will invalidate the checksum, so it's easier to park a 0 on top
of BOO$L_CHECKSUM.

Enjoy,

gkn
----------------------------------------
Internet: GKN@SDS.SDSC.EDU
Bitnet:   GKN@SDSC
Span:	  SDSC::GKN (27.1)
USPS:	  Gerard K. Newman
	  San Diego Supercomputer Center
	  P.O. Box 85608
	  San Diego, CA 92138-5608
AT&T:	  619.534.5076