By default, all versions of Windows Server 2003 reserves 2 GB of virtual address space for the kernel, and it permits user mode processes (such as the Exchange 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 increases as more memory is used during run time. It is typical for the actual memory usage (or working set) of a process to be much less than the address space that the process was allocated. If the computer that is running Microsoft Exchange Server 2003 has 1 gigabyte (GB) of memory or more installed and if the computer is home to mailboxes or to public folders, you must modify Windows Server 2003 so that 3 GB of address space is available for user mode applications.
For more information about this setting, click the following article numbers to view the articles in the Microsoft Knowledge Base:
171793
Information on application use of 4GT RAM Tuning
189293 Enabling 4GT RAM Tuning when you use Windows NT Server Enterprise Edition
It is important that the Store.exe process does not run out of virtual address space. If this occurs, memory allocations will not be successful (although sufficient physical RAM exists), and you must restart the Microsoft Exchange Information Store service.
For example, an Exchange server with 2 GB of physical RAM and that does not use the
/3GB switch in the Boot.ini file will run out of memory when the Store.exe virtual address space reaches 2 GB. The Windows Task Manager shows that only about 1.5 GB is actually in use, but the server will be out of memory anyway. You can monitor the virtual address consumption with performance monitoring. 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 2000 process that you must monitor. Other Exchange 2000 processes do not grow large enough to cause any problems.
Use of the /Userva switch
With the
/Userva switch, you can customize how the memory is allocated when you use the
/3GB switch. The number following
/Userva= is the amount of memory in megabytes (MB) that will be allocated to each process. If you set
/3gb /Userva=3030, this reserves 3,030 MB of memory to the process space, as compared to 3,072 MB when you use the
/3GB switch alone. The 42 MB that is saved when you set
/Userva=3030 is used to increase the kernel memory space, free system page table entries (PTEs). The PTE memory pool is increased by the difference between 3 GB (specified by the
/3GB switch) and the value that is assigned to the
/Userva switch.
It is best that you configure all Windows Server 2003-based servers that run Exchange and are configured with the
/3GB switch to also use the
/Userva=3030 switch. After you install a Windows Server 2003-based server, you must modify the Boot.ini file to add the
/3GB and
/Userva=3030 parameters to the startup line. For 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
Note The /Userva parameter is only supported on Exchange servers when the value is set between 2,970 MB and 3,030 MB. Values that are less than 2,970 MB or greater than 3,030 MB are not supported. Only in extreme low PTE cases should a value that is less than 2,970 MB be used. The recommended default value for Exchange servers is 3,030 MB.
You can view low PTEs directly by using Performance Monitor. Look for the object Free System Page Table Entries under the memory counter. Values that are less than 7,000 are too low. Therefore, the
/userva switch must be adjusted down to increase this value.
The target value for Free System PTEs is 24,000 or greater. Do not modify the value to
below
/userva=2800 to try to gain more PTEs. Instead, contact Microsoft Product Support
Services.
To download the Exchange Server 2003 Service Pack 1 (SP1) Release Notes, visit the following Microsoft Web site: