home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / TEXT / N7TIPS.ZIP / 1014301.TXT < prev    next >
Text File  |  1994-03-04  |  22KB  |  525 lines

  1.  
  2.  
  3.               NOVELL TECHNICAL INFORMATION DOCUMENT
  4.  
  5. TITLE:              Basic Memory Optimization and Troubleshooting
  6. DOCUMENT ID:        014912
  7. DOCUMENT REVISION:  A
  8. DATE:               27FEB94
  9. ALERT STATUS:       Yellow
  10. INFORMATION TYPE:   Issue
  11. README FOR:         NA
  12.  
  13. NOVELL PRODUCT and VERSION:
  14. Novell DOS 7
  15.  
  16. ABSTRACT:
  17.  
  18. This document explains basic memory optimization techniques for
  19. use with the Novell DOS 7 operating system.
  20.  
  21. ------------------------------------------------------------------
  22. DISCLAIMER
  23. THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO
  24. NOVELL.  NOVELL MAKES EVERY EFFORT WITHIN ITS MEANS TO VERIFY
  25. THIS INFORMATION.  HOWEVER, THE INFORMATION PROVIDED IN THIS
  26. DOCUMENT IS FOR YOUR INFORMATION ONLY.  NOVELL MAKES NO EXPLICIT
  27. OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION.
  28. ------------------------------------------------------------------
  29.  
  30. ISSUE
  31.  
  32.      Because the Novell DOS 7 operating system has been designed
  33.      to work with all IBM-compatible personal computers and
  34.      software applications there is no single, perfect, memory
  35.      setup that will optimize memory use for all situations.
  36.  
  37.      Memory optimization will depend on both your particular
  38.      hardware setup and the software applications you will be
  39.      using.
  40.  
  41.      With some trial-and-error system fine tuning, you can
  42.      optimize Novell DOS 7 memory management to meet your
  43.      particular needs.
  44.  
  45.      Following are techniques and suggestions that will help
  46.      optimize your computer's software setup.
  47.  
  48.  
  49.      CHANGING THE ORDER OF MEMORY ALLOCATION
  50.  
  51.      The first step in optimizing the system memory can be as
  52.      simple as rearranging the order in which memory blocks are
  53.      assigned by the CONFIG.SYS and AUTOEXEC.BAT files.
  54.  
  55.      The general rule is to use upper memory and high memory as
  56.      much as possible to free conventional memory for
  57.      applications.
  58.  
  59.      If there are any add-on boards that use RAM, make sure that
  60.      they are configured so that their RAM is allocated from the
  61.      beginning or the end of upper memory.  For example, place a
  62.      network board immediately above the video RAM area instead
  63.      of in the middle of upper memory.
  64.  
  65.      Device drivers and TSRs can then be loaded into upper
  66.      memory.  For best memory allocation, those drivers and TSRs
  67.      that occupy the largest blocks of memory should be loaded
  68.      first and contiguously.
  69.  
  70.      For example, if there are three device drivers and two TSR
  71.      programs that need to be loaded, they should be loaded in
  72.      descending order in your CONFIG.SYS file, largest to
  73.      smallest.
  74.  
  75.      The documentation for the drivers and TSRs should indicate
  76.      the amount of RAM they require.  If the documentation does
  77.      not indicate their size, this can be determined by loading
  78.      the driver or TSR and then using the MEM /U or /B command to
  79.      see a report of memory use.  DOSBOOK MEM provides a full
  80.      description of the MEM command.
  81.  
  82.  
  83.      EXPANDING FILES
  84.  
  85.      If, after determining the size of the drivers and TSRs and
  86.      loading them into high memory, a driver or program fails to
  87.      run properly or produces an out of memory error message, the
  88.      problem may be that the driver or TSR is expanding itself in
  89.      RAM.  Some device drivers and TSRs occupy a minimal amount
  90.      of RAM after they are loaded into memory; however, while
  91.      initializing, they might expand and take up considerably
  92.      more RAM than they will ultimately need.
  93.  
  94.      Another method of verifying a program's true RAM size is to
  95.      load it into conventional memory, activate the program, then
  96.      run the MEM /AP or MEM /U command to see the actual amount
  97.      of RAM the program occupies.
  98.  
  99.      If the program or driver expands itself in RAM and you want
  100.      to load it into upper memory, you will have to allow
  101.      sufficient upper RAM to accommodate the initialization size
  102.      of the program.  Using some trial-and-error methods to
  103.      determine this size might be necessary.
  104.  
  105.      EXAMPLE:  Assume the following Device Drivers and TSRs are
  106.                to be loaded:
  107.  
  108.                Driver #1       =  13 KB of RAM
  109.                Driver #2       =  10 KB of RAM
  110.                Driver #3       =  16 KB of RAM
  111.                TSR #1          =   4 KB of RAM
  112.                TSR #2          =   6 KB of RAM
  113.  
  114.                Using the HIDEVICE, DEVICEHIGH or HIINSTALL
  115.                commands, enter these lines in the CONFIG.SYS
  116.                file:
  117.  
  118.                HIDEVICE = C:\DRIVER#3.SYS ; which uses 16 KB RAM
  119.                HIDEVICE = C:\DRIVER#1.SYS ; which uses 13 KB RAM
  120.                HIDEVICE = C:\DRIVER#2.SYS ; which uses 10 KB RAM
  121.                HIINSTALL = TSR#2          ; which uses  6 KB RAM
  122.                HIINSTALL = TSR#1          ; which uses  4 KB RAM
  123.  
  124.  
  125.      NOTE:     Exceptions to loading TSRs and drivers in the
  126.                largest-first order described in this example may
  127.                exist.  Some device drivers must be loaded in a
  128.                specific order.  Read the manufacturer's
  129.                documentation carefully before installing any
  130.                driver.
  131.  
  132.      In this example, the two TSRs can be loaded with LOADHIGH or
  133.      LH command in the AUTOEXEC.BAT file.  For a discussion of
  134.      the HIINSTALL, DEVICEHIGH, and LOADHIGH commands, refer to
  135.      DOSBOOK.
  136.  
  137.  
  138.      LIM PAGE FRAME
  139.  
  140.      Some applications run better with the availability of LIM
  141.      memory (sometimes called EMS or expanded memory).  The
  142.      documentation for each of your applications will indicate if
  143.      LIM memory is required.
  144.  
  145.      If the application does not require LIM memory, make sure
  146.      that no LIM page frame is defined.  This will save 64 KB of
  147.      upper memory. In the EMM386.EXE line of your CONFIG.SYS
  148.      file, disable the page frame with the switch /FRAME=NONE. 
  149.      If you are using HIMEM.SYS on a machine with a LIM 4.0
  150.      memory card, specify /CHIPSET=AUTO.
  151.  
  152.  
  153.      AFTER INSTALLING NOVELL DOS 7
  154.  
  155.      Some problems that may you may run across after installing
  156.      the Novell DOS 7 memory drivers include the following:
  157.  
  158.      1.   Insufficient conventional memory to load a particular
  159.           driver or program.
  160.  
  161.      2.   LOADHIGH, HIINSTALL, or DEVICEHIGH features do not seem
  162.           to operate correctly.
  163.  
  164.      3.   Computer lock-ups.
  165.  
  166.      4.   Upper memory conflicts.
  167.  
  168.      5.   Expanded memory problems.
  169.  
  170.      6.   Video problems.
  171.  
  172.      7.   Error message: "Packed file is corrupt."
  173.  
  174.      Each of these problems and the techniques to correct them
  175.      are described in the following list.  Specific information
  176.      on how to test and eliminate the problems are found in
  177.      DOSBOOK under the TROUBLESHOOTING subject.
  178.  
  179.      1.   Insufficient Conventional Memory
  180.  
  181.           After using the Novell DOS 7 memory management system
  182.           to increase conventional memory, a problem due to
  183.           insufficient memory should not exist.  However, if a
  184.           large number of device drivers or TSRs are in use, this
  185.           problem may still occur.
  186.  
  187.           In case an earlier command or batch file executed
  188.           earlier disabled low memory, try using the MEMMAX +L
  189.           command.  Finally, if the application does not use the
  190.           graphics display area, try the /V switch of the Novell
  191.           DOS 7 memory manager followed by MEMMAX +V before
  192.           loading the application.
  193.  
  194.      2.   LOADHIGH, HIINSTALL, or DEVICEHIGH Considerations
  195.  
  196.           Each of these commands requires the availability of
  197.           UMBs (Upper Memory Blocks).  Verify that the UMBs are
  198.           available by using the Novell DOS 7 MEM /B  or MEM /U
  199.           command to see a report of the memory usage.  Available
  200.           UMBs will be marked as FREE under the TYPE column in
  201.           the MEM listing.
  202.  
  203.           The LOADHIGH, HIINSTALL, and DEVICEHIGH commands are
  204.           required before the installation of the EMM386.EXE or
  205.           HIMEM.SYS driver.  If the MEM report shows that upper
  206.           memory is not being used, check the CONFIG.SYS to make
  207.           sure the driver has been properly installed and that
  208.           the option switches have been entered correctly.
  209.  
  210.           If they are set, pay particular attention to the
  211.           /FRAME, /AUTOSCAN, /INCLUDE, and /EXCLUDE switches to
  212.           ensure that any upper memory addresses specified by
  213.           these switches have been correctly set (a common error
  214.           is using the letter "O" instead of the number zero). 
  215.           If you do not require the use of expanded memory, set
  216.           the /FRAME switch to /FRAME=NONE.
  217.  
  218.           The LOADHIGH command must be invoked before using the
  219.           MEMMAX -U command (which disables upper memory).  Use
  220.           the MEMMAX +U command to reenable upper memory, if
  221.           necessary.
  222.  
  223.           If sufficient upper memory appears to be available but
  224.           LOADHIGH, HIINSTALL, or DEVICEHIGH fails to put a
  225.           particular TSR or driver into upper memory, the device
  226.           driver or TSR program may have expanded when it
  227.           initialized, and it took up considerably more RAM than
  228.           it ultimately needs.
  229.  
  230.      3.   Computer Will Not Boot or It Locks
  231.  
  232.           Reboot the computer with a bootable floppy disk in the
  233.           A: drive.  Edit the CONFIG.SYS and AUTOEXEC.BAT files
  234.           to turn off and isolate those lines in the files that
  235.           could be causing the problem.
  236.  
  237.           The most probable cause is that the Novell DOS 7 memory
  238.           manager has moved something into a region of upper
  239.           memory required by a hardware device driver.  Use the
  240.           /EXCLUDE switch to remedy the problem.
  241.  
  242.           If a hardware device is not causing the conflict and
  243.           the lockup occurs with a particular program, this
  244.           program may not be able to distinguish when upper or
  245.           low memory is available.  Try using the command MEMMAX
  246.           -U or MEMMAX -L before loading the program.
  247.  
  248.  
  249.      4.   Upper Memory Conflicts
  250.  
  251.           Some typical symptoms of upper memory conflict include
  252.           the following:
  253.           A.  Inability to log onto networks
  254.           B.  Inability to access hard or floppy disk drives
  255.           C.  Error message, such as "card not found"
  256.  
  257.           The computer or its accessories may be using upper
  258.           memory addresses that are also being accessed by the
  259.           Novell DOS 7 memory manager.
  260.  
  261.           To prevent this, exclude EMM386.EXE or HIMEM.SYS access
  262.           to the upper memory address range that is causing the
  263.           conflict.  The following recommendations apply to the
  264.           EMM386.EXE driver for 386, 486 and Pentium computers,
  265.           or the HIMEM.SYS driver on 286 computers with shadow
  266.           RAM.
  267.  
  268.           A good starting place to check for upper memory usage
  269.           is the documentation for any accessory boards or
  270.           drivers that you have installed.  If upper memory is
  271.           required, it is usually indicated in the documentation.
  272.  
  273.           If you encounter such problems and suspect that upper
  274.           memory conflicts are the cause, first insert REM at the
  275.           beginning of the memory manager line in the CONFIG.SYS
  276.           file.  If the problem disappears, you know that the
  277.           memory driver is part of the conflict and you can begin
  278.           to look at changing switches to correct the problem. 
  279.           If the problem recurs, change the /R=AUTO setting to
  280.           /R=NONE, save the CONFIG.SYS file, and reboot the
  281.           computer to retest.
  282.  
  283.           A.   Network Hardware Interfacing
  284.  
  285.                It is common for network hardware to use areas of
  286.                upper memory and thus conflict with Novell DOS 7
  287.                allocations of that memory.  If this occurs, you
  288.                may be unable to log on to the network or random
  289.                lockups could occur.
  290.      
  291.                Another possible cause of network problems is that
  292.                the network driver is designed for use with MS-DOS
  293.                versions other than version 6.0.  Network drivers
  294.                designed for use with MS-DOS versions 3.0 and 4.0+
  295.                may not be appropriate because Novell DOS 7
  296.                operating system reports version 6.0.
  297.  
  298.           B.   Inability To Access Hard or Floppy Disk Drives
  299.  
  300.                If you have installed NWCACHE and have enabled the
  301.                /D+ switch, the disk controller must be 100
  302.                percent IBM compatible.  Reset the /D+ switch to
  303.                /D- (the /D# switch works on some controllers) to
  304.                turn off NWCACHE advanced caching for the floppy
  305.                diskette drives (advanced caching for the hard
  306.                disk remains in effect).
  307.  
  308.                The Novell DOS 7 operating system supports virtual
  309.                DMA and bus master controllers.  Any problem with
  310.  
  311.                SCSI drives is probably caused by a memory
  312.                conflict.
  313.  
  314.      5.   Expanded (EMS) Memory Problems
  315.  
  316.           If a program that requires EMS memory reports that no
  317.           EMS is available or locks up when executed, the problem
  318.           could be caused from an application that assumes that
  319.           the LIM page frame starts at a specific address.
  320.  
  321.           Remedy this problem by ensuring that the LIM page frame
  322.           defined in the application's SETUP program or
  323.           documentation matches the settings in EMM386.EXE or
  324.           EMMXMA.SYS file.  The /FRAME= switch defines the start
  325.           of the LIM page frame.
  326.  
  327.           Another cause of insufficient LIM memory occurs if you
  328.           are using the Novell DOS 7 Task Manager in expanded
  329.           memory and too many tasks have been loaded.  Unload a
  330.           few of the tasks and restart the program.
  331.  
  332.      6.   Viedo Problems
  333.  
  334.           If you experience problems with the video display after
  335.           installing Novell DOS 7 drivers, a possible cause is
  336.           that the video adapter is trying to use some of the
  337.           upper memory addresses being allocated by EMM386.EXE or
  338.           HIMEM.SYS.
  339.  
  340.           A quick way to determine if the current memory setup is
  341.           causing a conflict with a video (or other) board is to
  342.           disable the entire memory driver line in the CONFIG.SYS
  343.           file by using the REM command or booting with the F8
  344.           function key.  If the problem does not recur with the
  345.           memory driver disabled, the cause of the problem is
  346.           probably an upper memory conflict.
  347.  
  348.           Use the EMM386.EXE or HIMEM.SYS /VIDEO option to
  349.           reserve graphics memory addresses normally occupied by
  350.           video display adapters.  If the /VIDEO option is set
  351.           and the video corruption is occurring with a graphics
  352.           program, be sure that the MEMMAX -V switch is
  353.           operative.
  354.  
  355.           When only text displays are required, the MEMMAX +V
  356.           switch can borrow some of the graphics memory areas and
  357.           add it to conventional memory, providing more space for
  358.           text applications.   However, if an application
  359.           requires graphical displays, you must be sure this
  360.           memory area is available to video by issuing the MEMMAX
  361.           -V command.
  362.  
  363.           If the video display is corrupted only during use with
  364.           the Novell DOS 7 Task Manager, refer to DOSBOOK.
  365.  
  366.  
  367.      7.   Error Message: "PACKED FILE IS CORRUPT."
  368.  
  369.           This error can occur when the first 64 KB of
  370.           conventional memory (called low memory) have been made
  371.           available by the Novell DOS 7 memory manager. 
  372.  
  373.           Normally, the operating system occupies this entire
  374.           area.
  375.  
  376.           Some applications use packing utilities that become
  377.           unable to process commands when run in low memory.  If
  378.           this happens, the following message appears:  "Packed
  379.           file is corrupt."
  380.  
  381.           For an easy workaround, use the MEMMAX -L command to
  382.           disable low memory before running the application. 
  383.           After exiting the application, use MEMMAX +L to enable
  384.           the low memory area again.
  385.  
  386.           This problem can occur with other memory managers,
  387.           including QEMM386.  The application vendor may be able
  388.           to supply you with an updated application that does not
  389.           exhibit this problem.
  390.  
  391.           You can also use the /EXCLUDE switch to exclude an area
  392.           of upper memory that the /AUTOSCAN feature detects as
  393.           being available but is in use by another device, such
  394.           as a network board.
  395.  
  396.  
  397.      ISOLATING THE PROBLEM USING "REM"
  398.  
  399.      Before experimenting with the CONFIG.SYS and AUTOEXEC.BAT
  400.      files, create a bootable floppy disk containing the
  401.      unedited, original versions of CONFIG.SYS and AUTOEXEC.BAT
  402.      files.  With this setup if there is the need to reboot the
  403.      computer from the A: drive,  the most recent configuration
  404.      is available.  The original CONFIG.SYS and AUTOEXEC.BAT
  405.      files could then be copied back to the boot disk.
  406.  
  407.      After turning off the suspect lines with a REM statement,
  408.      reboot the computer to retest the driver and application
  409.      with which you first encountered the memory problem.  If the
  410.      system runs correctly, reedit the CONFIG.SYS or AUTOEXEC.BAT
  411.      file and remove the REM command from one line, then reboot,
  412.      and reload the application.
  413.  
  414.      Continue this process until you again come across the memory
  415.      problem.  When it recurs, you will have isolated the line in
  416.      the CONFIG.SYS or AUTOEXEC.BAT file that is causing the
  417.      memory conflict.  You can now take action to resolve the
  418.      conflict.
  419.  
  420.      EXAMPLE:  To disable the line DEVICE = C:\NWDOS\EMM386.EXE
  421.                /FRAME=AUTO add the REM comment to the beginning
  422.                of the line:
  423.  
  424.                REM DEVICE = C:\NWDOS\EMM386.EXE /FRAME=AUTO
  425.  
  426.      If a line is not causing the problem, it can be reactivated
  427.      by removing the REM statement.
  428.  
  429.  
  430.      USING ?
  431.  
  432.      You can also use the Novell DOS 7 conditional "?" statement
  433.      or F8 function key to activate or deactivate CONFIG.SYS and
  434.  
  435.      AUTOEXEC.BAT commands.  If you use this option, make note of
  436.      whether you answered "yes" or "no" to loading each line.
  437.  
  438.  
  439.      USING THE /EXCLUDE OPTION
  440.  
  441.      If the hardware documentation does not specify a memory
  442.      range to be excluded, you can use the /EXCLUDE option to
  443.      determine whether an upper memory conflict exists.  This
  444.      option is used to systematically exclude sections of upper
  445.      memory from being used by EMM386.EXE.
  446.  
  447.      For example, use this method to exclude the top half of the
  448.      upper memory range first, reboot the computer and test the
  449.      problem.  Then, if the problem recurs, change the /EXCLUDE
  450.      setting to exclude the lower half of upper memory and reboot
  451.      to retest.
  452.  
  453.      After discovering the half of upper memory in which the
  454.      conflict resides, repeat the process by dividing that memory
  455.      range in half.  You can use this technique to break down the
  456.      entire upper memory range, half-by-half, until you pinpoint
  457.      the area of conflict.
  458.  
  459.      You must use the hexadecimal notation of the memory address
  460.      with the /EXCLUDE switch.  The following brief explanation
  461.      is provided for those unfamiliar with using the hexadecimal
  462.      system.
  463.  
  464.  
  465.      HEXADECIMAL ADDRESSES
  466.  
  467.      The 384 KB range of upper memory resides between the
  468.      hexadecimal memory addresses of A000 and FFFF.  The upper
  469.      half of this range lies between the addresses D000 and FFFF;
  470.      the lower half lies between A000 and CFFF.  Because A000 to
  471.      BFFF is typically reserved for video display, you will
  472.      normally work only with addresses C000 to FFFF.
  473.  
  474.      To exclude the lower half of the C000 to FFFF range, enter
  475.      the following /EXCLUDE command in the EMM386.SYS or
  476.      HIDOS.SYS line in the CONFIG.SYS file:
  477.  
  478.           /E=C000-DFFF
  479.  
  480.      Reboot the computer to test the exclusion.  If the problem
  481.      persists, edit the /EXCLUDE switch to exclude the other half
  482.      of the C000 to FFFF range by entering the following in the
  483.      CONFIG.SYS file:
  484.  
  485.           /E=E000-FFFF
  486.  
  487.      Continue excluding smaller and smaller range of memory until
  488.      you have found the smallest possible exclusion that still
  489.      permits proper functioning.
  490.  
  491.      NOTE:     The first address in each range of memory
  492.                (EXCLUDE, INCLUDE, and so forth) must end in "00"
  493.                and the second must end in "FF."  You can also
  494.                exclude multiple memory ranges with the /EXCLUDE
  495.                switch by separating the ranges with a comma as
  496.  
  497.                shown in the following example:
  498.  
  499.                Example:  /E=D000-D7FF,DA00-DBFF
  500.  
  501.      The following chart shows how this process works and shows
  502.      the memory address for the 64 KB range in the "D" segment of
  503.      upper memory.
  504.  
  505.      D000-DFFF = 64K = D000-D7FF = 32K + D800-DFFF = 32K = 64K
  506.      TOTAL
  507.      D000-D7FF = 32K = D000-D3FF = 16K + D400-D7FF = 16K = 32K
  508.      TOTAL
  509.      D800-DFFF = 32K = D800-DBFF = 16K + DC00-DFFF = 16K = 32K
  510.      TOTAL
  511.      D000-D1FF = 8K + D200-D3FF = 8K = 16K TOTAL
  512.      D400-D5FF = 8K + D600-D7FF = 8K = 16K TOTAL
  513.      D800-D9FF = 8K + DA00-DBFF = 8K = 16K TOTAL
  514.      DC00-DDFF = 8K + DE00-DFFF = 8K = 16K TOTAL
  515.  
  516.      (The first "D" in each hex address above can be replaced
  517.      with C, E, or F when working with those segments.)
  518.  
  519.      After you find the conflicting range of upper memory,
  520.      permanently exclude it from being used by EMM386.EXE or
  521.      HIMEM.SYS by using the /EXCLUDE switch.
  522.  
  523.      ADDITIONAL REFERENCES:   DOSBOOK COMMANDS, CONTENTS,
  524.                               CONFIGURING, or INDEX
  525.