The size of the cache buffer pool is dynamic and determined by the amount of memory left over after the other pools have been allocated. As more buffers are allocated for NLMs and other system resources, this reduces the size of the cache buffers pool. Both the movable and non-movable pools return memory to the cache buffer pool when it is no longer needed.

Checking the Allocation of Memory to Each Memory Pool: You can use the MONITOR.NLM utility to view the allocation of system memory by pool. This helps you to understand how the server system memory is being used by the operating system to service the various requests. This is a dynamic process and will change as the network load on the server changes.

It is also important to monitor the pools as you are tuning other parameters. For example, when adjusting the number of packet receive buffers, the total cache buffers will be reduced as a percentage of the total system memory. Using the MONITOR.NLM utility can help you determine the effect of changing the number and size of the buffers. It may be necessary to add more memory to the server if the performance tuning results in the depletion of the total cache buffer memory available to efficiently service file requests.

Memory Fragmentation: As previously discussed, in NetWare 3.12, the cache buffer pool gives up memory to other memory pools such as the cache movable pool, the cache non-movable pool, and the permanent memory pool.

The cache movable and cache non-movable pools return system memory to the cache buffers pool, but anything allocated to the permanent memory pool does not return memory until you bring down the server.

The cache movable pool can be moved around so that contiguous blocks are always returned to the file cache buffer pool. This keeps them from becoming fragmented. This is not true of the cache non-movable memory pool which frees memory in non-contiguous chunks. This causes fragmentation and eventually degrades network performance.

If cache non-movable memory is allocated and de-allocated frequently due to the loading and unloading of NLMs, it is possible to end up with RAM which is so fragmented that there may not be enough free contiguous RAM to load additional NLMs. The file server will report that there is not enough memory to load the NLM and the server will have to be downed so the memory can reallocate and clear the fragmentation.

5.3.3.2 NetWare 4.1 System Memory Pools

NetWare 4.1 system memory architecture is quite different than V3.12. In NetWare 4.1, system memory is allocated to a single global memory pool of 4KB pages that NetWare can allocate to different processes. Each NetWare Loadable Module (NLM) has allocated memory pages that are returned to the global pool when they are not used. When an NLM initially requests memory allocation, it receives a specific set of memory pages called a node and uses that node for all subsequent calls. Because the NLM uses the same node repeatedly during the time that the NLM is loaded, allocation becomes more efficient and fragmentation is reduced.

NetWare 4.1 also uses more cache than earlier versions of NetWare. Using more cache enhances operating system performance but drives up the system memory requirements.

186NetWare Integration Guide

Page 198
Image 198
IBM SG24-4576-00 manual NetWare 4.1 System Memory Pools