Use of the /3GB switch in Exchange Server 2003 on a Windows Server 2003-based system
| Article ID | : | 823440 |
| Last Review | : | January 28, 2005 |
| Revision | : | 8.0 |
SUMMARY
When you install Exchange Server 2003 on a
Microsoft Windows Server 2003-based computer
that has 1 gigabyte (GB) or more 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:
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
MORE INFORMATION
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 server
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. By using /USERVA=3030, an additional 40 megabytes (MB) of memory is allocated to the kernel for page table entries (PTEs). This permits you to scale the server to a greater number of users without running the risk of exhausting system resources.
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.
Note We do not recommend setting the /3GB switch in Boot.ini 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. By using /USERVA=3030, an additional 40 megabytes (MB) of memory is allocated to the kernel for page table entries (PTEs). This permits you to scale the server to a greater number of users without running the risk of exhausting system resources.
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.
Note We do not recommend setting the /3GB switch in Boot.ini for Exchange Server computers that are also Active Directory domain controllers or Global Catalog servers.