Memory is a big concern for XenApp on a 32bit operating system like Windows 2003 Server.  In the default state, Windows 2003 can only “see” 4GB of memory, which is split up into two equal parts: Kernel Memory (2GB) and User Memory (2GB). Kernel Memory is further broken down into 4 other parts:

  • Paged Pool: Memory space used by the system and kernel level components that can be paged out of physical RAM and into the page file
  • Non Paged Pool:  A section of memory guaranteed to always reside in physical RAM and is used by the operating system for certain kernel level processes
  • System Page Table Entry : An index table that tells the operating system where the virtual memory actually resides in physical RAM or on the page file
  • System Cache: Maps open files in memory for better performance. This is where the registry hives are located as well

Once the system has started, the different sections of kernel memory cannot be re-allocated. The system tries to allocate these 4 areas appropriately, but they might require “tweaking”. However, the four areas cannot all be set to the maximum level as that would go over the 2GB limit of kernel memory.

Many of you are probably saying, “But I can use the PAE switch on Windows 2003 to go above the 4GB limit”. You are correct, you can go above the 4GB limit, but are you aware of the consequences of this action?

  1. You must be using Windows 2003 Enterprise or Data Center.  This setting does not function in Windows 2003 Standard.
  2. The PAE Switch does NOT change the kernel memory limitations of 2GB
  3. To use the extra RAM, more System Page Table Entry memory is used
  4. If you have more System Page Table Entries, you will end up with less Paged Pool, System Cache and Non Paged Pool

Talk about being between a rock and a hard place. Adding more RAM and enabling the PAE switch “might” give you more scalability but at a great cost for a more expensive operating system, more RAM and special optimization configuration analysis and implementation. The reason I said “might” give you more scalability is because you will now likely run out of kernel memory before you run out of user memory. So you just bought a more expensive operating system and more RAM that will sit there wasted. 

Now I know some of you will add a comment saying something to the effect that you are using the PAE switch and ended up increasing single server scalability by 60, 70, 80 or even 90%.  All I can say is congratulations and I applaud you  . You are lucky as you have the right set of apps for this to work as well as it has.  But I want you to think about going down a completely different route.  Virtualization…

Keep using Windows 2003 Standard but virtualize it with XenServer. Upgrade the RAM on the physical servers so it can support 2-4+ virtual servers. In the end, you will end up with a system that is more flexible, scalable and easier to manage. 

If you interested in learning more about sever virtualization for XenApp, then take a look at the following:


Homer Quote of the Blog: “To be loved, you have to be nice to others EVERYDAY! To be hated, you don’t have to do squat.”