Running GroupWise Agents in Protected Memory

(Last modified: 31Aug1999)

This document (2953603) is provided subject to the disclaimer at the end of this document.

Issue

Why:
With NetWare 5 comes a new protected memory feature. Portions of cache memory can be set aside as protected address spaces (sometimes called user address spaces or ring 3). A protected address space is a portion of cache memory that has carefully controlled communication with the server operating system.

Because any modules loaded into a protected address space can't corrupt the operating system or cause the server to ABEND, the protected address space provides a safe place to run applications such as the GroupWise Agents. The address space can also configured with Restart functionality. Which means that if the protected space should ABEND, the system closes the space, cleans up its resources, restarts the space, and reloads the module/modules into it.

It is true that there is a performance cost for N.M. applications that run in protected address spaces. Memory protection on NetWare servers in not something that we will get for free, there is a performance cost for it. Programs run around 5-10% slower than if the program were to run in kernel space.

Many of our customers have as their number one requirement for a server to be stable and fault tolerant. For these customers the performance cost of memory protection is worth every clock cycle.

How:
LOAD [protection options] [path]loadable_module [nlm options]

where protected options are:
        PROTECTED (load a module in a protected address space)
        PROTECT (load all modules in ncf file into protected memory)
        RESTART (flag address space as restartable)
        NO RESTART (opposite of restart)
        ADDRESS SPACE= AS_NAME (load this module in the address space specified)
        KILL (tells loader that it should kill an entire address space; used with unload command)

The PROTECTED option is not necessary if either RESTART or an ADDRESS SPACE name are supplied on the command line. When an address space if flagged restartable the system will shut down the space if a module in that space abends and then restart the space automatically, and reload the module/modules into it.

To prevent the server from restarting a memory space that continues to fault, use the Memory Protection No Restart Interval parameter. (MONITOR > Available Options > Server Parameters > Memory.) See Memory Parameters for more information.

-- Restart options:

PROTECTION RESTART space_name
Adds restart functionality to an existing address space.
                                                             
PROTECTION RESTART grpwise
Adds restart functionality to ADDRESS SPACE "grpwise"
 
PROTECTION NO RESTART space_name
Removes restart functionality from an existing address space.
                                                             
PROTECTION NO RESTART grpwise
Removes restart functionality from ADDRESS SPACE "grpwise"

To display each address space and the applications running in that address space, use the
PROTECTION console command. For more information, type "HELP PROTECTION", which will display the following:

     PROTECTION [[[NO] RESTART] address space name]
      Displays information about the protected memory address spaces
      in the system. Also provides a means of enabling and disabling
      the restart feature for a protected address space.
      Example: protection
      Example: protection ADDRESS_SPACE1
      Example: protection restart ADDRESS_SPACE1
      Example: protection no restart ADDRESS_SPACE1,

-- Loading single modules into Protected Address Space:

[LOAD] protected module_name
(Loads one module into a new protected space and names the address space ADDRESS_SPACEn, where n is a number)

Example:
[LOAD] protected gwpoa @startup.poa
(Loads gwpoa into a new protected space and names the address space ADDRESS_SPACE1)

Example:
[LOAD] address space = agents gwpoa @startup.poa
(gwpoa is loaded in protected memory with address space called "agents")

[LOAD] RESTART module_name
(Loads one module into a new protected space with "restart" functionality and names the space ADDRESS_SPACEn)

Example:
RESTART gwpoa.nlm @startup.poa
(Loads gwpoa.nlm into a new protected space with "restart" functionality and names the space ADDRESS_SPACEn)

[LOAD] RESTART address space = agents module_name
(Loads one module into a new protected space with "restart" functionality and names the space agents)

Example:
[LOAD] RESTART address space = agents gwpoa.nlm @startup.poa
(Loads gwpoa.nlm into a new protected space with "restart" functionality and names the space agents)

* You can also use this command when you want to load more than one module into the same protected space. Repeat the command for each module you want to load into the space.

-- Loading modules from an .NCF file into a protected address space:
 
To load multiple modules at once using an .NCF file into a protected address space. The address space has the same name as the .ncf file

protect <NCF file name>

Example: protect Grpwise
(Creates an address space called grpwise and executes grpwise.ncf to load modules into the protected space)

Example: RESTART grpwise.ncf
Loads the modules in the grpwise.ncf file into the grpwise.ncf address space and also adds restart functionality to the address space

-- Unloading modules from protected address space:
     
To unload the gwpoa modules from the address space "agents", the following command may be issued:
        unload address space = agents gwpoa

To unload all the modules from a specific address space (taking the example that we used "load address space = agents gwpoa), the following command may be issued:

unload address space = agents

     To unload every module in the address space, and if it cannot do it gracefully, to just kill off the process, you can issue the following command. Note that the process can cause an abend on the server if a module cannot or will not release system resources.

Unload Kill address space= ADDRESS_SPACEn

Example:
unload kill address space = agents

For more info:
- TID 2940986 NetWare 5 Core OS/Memory FAQ
- There are a number of new console commands available in Netware 5. You can refer to
     TID2942298 (New NetWare 5 Server Console Commands) for more information.

document

Document Title: Running GroupWise Agents in Protected Memory
Document ID: 2953603
Creation Date: 27Aug1999
Modified Date: 31Aug1999
Revision: 2
Novell Product Class:Groupware
NetWare

disclaimer

The Origin of this information may be internal or external to Novell. Novell makes all reasonable efforts to verify this information. However, the information provided in this document is for your information only. Novell makes no explicit or implied claims to the validity of this information.
Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information.