When you install Exchange Server 2003 on a Microsoft Windows Server 2003-based computer that has more than 1 gigabyte (GB) of physical random access memory (RAM) installed, and that is home to mailboxes or public folders, you must edit the Boot.ini file to optimize the virtual memory usage of the Information Store service.
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:
[Boot Loader] Timeout=30 Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT [Operating Systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /USERVA=3030
After you add the /3gb value to the Boot.ini file, a scarce system resource called System Page Table entries may be reduced to a value that may cause unstable operation of your Exchange Server computer. For more information about how to prevent disruption of your Exchange Server computer, click the following article number to view the article in the Microsoft Knowledge Base:
316739 How to use the /userva switch with the /3GB switch to tune the User-mode space to a value between 2 GB and 3 GB
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.
By default, Windows Server 2003 reserves 2 GB of virtual address space for the kernel, and it permits user-mode processes (such as the Exchange 2003 information store process, Store.exe) to use 2 GB of virtual address space. Virtual address space for a specific process is allocated at startup, and it increases as more memory is used during run time. It is standard for the actual memory usage (working set) of a process to be much less than the allocated address space for that process. On an Exchange 2003 computer with more than 1 GB of memory, you must modify Windows Server 2003 so that 3 GB of memory are available for user-mode applications.
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.