Understanding Memory through the Novell Remote Manager Utility for NetWare 6.5 SP3
Novell Cool Solutions: Feature
By Edward Liebing
Digg This -
Posted: 7 Apr 2005
- System Administrators who have been having problems with memory on earlier versions of NetWare and their Support Packs. HOWEVER, the explanation here applies to NetWare 6.5 SP3. There are other documents that deal with memory management for earlier versions of NetWare.
- Anyone who wants to better understand NetWare 6.5 SP3's memory architecture and what it has to offer.
In NetWare prior to NetWare 5, the Traditional File System (TFS) was also NetWare's memory manager. The TFS handled all memory allocated to file cache as well as all NLMs requesting memory allocation on the server. All memory requests were allocated from one physical memory pool, the File System Cache Pool (also known as the file cache buffers). And when you were low on file cache buffers, you simply added more memory to alleviate the problem.
But memory changed a lot in NetWare 5. For instance, Virtual Memory was introduced, as was a new memory manager called the NetWare Memory Manager. Another big change that occurred in NetWare 5.0 (and has been there ever since) was the introduction of three physical memory pools.
Because of these changes, memory management is not well understood in its present architectural model. And with the move of making NSS the default file system, the growing number of servers with 4 GB of physical memory, the ever-growing need of memory for NetWare services in each new Support Pack, and a bunch of other factors, many administrators are having memory issues. Because of the lack of memory information, system administrators are trying to place NetWare 4 memory solutions on NetWare 6 and above scenarios, with limited success.
Thus memory management has once again stepped to the forefront as an important issue. This article looks at the changes to memory in NetWare 6.5 Support Pack 3 as seen through the eyes of the Novell Remote Manager (NRM) utility. In particular, we will look at all of the entries that have changed on NRM's initial View Memory Config page.
We will then spend some time on the graph that appears at the bottom of the View Memory Config page. Finally, we'll discuss some of the things to look for in a NetWare 6.5 Support Pack 3 server as pertaining to memory.
some memory terms to help you get started
Memory is not an easy thing to understand and often the simplest concepts take some getting used to. So to help you better understand how memory works in NetWare, here are some of the more global memory terms that will be referred to and explained over and again throughout the article. It is hoped that each explanation will flesh out your understanding of NetWare's memory architecture.
To assist those who need to see what we're talking about, here's a figure from the Novell Remote Manager that shows the different elements we'll be describing.
Figure 1: A Graphical Representation of the Memory Model as Seen Through the Novell Remote Manager Utility.
L==P. This term means "Logical equals Physical" and is a type of memory designation. In terms of memory, L==P means that the logical address of the memory location must be the same as the physical address. In Figure 1, it's shown as the black block in the Memory Map bar.
L!=P. This term means "Logical not equal to Physical" and is also a type of memory. In this context L!=P means that a logical memory address does not have to match the physical address (while it can match, it doesn't have to). Practically all NLM memory requests are for this type of memory. In Figure 1, it's the blue block in the Memory Map bar.
Physical Memory. The actual physical memory that the NetWare server has in it. In Figure 1, it's shown as the Physical Memory bar.
Logical Memory Addressing. The address space used to map in applications, services and utilities into the NetWare Operating System. In Figure 1, it's shown as the Logical Space bar.
Memory Pools. A memory pool is a chunk or a bucket or a stash of physical memory that the operating system uses to fulfill memory allocation requests. Depending on the type of memory asked for (L==P or L!=P), memory can be granted from different memory pools.
NetWare memory architecture uses three physical memory pools: the Virtual Memory (VM) Cache Pool, the File Cache Pool, and the NSS Cache Pool. The NetWare Memory Manager uses the Virtual Memory Cache Pool and the File Cache Pool to manage the actual physical memory pages (each memory page is 4 K in size). When necessary, the NetWare Memory Manager will also ask NSS for the memory it stored in its NSS Cache Pool to help fulfill memory allocation requests. (NSS stores the same type of memory (L==P) as the File Cache Pool.)
The Virtual Memory Cache pool manages the physical memory pages that back the address ranges designated as L!=P (as well as L==P). The Virtual Memory Cache Pool is by far the most used pool and the main cache pool that the Memory Manager uses for practically all programs and utilities that load on the server. In Figure 1, it's shown as the blue block in the Physical Memory bar.
The File Cache pool is also a bucket of physical memory pages, but these physical pages must match the logical address mapping and is, therefore, designated as Logical equals Physical (L==P). If the logical address mapping is contiguous (back-to-back), then the physical address mapping must be identical to it. In Figure 1, it's shown as the gold block in the Physical Memory bar.
Logical Memory Management. To manage the logistics of memory allocation, NetWare uses two logical memory spaces or ranges located in Ring 0 (where the NetWare kernel resides): the L!=P Address Space and the L==P Address Space. The L!=P Address Space and the L==P Address Space are divided from one another by the File Cache Maximum Size line; together the address spaces make up the Kernel Address Space (Ring 0). The top of the L!=P Address Space is defined by the bottom of the User Address Space (the start of Ring 3).
So for logical address mappings, NetWare can use most of the 4GB memory space that the Intel 32-bit architecture affords, minus the User Address Space (also known as Ring 3 and is designated as the yellow and purple boxes in the Logical Space bar) and the Reserved Kernel Mapping Space (this is the grey box that sits on the very top of logical addresses). In Figure 1, the L!=P Address Space is shown as the blue and green blocks, while the L==P Address Space is shown as the gold block in the Logical Space bar.
The L!=P and the L==P Address Space perform different functions than the VM Cache and the File Cache pools. The NetWare Memory Manager uses the L!=P and L==P address ranges to get blocks of contiguous addresses to fulfill applications/services memory requests, while the Virtual Cache and File Cache pools are backing those logical address mappings with actual physical memory pages.
File Cache Maximum Size Line. This is a line drawn within the NetWare memory architecture to separate the L==P address space from the L!=P address space. The hidden SET parameter "File Cache Maximum Size = <bytes>" sets the maximum value (not necessarily the current value) of the File Cache Pool (as well as the L==P address space), or the largest size the File Cache Pool can become. (The NetWare Memory Manager controls the current value of the FCMS line.) In Figure 1, the File Cache Maximum Size line separates the black block and the blue block in the Memory Map bar.
You can set the location of the File Cache Maximum Size line through the File Cache Maximum Size = SET parameter that comes in NetWare 6.0 Support Pack 4 and NetWare 6.5 Support Pack 1 and above. With NetWare 6.5 Support Pack 3, this line is automatically adjusted by the NetWare memory system as necessary (and you don't have to do a thing).
User Address Space. This area is where NetWare maps programs that are run in protected memory, or what is termed Ring 3. The size of this area represents the largest address size (or space or range) that a SINGLE protected memory program can have for execution; the larger the User Address Space, the larger the amount of space that all protected memory programs can use. Each Ring 3 program uses the same address range, and memory can be swapped to disk via a swap file for use as "virtual memory" (memory not backed by physical RAM in the system). In Figure 1, it's shown as the yellow block in the Memory Map bar and as the yellow and purple blocks in the Logical Space bar..
It's important to have a large enough address space for Ring 3 applications, for some applications will look at the address space prior to loading to ensure that it can load properly -- or even load. Still other programs will load in the allotted address space but may not perform properly.
32-bit Processors. NetWare runs on 32-bit Intel-compatible processors, which allow NetWare to address up to 4 GB of memory directly and up to 64 GB of Physical Address Extension (PAE) RAM. (The PAE feature is included in Pentium Pro and above 32-bit Intel processors, and it allows operating systems to address memory using 36 bits instead of just 32 bits, giving the OS access to up to 64 GB of physical RAM.) Even with PAE support, 4 GB is a hard-set limit for the logical mapping space (however, you can get duplicates of the User Address Space, allowing for multiple protected memory programs, each with their own "space" to work in).
Now that your head's spinning from all of these terms, let's push on and view NetWare's memory architecture through the Novell Remote Manager utility.
accessing the novell remote manager utility
The Novell Remote Manager utility in NetWare 6.5 Support Pack 3 has some interesting changes that can help you better manage the memory on NetWare 6.5 servers. The Novell Remote Manager utility comes as part of the NetWare 6.5 OS software and is loaded automatically through the AUTOEXEC.NCF file when you install NetWare 6.5. The server's AUTOEXEC.NCF file loads the following NLMs (these NLMs are used to load the Remote Manager):
NILE.NLM. Novell Secure Socket Services
HTTPSTK.NLM. Novell Small HTTP Interface with a Secure Socket Layer (/SSL) and certificate attached (keyfile: "SSL CertificateIP")
PORTAL.NLM. Novell Remote Manager utility
To access the NRM utility, bring up a NetWare 6.5 server with these three NLMs loaded (which should happen automatically). Then simply go to any workstation running a Firefox, Mozilla, Netscape, or Internet Explorer browser and type in the IP address along with the secure or unsecure socket number (8009 or 8008) of the server running NRM. For example, if your server has an IP address of 18.104.22.168, you would type the following in the Location portion of your browser:
The "s" at the end of "https" gives the internet link a secure connection, while the 8009 designates the SSL port. If this doesn't work, try http: (without the "s" at the end of http) and the 8008 socket designation. For instance, to use an unsecured socket to connect to the server, you could type in the following:
If you are connecting through a non-secure socket of :8008, you will see a security warning similar to the following:
Figure 2: Opening a Valid Security Certificate
Select the type of certificate you wish to invoke (temporary or permanent) and click OK in the Certificate window. The Novell Remote Manager utility's login screen appears, as shown below:
Figure 3: Accessing NRM Through Its Login Screen
To log in to the server running NRM, select Login. For full access to the Novell Remote Manager's management capabilities, you must log in as user Admin, as an Admin equivalent, or as a user with the Supervisor right to the Server object. Then to view the Memory Config page, click on the View Memory Config link under the Manage Server heading on the left-hand side of the initial Novell Remote Manager window.
Nearly all of the memory changes that appear in NRM were made on the initial View Memory Config page. The View Memory Config page is divided into Physical Server Memory and Logical Address Space. Below is the figure showing the changes to the Physical Server Memory screen:
Figure 4: The Physical Server Memory Screen in Support Pack 3
Let's look at each of these entries and what they mean to you as a network administrator.
NLM Memory. The NLM Memory statistic shows you how much memory the NetWare operating system has collectively allocated to the NLMs that are loaded on the server. This includes stacks, data, and code memory.
Two columns are displayed: Actual and Peak Value. The Actual column indicates what is presently being used while the Peak Value shows the most memory that has been allocated to all of the NLMs since the server has been up. Click the NLM Memory link to bring up a list of all the NLMs that are presently loaded on the server and the amount of memory each NLM is using.
File System Cache. The File System Cache shows how much memory is being used by the directory cache buffers in either the traditional or NSS file systems, or both. This is Logical equals Physical (L==P) memory, which means that the logical memory address must match the physical memory address exactly, and this is the case with both the traditional and the NSS file systems. Select the File System Cache link to view the File System Cache Statistics page, which breaks down the information between NSS and the Traditional file system.
In Support Pack 3, File System Cache and Available Cache Memory do not overlap as they did in earlier versions of NRM. This entry in Support Pack 3 displays all memory that is allocated to the File System.
Extended File System Memory. The Extended File System Memory entry shows you how much physical memory the File System is using above 4 GB. The NetWare server whose information we are looking at has 12 GB of memory and 1.7 GB of that memory is being used by the NSS file system.
NetWare runs on 32-bit Intel-compatible processors, which allow NetWare to address up to 4 GB of memory directly per address space and up to 64 GB of Physical Address Extension (PAE) RAM. (The PAE feature is included in Pentium Pro and above 32-bit Intel processors; it allows operating systems to address memory above 4 GB using 36 bits instead of just 32 bits, giving the operating system access to up to 64 GB of physical RAM.) But even with PAE support, the bottom line is 4 GB, which is a hard-set limit for the logical mapping space (this concept is discussed later in this article).
It's also important to remember that not all hardware shows memory the same way -- it all depends on the BIOS the server machine is using. For instance, on a 6 GB machine, memory below the 4 GB mark may not necessarily add up to 4 GB; you may see 3.75 GB of memory in the 32-bit area and 2.25 in the Extended Memory area. Or a 4 GB machine may show 3.75 GB in the 32-bit area and 220 MB in extended memory. It all depends on how the BIOS registers and displays memory access.
Virtual Memory System. The Virtual Memory System entry shows how much physical memory the Virtual Memory System is using. The Virtual Memory System is part of the NetWare Memory Management architecture. The User Address Space is where the operating system maps memory for programs that are run in protected memory or in Protected Mode -- what is termed Ring 3. The Peak Value shown for the Virtual Memory System entry represents the largest amount of logical address space that protected memory programs have used for execution; the Actual number shows the logical address space that is presently being used by these protected memory programs.
Each User Address space can use the same logical address range and the physical memory backing for those programs can be swapped to disk via a swap file for use as virtual memory (memory not backed by physical RAM in the system). To view the health information about the Virtual Memory System, click the Virtual Memory System link.
Extended Virtual Memory System. The Extended Virtual Memory System entry shows you how much physical memory the Virtual Memory System is using above 4 GB. If your server has no physical memory above 4 GB, none will be shown here.
Available Cache Memory. This entry shows how much physical memory that the VM Cache and File Cache Pools presently have available. As explained earlier, the Available Cache Memory count shows the available physical memory in bytes; the NetWare operating system can use this memory to fulfill memory requests.
DOS, Video, Misc. Memory. This entry shows how much memory is being used and is not designated as server memory. As the NetWare server loads, it allocates the initial 2 MB of aligned memory for server initialization, per processor initialization data, and some physical memory mapping in that memory range. DOS, video, and other hardware specifications are placed here. Also, some initial memory is used to set up NetWare memory architecture and physical disk information.
Extended Server Memory In Use. This entry shows the total amount of physical memory greater than 4 GB that is presently in use. You will only see this entry if you are running NRM on a server that has more than 4 GB of memory in it. Again, the PAE feature is included in Pentium Pro and above 32-bit Intel processors; it allows the NetWare operating system to address physical memory using 36 bits instead of just 32 bits, thus giving the NetWare operating system access to up to 64 GB of physical RAM. Applications specifically written to use the PAE specification can access this memory as well, which NSS can do.
Clicking on the Extended Server Memory In Use link brings up the Extended Server Memory Information screen, which has two entries: Total Extended System Memory and Available Extended System Memory.
Total System Memory. This statistic simply tells you how much total memory the server has. Because Support Pack 3 takes out the overlap between the File System Cache entry and the Available Cache Memory entry, the number you see as the total should match the number you would get if you added all of the actual Physical Server Memory columns together.
viewing the logical address space information in NetWare 6.5 support pack 3
The Logical Address Space screen (shown in Figure 5) displays three categories: Space Usage, Actual, and Peak Value. These categories list seven memory statistics: In Use Kernel Space, Available Kernel Space, Fragmented Kernel Space, Reserved for User Spaces, Reserved for OS Data, In Use User Space, and Total Address Space.
Figure 5: The Logical Address Space Screen
The Logical Address Space window shows how 4 GB of logical addresses are designated and is the second element for satisfying memory requests. NetWare uses logical address ranges to "map in" an application or a service that needs to load into the NetWare OS.
For example, when NetWare loads an application or utility as an NLM, NetWare determines as how many physical memory pages (a memory page is 4 KB in size) that the NLM is initially going to need and then it looks for a block of contiguous (lumped together) logical memory addresses to designate where this NLM is running. While not all of the NLM needs to have contiguous address space mapping, NetWare will ensure that those parts that do need contiguous space are so addressed. So it takes both elements to load an NLM: enough physical memory pages to run the NLM and a big enough block of lumped together address spaces those parts of the NLM that needs it. If one of these elements is missing, you will receive memory allocation errors.
The Logical Address Space works from the Intel 32-bit architecture, which gives NetWare 4 GB of logical address space in which to find contiguous blocks large enough to run NLMs. If you look at the Memory Map and the Logical Space bars in Figure 5, you will notice that both are at the 4 GB mark. The Memory Map bar is broken into four pieces: L==P, NLM (L!=P), US (User Address Space), and OS Data (the very top of the model).
NetWare uses three logical memory ranges -- the L!=P Address Space, the L==P Address Space, and the User Address Space to provide logical blocks for memory allocation. In the Logical Address Space window of Figure 5, the Total Address Space also shows 4 GB of logical address space available, even with PAE support, because 4 GB is a processor hard-set limit for the logical mapping space and this amount is not dependent on how much actual physical RAM you have in the server. However, it is limited by the sizes of the User Address Space (Ring 3) and the Reserved Kernel Mapping Space (Reserved for OS Data).
The Actual column lists the actual amount of logical address space used and this is followed by what percent this represents. However, the Peak User Space entry shows the highest amount used (since the last time the server was rebooted). Here's an explanation of the entries that appear under the Logical Address Space heading.
In Use Kernel Space. This entry shows how much of the 4 GB logical address space is presently in use and is mapped to physical address pages inside the Kernel Space (Ring 0). It also includes the L==P mappings that NetWare is reserving for "map backs" (these mappings are below the FCMS line). In the above figure, the server is using about 1.9 GB of its logical address space; the space is mapped to NLMs, file system cache, and so on.
Available Kernel Space. This entry shows how much of the 4 GB logical address space is not in use and is, therefore, available for physical address mapping in Ring 0. The above figure shows that roughly 1.5 GB is available for physical address mapping, which should be plenty adequate for NLM allocation.
Fragmented Kernel Space. When NetWare receives a request for memory from an application, it returns a pointer to a logical memory address. The logical address range the operating system grants is "contiguous" in nature -- if an application requests 380 pages of RAM, NetWare will give the requesting application a pointer to at least 380 pages of back-to-back logical address space that is neither segmented nor found in different locations.
This entry shows how much logical address space is free but is presently divided into sections. While these logical addresses can be used, they are no longer available for large contiguous allocations. This entry is a dynamic number that counts up fragments in the logical memory space. As the number increases, less and less space is available for large contiguous allocations.
The importance of fragmented space depends on the types of applications the server is running and the number of large contiguous blocks of memory the applications need. All servers will have some fragmentation and depending on the applications that are running on the server, you can have as much as 20 to 30% fragmentation. Then as NLMs are unloaded and larger blocks of logical address space are freed up, fragmentation decreases.
And with NetWare 6.5 SP3, NetWare can automatically change the File Cache Maximum Size line to create more L!=P Address Space for NLM memory consumption. This action can initially cause fragmentation in the Kernel Space, but that fragmentation often decreases over time. But it is a number you will want to keep your eye on.
Reserved for User Spaces. This entry shows the logical address range that is reserved by default for NLM and Java programs (such as Apache, Tomcat, iManager, or iFolder) that are running in protected mode, or Ring 3. This is called the User Address Space on the logical mapping model and is the Yellow identifier labeled US in the Memory Map and Logical Space bars in Figure 5. This address space can be reused for each instance of a user space. By default, this space is 684 MB in NetWare 6.0 Support Pack 5 and 992 MB in NetWare 6.5 Support Pack 2 and NetWare 6.5 Support Pack 3.
You can control the size of this space by using the -u switch when loading SERVER.EXE. However, only change it if you need more logical address space for NLMs and NetWare can't create enough logical address space by adjusting the File Cache Maximum Size line on its own. More than likely you will need to make the User Address Space bigger to accommodate the applications and programs that are running there. If this happens, you will see the following message on the server console prompt:
"Server Logical Address Space is running low. Increase the available logical space by restarting the server with the -u <number of bytes> switch."
The best way to find out which number to put after the -u switch is to click on the Tune Logical Address Space link that you see in Figure 5 and use the number shown in the -u example, as shown in Figure 6.
Figure 6: Use the Number You See Following the Server -u Line
With some careful consideration, testing, and planning, you can configure the User Address Space size to accommodate Ring 3 or Ring 0 applications, depending on your server needs.
Reserved for OS Data. The Reserved for OS Data entry shows memory that is actually being used for the NetWare operating system data. This area is called Reserved Kernel Mapping Space on the logical mapping model and represents several categories in the mapping scheme.
This space ranges between 140 MB and 200 MB, depending on the operating system version, the Support Pack revision installed, and the amount of RAM the NetWare operating system has to manage (this space is constantly changing as well). The size of this mapping space also depends on the amount of RAM in the server -- the server needs more page table entries to track more memory which, in turn, expands the page table size (the same is true for hashing tables and other internal kernel structures).
Peak User Space. The number you see here is the high-water mark of how much memory was in use in the User Address Space. By adding 10% on top of that, you can have reasonably safe numbers in controlling the size of the User Address Space if you need to. All of this depends, however, on how much memory programs such as Apache, Tomcat, iManager, and iFolder need to initially load in protected memory (these programs will give you those peak numbers you see in the In Use User Space entry). If you make the User Address Space too small, protected memory programs may not load or run correctly. Again, follow the -u numbers you see in the Tune Logical Address Space link if NetWare prompts you to change the User Address Space.
Total Address Space. As stated before, this entry shows the 4 GB logical address space template, which is independent of how much physical RAM is in the server. All 32-bit operating systems work under the same 4 GB ceiling. The Total Address Space Percent column figure does not add up to 100% because the Peak User Space is a subset of the Reserved for Users Spaces entry. When adding the percentages together, skip the Peak User Space -- then what doesn't match up is simple rounding errors.
Tune Logical Address Space. If you are struggling with memory fragmentation and other memory issues, the Tune Logical Address Space link may be able to help you. The Logical Address Space figure shows how much memory is available in the logical address space and how much of the memory is presently fragmented in the Fragmented Kernel Space entry. If the numbers are significant and you have turned off the auto-tuning feature on a NetWare 6.5 SP3 server, you can click the Tune Logical Address Space link. This link corresponds to using the File Cache Maximum Size SET parameter and controlling User Address Space through the -u parameter. (While NetWare 6.5 SP3's auto-tuning feature will adjust the File Cache Maximum Size line on the fly, it cannot change the User Address Space -- you have to do that manually.)
To put the proposed changes from the Tune Logical Address Space link into effect, click the Change button. You will still need to manually set the server -u parameter because NetWare does not know if your particular server installation follows the default of SERVER.EXE being located in the C:\NWSERVER directory. When you add the -u parameter, be certain you have copied the number down correctly; otherwise, your server may experience high utilization and programs won't load or run in protected memory correctly.
Also, before changing any of NetWare's tuning capabilities, be sure to let the server run for a time and experience peak operations before pressing the link, such as a period of peak activity and running through a back-up cycle. This can't be stressed enough -- tweak at peak, or trouble you seek! NetWare 6.5 SP3's auto-tuning capabilities should take care of most server memory needs (but on 1 GB or less systems, you may just need to add more memory).
which memory entries in nrm are the most important?
The following graph that you see at the bottom of the View Memory Config page is an important memory addition to NRM and gives you an idea of how the logical address space is mapping to the physical memory on this server.
Figure 7: The Memory Graph of Logical and Physical Memory in Support Pack 3
The memory chart provides a dynamic look at logical and physical memory mapping and the server's extended memory. At the bottom of the chart is a legend containing eight identifiers. Let's look at each of the bars and identifiers and explain what the identifiers mean in relation to the bar in which they reside.
The Memory Map, Logical Space and Physical Memory bars are just different views of NetWare's 32-bit memory architecture. If this were a three dimensional model, each of bars would be set on top of one another to show how they define and interact with each other. There would also be more identifiers, for as it is some of the identifiers show different information, depending on which bar they are in.
Memory Map. The Memory Map bar shows how the logical address space is defined on this machine. This is a 32-bit, 4 GB perspective, and the Logical Space bar uses the memory type definitions shown in the Memory Map bar as its starting point for defining logical address spaces.
The black on the bottom of the bar is designated as L=P and shows the size of the area that can be reserved for mapping Logical Equals Physical (L==P) memory. What this means is the logical address must be the same as the physical address, so if the logical address space located at 09000-09800 is to be used, the physical memory at 09000-09800 must also be used -- they must equal to one another. L==P memory is used primarily for file caching -- Novell Storage Service (NSS) and the Traditional File System. (NetWare can also use this area for mapping L!=P memory if it needs to.)
The blue in the middle of the Memory Map bar is designated as NLM in the legend; however, in this bar it shows the area that is reserved for mapping Logical Not Equals Physical (L!=P) memory. What this means is the logical address does not have to be the same as the physical address.
The yellow identifier shows in the Memory Map bar shows how much logical address space is reserved for applications running in protected memory, or Ring 3.
NetWare separates L==P address space (black) from L!=P address space (blue) through the File Cache Maximum Size line, and separates the User Address Space (yellow) from L!=P address space (blue) by ending Kernel Space (Ring 0) and beginning the User Address Space (Ring 3). If you have not changed the default settings on your server, the breakdown for NetWare 6.5 SP3 is 1.5 GB for L==P address mappings (black), 1.5 GB for the L!=P address mappings (blue), and 1 GB for the User Address Space (yellow -- this is minus the memory space used for the Reserved Kernel Mapping Space, which appears as grey).
Logical Space. The Logical Space bar shows how the actual logical address space is being used on this server. As described above, NetWare uses three logical memory ranges -- the L==P Address Space, the L!=P Address Space, and the User Address Space -- to provide blocks of logical addresses for memory allocation. The L==P Address Space is called FS Cache (gold) in the Logical Space bar, the L!=P Address Space is called NLM (blue), and the User Address Space is called US (yellow).
Other identifiers you will see in the Logical Space bar are as follows: Frag (red), shows the amount of logical space that is free but is considered fragmented because it's in small chunks; Avail (green), shows how much logical space is available; Peak US (purple), shows the maximum memory that applications running in User Address Space have used; OS Data (grey), shows the Reserved Kernel Mapping Space area. This is much of the same information that you see in the Logical Address Space window in Figure 5, only here it is shown graphically.
Physical Memory. The Physical Memory bar shows how much physical memory is presently in the server, from the 4 GB address on down to 0. The bar is divided and shows how much physical memory is presently being used for NLMs running in Ring 3 (designated as Peak US--purple), how much memory is being used for NLMs running in Ring 0 (designated as NLM--blue), how much memory is being used as File System Cache (FS Cache--gold), and how much is available for memory allocations (Avail -- green).
Once again, physical memory is divided into three memory pools: the Virtual Memory Cache Pool, the File Cache Pool, and the NSS Cache Pool. NetWare's Memory Manager uses the Virtual Memory Cache Pool and the File Cache Pool to manage the actual physical memory pages on the server. When necessary, the Memory Manager will also ask NSS for memory stored in its NSS Cache Pool to help fulfill memory allocation requests.
The Virtual Memory Cache pool is a stash or bucket of physical pages. You could say the Virtual Memory Cache Pool manages the actual physical memory pages that back the address ranges designated as L!=P and assigned to an NLM. The File Cache pool is also a stash or bucket of physical pages, only they must be associated with the identical logical address and is, therefore, designated as L==P. If the logical address mapping is contiguous, then the physical address mapping must be identical to it.
The Physical Memory bar is a graphic representation of much of the information you see in the Physical Server Memory window that you see in Figure 4.
Extended Memory. The Extended Memory bar shows how much physical memory is presently in the server, from the 4 GB address on up to 64 GB of Physical Address Extension (PAE) RAM. The bar is divided and shows how much physical memory is presently being used for NLMs running in Ring 0 (designated as NLM--blue), how much memory is being used as File System Cache (FS Cache--gold), and how much is available for memory allocations (Avail -- green).
The Extended Memory bar is a graphic representation of the rest of the information you see in the Physical Server Memory window that you see in Figure 4. Figure 8 shows a server with 12 GB of memory, with 8 GB as extended memory.
Figure 8: The Memory Graph of Logical, Physical, and Extended Memory
Let's now discuss each of the eight identifiers at the bottom of the memory graph.
L=P (black). The L=P identifier shows the size of the area that can be reserved for mapping Logical equals Physical (L==P) memory. This memory is primarily used for file caching through such services as NSS, but some drivers and NLMs still require L==P memory. The size of the L==P Address Space can be changed by using the File Cache Maximum Size SET parameter, which the NetWare Memory Manager will do as it needs more logical address space. When you increase the L==P Address Space, you decrease the L!=P Address Space and visa-versa.
FS Cache (gold). The FS Cache identifier shows the amount of memory being used for the file system cache. The Logical Space bar shows the logical address space that is being taken by file system cache; the Physical Memory bar shows how much physical memory is being taken by file system cache. The gold color designating FS Cache on the Extended Memory bar chart shows the amount of extended memory being used by the NSS file system.
Frag (red). The Frag identifier shows the amount of logical address space that is still available -- only in small chunks. Fragmentation can occur in either the L==P Address Space or in the L!=P Address Space, but instances from both address spaces appear together in the Logical Space bar. This dynamic information changes up and down in the Logical Space bar, depending on the state of the server. You can have a lot of available memory but still be fragmented because the NetWare operating system can't find a contiguous chunk of logical address space big enough to accommodate a memory request.
The opposite can be true as well. You can have an NLM loaded that fragments much of the address range in the L!=P Address Space. Then, when that NLM unloads, it releases its memory and its logical address space, thereby freeing up larger contiguous blocks of logical space that can now be used by other applications. When this happens, you will see the Frag identifier grow and shrink over time, depending on the state of your server.
With auto-tuning enabled (the default), NetWare will do all it can to ensure there is enough L!=P Address Space by changing the File Cache Maximum Size line as far as it can without hurting file cache performance. You only need to worry about the Frag identifier when it continues to grow and you start to receive "out of memory allocator" messages. Then you will probably want to find ways to expand the L!=P Address Space (by setting the -u parameter,for example).
Avail (green). When you look at the Logical Space bar, the Avail identifier shows the amount of available logical address space assignment. When you look at the Physical Memory bar and/or the Extended Memory bar, the Avail identifier shows you the physical memory that is available to be used by the system. In the case of Extended Memory, programs must be specifically written to use available memory above 4 GB.
Note: Some microprocessor architectures register some of its 4 GB of physical memory as PAE RAM, so you may see it appear in the Extended Memory bar even though the server only has 4 GB of memory.
If you have plenty of available memory on your server, but you are getting "Out of Memory Allocator" messages at the server console, check the amount of fragmentation the server has. You might need to increase the L!=P Address Space that allows the server OS to find enough contiguous logical memory space to accommodate the memory request. Or you might get the "Out of Memory Allocator" message as the server initially comes up and services are asking for more memory than can be safely distributed. This will be adjusted over time and as more load is put on the server, for server load is one of the factors that triggers memory allocation.
NLM (blue). The NLM identifier shows you the amount of logical address space or physical memory that is being used by NLM programs. This value includes allocation, stack, code, and data memory entries that you would see if you were to click on the NLM Memory link under the Physical Server Memory screen. However, it doesn't show cache memory, which is shown through the FS Cache identifier, nor does it show extended memory information, which you see through the Extended Memory bar.
In the case of the Logical Space bar, this identifier shows how much of the L!=P Address Space has been allocated; in the case of the Physical Memory bar, this identifier shows how much of the actual physical memory has been allocated. Both the physical and the logical sizes should be identical; however, the physical and logical memory addresses don't need to map up 1 to 1, which is why this is allocated to the L!=P Address Space and not the L==P Address Space, where memory addresses must match up 1 to 1.
Peak US (purple). The Peak US identifier shows the peak amount of logical address space that has been used in the User Address Space since the server was started up. To view the actual number for this entry, look at the In Use User Space entry under the Logical Address Space screen.
On the Physical Memory and Extended Memory bars, the Peak US identifier represents the amount of physical memory that is backing all applications running in User Address Space. However, physical memory is not allocated to the application until that application is used (touched). When the application is used, the NLM identifier will grow in the Physical Memory bar to accommodate the application.
US (yellow). The US identifier shows the amount of available logical address space reserved for running applications in the User Address Space, or in Ring 3 protected memory. To see the actual number for the US identifier, look at the Reserved for User Spaces entry under the Logical Address Space screen.
This is the logical address space that has been reserved for, but has not been allocated to the User Address Space. Therefore, this is an address space that can be reallocated to the L!=P Address Space and used to fulfill logical memory allocation requests. Or, if you need more User Address Space for Ring 3 applications, you can make this logical address space bigger.
You can change the size of the User Address Space by using the -u switch when issuing the server command. For example, to set the User space size to about 1.2 GB, use the following command when starting the server:
Use the Tune Logical Address Space link to help you determine what size you can set the User Address Space to and still meet the peak numbers that you see in the In Use User Space entry. You can refer to the numbers displayed in the server -u entry as you adjust the User Address Space size.
OS Data (grey). The OS Data identifier shows the amount of logical address space that is used in the Reserved Kernel Mapping Space area on a logical memory map. To see the actual number for the OS Data identifier, look at the Reserved for OS Data entry under the Logical Address Space screen.
The OS Data identifier at the top of the Logical Space bar shows you the logical address space that you see reserved. The OS Data identifier displayed at the top of the Physical Memory bar also shows you the physical memory that is being used for various operating system data.
what's new in NetWare 6.5 support pack 3
With the advent of NetWare 6.5 Support Pack 3, many important memory issues are addressed. These include the following:
- Memory fragmentation has been significantly decreased through algorithm changes that affect how logical memory address space is allocated.
- A new NSS API that flushes the NSS Cache Pool and allows the NetWare Memory Manager to change the File Cache Maximum Size line on the fly without rebooting the server. This only works if NSS runs with its cache balance set to On (the default), so unless told otherwise, leave NSS cache balance to its default of On.
- Support Pack 3 comes with memory auto-tuning enabled, so systems do not have the memory problems they experienced in Support Pack 2.
As stated many times throughout this article, NetWare 6.5 Support Pack 3 comes with an auto-tuning feature. It's a hidden SET parameter called Auto Tune Server Memory and is turned ON by default.
Support Pack 3 also looks at how much memory the server presently has. If, after the server has been running for a while, the NetWare OS needs to adjust the File Cache Maximum Size line to give more logical space for running NLMs, you will receive a message on the server console screen similar to the following:
"Server Logical Address Space is running low. The File Cache Maximum Size has been set to <number>."
If your auto-tune is set to OFF, you might be asked to make the changes yourself, in which case you will see a message on the server console screen similar to the following:
"Server Logical Address Space is running low. Increase the available logical space by increasing the File Cache Maximum Size to <number>. For maximum benefit, reboot your server at the next convenient time."
With the auto-tune ON or OFF, you might be asked, in a message similar to the following, to increase the L!=P Address Space by shrinking the User Address Space:
"Server Logical Address Space is running low. Increase the available logical space by restarting the server with the -u <number of bytes> switch."
things to look for
While we covered most of the things you need to look for under each of the headings above, there's a number of things you should be aware of and keep an eye on:
- Be sure the Peak US (Peak User Address Space) entry fits within the amount allocated to the US (User Address Space) entry. Also, don't be fooled by the Peak US -- it only shows the applications that loaded and at one point ran in the User Address Space. As stated before, some applications look to see how much space is available before loading and won't load if the available space is too small.
- Also, check to see if the Frag identifier is growing and how much available physical memory you have available, as shown through the Avail identifier under the Physical Memory bar. If your server is starting to receive Memory Allocator errors and you have a lot of available physical memory, run the Tune Logical Address Space link. Be sure to manually set the server -u parameter if needed and as recommended by the Tune Logical Address Space link. Be sure to run the server under a full workload before manually adjusting server memory; otherwise, you stand the chance of seriously mis-managing memory resources.
- The auto-tuning feature of NetWare 6.5 SP3 has been designed to take care of 90-95% of server memory needs. If you receive "Alloc Memory errors" when the server initially comes up, let the server run for a while and see if the messages go away. It takes a little bit of time to get everything in place.
- Over time, most memory migrates and is now stored in the Virtual Memory Cache Pool, where most memory activity occurs (loading and unloading NLMs and meeting NLM requests for more memory). Then as NSS and other NLMs request more memory (this is usually due to the workload put on these services), the NetWare Memory Manager will allocate the needed memory from the Virtual Memory Cache Pool and not from the File Cache Pool (unless there isn't enough physical memory in the Virtual Memory Cache Pool, then it will seek memory from the File Cache Pool and the NSS Cache Pool as needed).
- Memory is adjusted through two methods: requests for memory as NLMs load and unload and from server load. Many so-called memory problems are simply people not understanding that the File Cache Pool will ask for memory when the pool needs more memory. Programs like SEG can show you how much memory is sitting in the NSS Cache Pool, which is used by NSS when it needs more cache buffers for file services.
The NetWare Memory Manager will also clear the NSS Cache Pool to adjust the File Cache Maximum Size line when it needs to. Then available memory will be again allocated to the File Cache Pool, of which NSS takes 85% for its own cache pool.
Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com