Windows servers with more than 2 GB of physical memory usually benefit from having the /3GB switch set as a boot...
option in BOOT.INI. Here's an example BOOT.INI entry with the option set:
[Operating Systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /USERVA=3030
When /3GB is enabled, the operating system allocates memory a little differently -- up to 3 GB of memory can be allocated for user-mode processes, and 1GB of memory is set aside for the operating system (as opposed to 2 GB/2 GB).
This may help Exchange Server perform better, since it prevents store.exe's address space from becoming fragmented. (The /USERVA=3030 switch should also always be added in conjunction with /3GB, to allow for more kernel memory to be allocated for page table entries.)
But there are caveats. The /3GB switch should not be used in either of the following circumstances:
- You're running Microsoft Exchange on a server that is also an Active Directory domain controller or global catalog server.
- You're running Exchange on a Windows Small Business Server (SBS) 2003 computer, which means the server's almost inevitably being used as a domain controller and/or global catalog server.
One big reason why /3GB isn't recommended on an SBS installation is because the amount of performance gained is probably going to be minimal, given the scope of most SBS installations.
Most of the reason /3GB exists is to help alleviate heavy memory pressure in the user address space; if that pressure doesn't exist in the first place, it's essentially a case of trading one problem (less user memory) for another (less kernel memory).
If you're not dealing with an Active Directory setup that desperately needs the extra gigabyte of user memory, you're not likely to see any benefit -- and may actually run into more problems, not less, further down the line.
Also, /3GB only works for programs that know how to use it. If you're working with Exchange Server and another application that doesn't know about large memory spaces, that other program will not be able to use any of the additional memory provided by /3GB.
Another possible side effect of /3GB that many people don't anticipate is how it affects processes that run in kernel space, such as the video driver. The driver might need to request a memory aperture as big as 128 MB to 256 MB (this is more common on desktops and workstations, but it still happens on servers).
If there's not enough kernel memory to spare, because it's been reallocated to user memory, the call will fail and the server will crash. I've witnessed this in action on a PC with a high-end video card that was being pressed into service as a server -- when we removed the /3GB switch, the problem stopped.
As an aside, some people have asked, if Microsoft recommends not hosting Exchange Server on a domain controller, why does that exact configuration exist for SBS (where the Exchange Server box and domain controller are essentially the same thing)?
The answer, again, is scope: if you're not dealing with a very big organization, the two can usually coexist on the same server without too much trouble. But an enterprise-sized Exchange Server setup (and an enterprise-sized Active Directory store) will need a dedicated server.
About the author: Serdar Yegulalp is editor of the Windows Power Users Newsletter.
Do you have comments on this tip? Let us know.
Related information from SearchExchange.com:
Please let others know how useful this tip was via the rating scale below. Do you have a useful Exchange Server or Microsoft Outlook tip, timesaver or workaround to share? Submit it to SearchExchange.com. If we publish it, we'll send you a nifty thank-you gift.