Optimizing Exchange Memory Usage

How Exchange 2000 is like your two-year-old.

Bill: I inherited an Exchange 2000 server and I was curious on a couple of items. I'm an MCSA and this is my first Exchange box to administer. Is there a way to set the max memory size like there was in previous versions of Exchange? Currently, the STORE.EXE process is using 993MB out of 1.5GB of available RAM. I looked into this problem at support.microsoft.com and couldn't find an answer.

The other question is: What should the performance look like for this server with only 61 mailboxes. The server runs on a 1.8GHz Pentium 4 with 1.5GB of memory and a 100GB RAID-5 array. Currently, CPU usage is very low but memory usage sometimes totals 1.42GB. To me this seems very high. The server is also running DNS, chat and few minor programs.

Get Help from Bill

Got a Windows or Exchange question or need troubleshooting help? Or maybe you want a better explanation than provided in the manuals? Describe your dilemma in an e-mail to Bill at mailto:boswell@101com.com; the best questions get answered in this column.

When you send your questions, please include your full first and last name, location, certifications (if any) with your message. (If you prefer to remain anonymous, specify this in your message but submit the requested information for verification purposes.)

Matt: Don't let the high memory utilization of Exchange concern you. Memory tuning under Exchange happens automatically via Dynamic Buffer Allocation (DBA). If you've ever raised a toddler, you'll understand how the DBA lays claim to memory. It follows the "Rules of Two Year-Olds", which go like this:

  • If it's in my hands, it's mine.
  • If I like it, it's mine.
  • If it looks like mine, it's mine.
  • If I can take it away from you, it's mine.
  • If I had it a while ago, it's still mine.
  • If I'm doing or building something, all the pieces are mine.
  • If it's mine, it must never appear to be yours in any way.

Using these rules, the DBA eventually consumes nearly all available RAM. But if you were to introduce a new application, such as an anti-spam service or a fax service, then Exchange would cede memory over to that application over a period of time. See Micrsoft Knowledge Base article 815372, "How to Optimize Memory Usage in Exchange Server 2003," for more information about the DBA and memory handling.

Seeing that you have over 1GB of RAM on the server, it's also important that you set the /3GB switch in the Boot.ini file. This tells Exchange to use a different and more efficient method for assigning memory to file handles (a data structure called a PTE.)

Here's an example Boot.ini file with the switch:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINNT="Microsoft Windows 2000 Server"
/fastdetect /3GB

Hope this helps.

About the Author

Contributing Editor Bill Boswell, MCSE, is the principal of Bill Boswell Consulting, Inc. He's the author of Inside Windows Server 2003 and Learning Exchange Server 2003 both from Addison Wesley. Bill is also Redmond magazine's "Windows Insider" columnist and a speaker at MCP Magazine's TechMentor Conferences.

comments powered by Disqus

Reader Comments:

Fri, Sep 3, 2004 Erock Boston

All the articles indicate using 3GB if you have more than 1 GB RAM. However, I believe it is really over 2 GB that it matters. In a 2 GB system, even with 3GB set, you only get 1 GB for kernal, one for process. If you threw in another GB, I'd expect store.exe to go up to 2.7, but that's the highest you'll get.

Wed, Apr 28, 2004 Marcio Maisonette Brazil

Very good issues!

Wed, Apr 28, 2004 Jim US east coast

We have /3GB /Userva=3030 set in the boot.ini on a 2003 Std|E2003 server with 2GB and about 75 mailboxes, 42GB priv.edb. Store.exe never uses over 1GB, and total RAM in use is 1.5GB maxed at 1.7GB. I'd like to see 100% in use and get store.exe to use more. Anything else I can do?

Wed, Apr 28, 2004 Dan Seattle

PAE should never be used with Exchange. PAE gives access to more than 4GB physical memory, but you still have the 2GB process limit. The 3GB switch isn't more "efficient". All it does is increase the maximum size of a process from 2GB to 3GB, at the expense of kernel memory. Its only needed if your store.exe process is exceeding 1.7GB in normal use. Please note that this is VIRTUAL memory, not physical. Obviously, since RAM is cheap, if you're at this limit, throw a full 4GB in the box.
This is the KEY bottleneck in Exchange, and the reason why no modern Exchange server can scale beyond 4 CPU-4GB RAM. Anything more is just a waste, as once your store.exe process hits 2.8GB (around the 7-10k MAPI user mark dependant on load) you're done.
Unlike other, multi-instance applications like SQL server and Domino, Exchange 2003 is still very limited in scale-up capability.

Wed, Apr 28, 2004 A Dad Anonymous

The last rule of Two Year Olds is;
If it's broke, it's your's.
Which is why the topic is being covered here.

Tue, Apr 27, 2004 Korbyn Edmonton

Just to be clear, /3GB can't be used with std Windows 2000, only Advanced and above. Win2k3 allows it on all versions. Never use the /PAE with Exchange, KB articles are dead set against it. Your biggest gains will come with optimizing your disk arrays, seperating the OS from Transaction logs from database stores. Disk IO is going to be your bottleneck, and RAID 5, good for fault tolerance bad for speed. If you have money to burn, mirror your OS and transaction drives (seperate spindles) and use RAID 0plus1 for your database(s). Bill is very acurate in his analogy, up to 4-5GB. The Exchange system will never utilize anything beyound 4GB. Other applications however may benefit. If working with a SAN, a seperate drive for each database will be helpful.

Tue, Apr 27, 2004 Anonymous Anonymous


Tue, Apr 27, 2004 Michael Anonymous

Don't forget the /userva setting either if on server 2003

Tue, Apr 27, 2004 Anonymous Anonymous

Yup, /3GB ONLY for 2000 ADVANCED or 2003!!!

Tue, Apr 27, 2004 DP Mandell CA

One should point out to readers that the /3GB switch applies to W2k ADVANCED server and not to W2k server. Using it with W2k server can have poor or dangerous results. KB328882

Tue, Apr 27, 2004 b Anonymous

the article mentioned not making the 3GB switch on "Windows 2000 Standard Server" I hope matt read it, and not just bills article

Tue, Apr 27, 2004 George Vancouver, BC

Great example of how to leave the memory alone on a 2000 server. My question to this is about the /3GB switch. Everything I've read says that this is a ADVANCED server setting. Can it also be applied to a normal 2000 Server install?

Add Your Comment Now:

Your Name:(optional)
Your Email:(optional)
Your Location:(optional)
Please type the letters/numbers you see above

Redmond Tech Watch

Sign up for our newsletter.

I agree to this site's Privacy Policy.