Under typical circumstances and for each process, 2 GB of virtual address space is allotted for the user-mode process, and another 2 GB of virtual address space is allotted to the operating system. When you use the /3GB switch in Windows Server 2003, 3 GB of virtual address space is allotted for the user-mode process, and only 1 GB of virtual address space is allotted to the operating system. This reallocation of the extra 1 GB of address space helps to resolve the problem of memory fragmentation in the Store.exe virtual address space. With the larger address space allocated to Store.exe, memory can be more easily joined before all large memory blocks are used.
After you have installed Windows Server 2003, modify the Boot.ini file, and then add the /3GB and the /USERVA=3030 parameters to the startup line, as in the following example:
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /USERVA=3030
Note You do not have to use the /3GB switch on Microsoft Windows Small Business Server 2003-based computers. We do not recommend that you use the /3GB switch parameter in the Boot.ini file for Exchange Server computers that are also Active Directory domain controllers or global catalog servers.
Note Make sure that the Store.exe process does not run out of virtual address space. If this behavior occurs, memory allocations fail (even if there is plenty of physical RAM remaining), and you must restart the Microsoft Exchange information store service.
For example, a server with 2 GB of physical RAM that does not have the /3GB switch in the Boot.ini file will run out of memory when the Store.exe virtual address space reaches 2 GB. Windows Task Manager shows that only about 1.5 GB is actually being used in this scenario, but the server will still be out of memory.
The /USERVA switch is new to Windows Server 2003 and provides better granularity for splitting memory allocations between user mode and kernel mode. This behavior lets you scale the server to a greater number of users without the risk of exhausting system resources. By using /USERVA=3030, an additional 42 megabytes (MB) of memory is allocated to the kernel for page table entries (PTEs). However, this value may need more tuning. You can monitor the PTE consumption by using Performance Monitor. The object to monitor is Free System Page Table Entries. If values of less than 7000 are observed, the value of 3030 must be reduced because the system is unstable. If the value is less that 24000, reduce the value in 64-MB steps until values that are greater than 24000 are observed.
Note Microsoft Product Support Services strongly recommends using a range of memory that is within the range of 2800 to 3030 for the /USERVA switch. This range is wide enough to provide a large enough pool of system PTEs for all currently observed issues. Typically, a setting of /userva=2800 provides close to the maximum available number of system PTEs that are possible. Currently, Microsoft Product Support Services has not seen an Exchange Server computer that requires values that are less than 2900.
You may also monitor the virtual address consumption by using Performance Monitor. Add the Virtual Bytes counter for the Store.exe process to make sure of an accurate reading of the virtual space. The Store.exe process is the only Exchange 2003 process that you must monitor. Other Exchange 2003 processes will not grow sufficiently large to cause any problems.
Because Exchange Server uses the /3GB switch as it scales up, the Exchange Server computer cannot efficiently use more than 4 GB of RAM. Exchange Server does not support instancing, Physical Address Extension (PAE), or Address Windowing Extensions (AWE). Therefore, 4 GB of RAM is the maximum amount of memory that an Exchange Server computer can efficiently use.