Document 1906
Troubleshooting Memory
06/04/92
MG

TROUBLESHOOTING MEMORY PROBLEMS - MULTIUSER DOS


GENERAL RECOMMENDATIONS

If the version of Multiuser DOS being used is 5.0, make sure it has been
upgraded with the Multiuser DOS Business Update of September, 1991.

If new memory has been installed, check the memory count upon bootup, to verify
that the system recognizes all the memory available to it.

To minimize memory fragmentation, users could exit applications frequently
(e.g., before breaks, and at lunch time). Be sure to turn the computer off
daily. (If 1k is used each time a program is loaded, eventually the total of
these 1k pieces will equal all the available memory.)

Be aware that loading something (e.g., a TSR) in CCONFIG.SYS or AUTOEXEC.BAT
will load it globally, and detract from the available memory system-wide. If a
TSR is only needed in one session, it's best to load it via (a) a START file,
or (b) a conditional line in AUTOEXEC.BAT testing for the value of the console
number (%1, e.g., IF "%1"=="4" CALL TSR.BAT).


APPLICATION PROBLEMS

In order to increase the free memory available to all sessions, you can limit
applications' access to memory in one of two ways:
1. To limit access for ALL applications on the system, lower the value of
"Maximum memory per process" in SETUP. 
2. To limit access for just one application, lower the value of "Maximum memory
desired", on the PIFED screen for that application.

To use the second approach, one first needs to determine how much memory the
application needs to run. This information is generally available from the
application documentation, or from the manufacturer. If the user is not sure
how much memory is needed, he/she could use the MEMSIZE command to limit the
memory available, work with the program for a while, limit it some more, work
with the program some more, and so forth, until the lowest limit that will
allow the program to run comfortably has been reached. Thorough testing at this
stage is essential, as an application with too little memory available to it
may load and run for a while, but not be able to execute its more memory-
intensive modules.

Once the maximum amount of memory needed for an application has been
determined, run PIFED on the executable file that runs the application. (For
example, to alter the specifications for wp.exe, one would type PIFED WP.EXE.) 
Each field in PIFED is explained on pages 15-8 to 15-13 of the Multiuser DOS
User Guide. The most important steps would be to (a) reduce the value of the
Maximum Memory Desired field, to get it closer to the amount demanded by the
application, (b) set the Interrupt Vector Range from 0 to FF, so that all
interrupt vectors are banked out and in with the application, and (c) alter the
setting of the Program Waits in Idle Loop field; try "NO" first, then "YES."

For large multiuser systems, the value of the Additional System Memory Pool
field in SETUP should be increased to allow for the additional system
structures required.

When an application appears to be having memory problems, here are a few fields
to check in SETUP:
- increase the system memory pool
- decrease the maximum memory per process
- choose NOT to set all upper memory to AUTOSCAN, then manually disable some of
the blocks which are next to blocks disabled by Autoscan


TERMINAL HANGING PROBLEMS

Hanging terminals can be a result of memory shortages. The following changes
may alleviate the situation:

- In the BIOS setup, reduce the speed of all possible parameters.
- In CCONFIG.SYS, set FILES=100 and FCBS=16,16.
- In SETUP, disable those memory blocks which are next to memory blocks that
have been disabled by Autoscan.
- In AUTOEXEC.BAT, alter the setting of NETDRIVE. Try Remote first; if that
doesn't help, try Local.
- In AUTOEXEC.BAT, use MEMSIZE to reduce the memory allocation for each
session.
- PIFED the application, making these changes:
        - set memory allocation down closer to amount needed.
        - set the interrupt vector range to 00-ff, so all interrupt vectors are
        swapped out with the application.
        - answer NO to "Program waits in idle loop."  If that doesn't help,
        reset it via PIFED to YES.


NOT ENOUGH MEMORY

Occasionally, when a user moves from an application in one session to another
session, anything command issued by the user will result in a "NOT ENOUGH
MEMORY" error. To determine the amount of memory available in the TPA
(Transient Program Area), type SHOW /M at a prompt, and note the amount of DOS
Free Memory. This is the maximum amount of conventional memory that is
available for any one session. If SHOW /M shows no memory available after the
user has switched from one session to another, the user ought to (a) verify
that all existing memory is being recognized at boot time, then (b) run PIFED
on the application in the first session.


PC TERM

Occasionally, PCTERM, upon exiting back to its menu on a PC terminal, will
hang. In this case, the path is probably getting lost on the 286/terminals,
which means that the environment variables are somehow being affected when
they're stored in the memory of the host machine. To correct this problem:
- In SETUP: increase system memory pool; decrease maximum memory per process
(to about 512k).
- In CCONFIG.SYS: increase FILES and buffers (a lot); increase FCBS to 16,16.


