On Fri, May 23, 2008 at 12:44 PM, Thomas Gonzalez <[EMAIL PROTECTED]> wrote: > I'm upgrading our exchange 2003 memory from 2 gig to 4 gig this weekend.
Here's my notes from when we upgraded to a new server, which had 4 GB RAM. At the time, we were running Windows 2000 Server Standard and Exchange 2000 Enterprise. As I recall, things weren't any different for Exchange 2003. Server 2003 supports the /4GB switch even for Standard, so that may make a difference. Summary ------- New server has: - 4 GB of RAM - Windows 2000 Server Standard - Exchange 2000 Enterprise - Active Directory Domain Controller and Global Catalog - Several other applications Should we use the /3GB switch in the BOOT.INI file on server? Short answer: No Quick Background ---------------- i386 = 32-bit 32-bit = 4 GB By default, Windows on i386 splits the virtual address space into 2 GB for userland and 2 GB for the kernel. The /3GB switch changes this to give 3 GB to userland and 1 GB to the kernel. This means processes can have a larger virtual address space, at the cost of cutting kernel virtual address space in half. Reducing the kernel address space is not without penalties. Quick Explanation ----------------- 1. On a system doing many different things, there is little to no benefit in depriving the kernel of address space it could use for caching in RAM. 1a. Exchange generally only benefits from the extra address space on a dedicated Exchange box. Less kernel memory is needed since the only thing the box is doing is running Exchange, not managing many different things. 2. The /3GB switch is not supported on Win 2000 Srvr Std. It is supported on Win 2003 Srvr and Win 2000 Srvr Enterprise, but we don't have those. 2a. It isn't worth upgrading to Win 2000 Srvr Ent because of Point 1, above. Notes ----- 4GT = 4 gigabyte tuning. The /3GB switch turns this on. Virtual address space (the memory a process can address) is not the same as the physical address space (the amount of RAM the machine can address). With /3GB enabled, a program still has to request the larger memory space, or it will still be limited to 2 GB. This is a backwards compatabiltiy hack to let programs which assume a 2 GB userland keep working. This has nothing to do with PAE (physical address extension). PAE changes the 32-bit physical address space to a 36-bit physical address space. It lets the machine address more RAM. The amount of RAM the machine can address has nothing to do with the address space of a running process. This has nothing to do with page files (swap files), which are sometimes called "Virtual Memory". That kind of virtual memory has nothing to do with virtual addres space (which is also sometimes called "virtual memory"). Detailed Analysis ----------------- REF1 states that "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." In particular, Exchange plus an AD DC means one should not use /3GB switch. REF2 enforces this, in particular pointing out things like antivirus software and database servers, which also tend to be memory hungry. REF2 also provides some very useful looking pointers to info on how to tune Windows and Exchange for more balanced memory operation. REF3 further enforces the kernel/userland tradeoffs, noting that "It is possible to run out of kernel memory well before running out of user memory, or vice versa." MSKB 315407 provides a registry hack that tweaks the OS memory manager in a way that helps reduced memory fragmentation with large RAMs. MSKB 266768 tells how to monitor the Exchange IS to make sure memory allocations are within safe boundries (both with and without /3GB), and how to limit the Store Database cache size to make sure it stays within safe boundries. MSKB 328882 provides similar tips. It also explains out why memory limit tuning is needed in our case: Exchange calculates certain allocation sizes based on physical RAM, not address space. In REF5, in the comments, Larry Osterman states, in regards to Exchange and memory fragmentation, "it starts showing up with several (3-5) thousand users". That gives us an idea of the scale we're talking about. MSKB 325044 and 317411 contain tons of detailed information on investigation of memory related issues, but little in the way of preventive advice. MSKB 313707 detail memory-related problems that can occur with Exchange, but do not apply to us for one reason or another. Most commonly, because we cannot use the /3GB switch on Win 2000 Srvr Std. However, these do serve to highlight that the /3GB switch is not a free lunch. MSKB 291988 notes that /3GB on Win 2000 Srvr Std doesn't really work, even if it looks like it is working. MSKB 266096 implies that the /3GB swith is required, period. Other sources, including MSKB articles, and REF4.1, contradict this. MSKB 266096 also states that it applies only to Windows versions which suppor the /3GB switch properly. The conclusion is that the /3GB switch is not required; it merely lets Exchange take full advantage of larger RAM for the Store. MSKB 306860 documents issues we may encounter. MSKB 302254, 313084, 319682, 324118 document issues which are supposedly fixed in the versions we are running. MSKB 311901, 268363, 171793 document issues we should not encounter, since we are not using PAE, nor do we have more than 4 GB of physical RAM. REF4 explains what the /3GB does in rich detail. Useful mainly as general background, since we cannot use the /3GB switch. But it at least gives us an idea of what we are missing -- and what we are *NOT* missing, too. MSKB Articles ------------- 171793 - Information on Application Use of 4GT RAM Tuning 266096 - Exchange 2000 requires /3GB switch with more than 1 gigabyte of physical RAM 266768 - How to modify the Store Database maximum cache size in Exchange 2000 Server 268363 - Intel Physical Addressing Extensions (PAE) in Windows 2000 291988 - A description of the 4 GB RAM Tuning feature and the Physical Address Extension switch 298064 - Scalability planning for Exchange 2000 Server 302254 - Computer That Is Running Exchange 2000 and Windows 2000 Server May Run Out of Virtual Memory with Event ID 12800 306860 - Incorrect Memory Status When Monitoring Status for Available Virtual Memory 311901 - The effects of 4GT tuning on system Page Table Entries 313084 - The Memory Status Is Incorrect When You Monitor the Status for Available Virtual Memory 313707 - Exchange 2000 Server with the "/3GB" Switch in the Boot.ini File May Lose Network Connectivity Under a Heavy Messaging Load 315407 - The "HeapDecommitFreeBlockThreshold" registry key 317411 - How to gather data to troubleshoot Exchange virtual memory issues 319682 - The Exchange 2000 Information Store Reports an Event ID 327 Warning Message and Virtual Memory May Be Fragmented 324118 - The Extensible Storage Engine Database Engine Contributes to Virtual Memory Fragmentation 325044 - How to troubleshoot virtual memory fragmentation in Exchange 2003 and 2000 328882 - Exchange memory use and the /3GB switch Other References ---------------- REF1 "/3GB switch 'gotchas' for Exchange Server" By Serdar Yegulalp Published by SearchExchange TechTarget Published on 20 June 2006 http://searchexchange.techtarget.com/tip/0,289483,sid43_gci1194970,00.html REF2 "Exchange Memory Allocation" By Amit Zinman Published on 12 Oct 2004 http://www.msexchange.org/articles/Exchange-Memory-Allocation.html REF3 "Microsoft Windows Kernel Memory Management and Microsoft Exchange Server" Published 7 Dec 2005 http://msexchangeteam.com/archive/2005/12/07/415733.aspx REF4 "Summary of the recent spate of /3GB articles" http://blogs.msdn.com/oldnewthing/archive/2004/08/22/218527.aspx REF4.1 "Why does Exchange recommend /3GB if you have more than 1GB of physical memory?" http://blogs.msdn.com/oldnewthing/archive/2004/08/13/214117.aspx REF5 "Execution protection (NX) and PAE" http://blogs.msdn.com/carmencr/archive/2004/08/06/210093.aspx ---------------------------------------------------------------------- MSKB 266768 "How to modify the Store Database maximum cache size in Exchange 2000 Server" Stopped all Exchange services MSKB article provides instructions on how to open the config container. Select "ADSI Edit" root object >From the "Action" menu, inoke "Connect to" In the "Connection Point" section, set "Naming Context" to "Configuration Container" Navigated to: LDAP://server.inside.example.com/CN=InformationStore,CN=SERVER,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Org Name,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=inside,DC=example,DC=com Brought up properties of that folder (from left pane) Selected attribute "msExchESEParamCacheSizeMax" Value was not set Set to 147456 per KB article Per the article: 147456 is 576 MB, which is the "recommended size on servers without the /3GB switch set". The value is in pages (4 KB each). -------------------- MSKB 315407 "The "HeapDecommitFreeBlockThreshold" registry key" All Exchange services are still stopped Used REGEDIT Navigated to Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager Value Name: HeapDeCommitFreeBlockThreshold Value Data was zero (0) Changed to 0x00040000 (262144) per KB article Restarted server. ---------------------------------------------------------------------- ~ Ninja Email Security with Cloudmark Spam Engine Gets Image Spam ~ ~ http://www.sunbeltsoftware.com/Ninja ~