Virtual memory is the most "official" term for what's been most commonly called a "swap file" -- an area of disk space allocated by the operating system where items can be temporarily swapped out of RAM when physical memory gets low. Exchange relies on the presence of virtual memory much the same as any other Windows application.
Over time, the virtual memory space can become internally fragmented, making it harder to allocate large blocks of memory efficiently. When this happens, your Exchange 2000 or 2003 system may eventually throw a warning or error of Event ID 9582, Event ID 9665 or Event ID 12800:
"The virtual memory necessary to run your Exchange server is fragmented in such a way that performance may be affected. It is highly recommended that you restart all Exchange services to correct this issue."
Event ID 9582 is usually more a warning of a possible problem in the offing rather than a problem itself. If it appears by itself without the other errors, it is not as crucial.
Event ID 9665 and Event ID 12800 are more critical though. If either occurs, the system may not be configured to properly use its available memory. You may want to set the /3GB and /userva=3030 switches in BOOT.INI. This allocates more memory to the user mode, as opposed to the kernel, and may proactively prevent virtual memory from being used up.
You may also want to set the HeapDecommitFreeBlockThreshold registry key to control how often virtual memory blocks are freed up, which can help alleviate virtual memory fragmentation -- but try the other settings first.
Please note that you don't want to use /3GB on a regular Windows Server 2000 system (as opposed to Windows Server 2003 or Windows Advanced/Datacenter Server 2000); see KB article 291988 for more information on what to do if this is your situation.
Because virtual memory is not directly correlated with physical memory, adding RAM alone to the system without tuning its performance may not resolve the problem. Also, clustered Exchange servers may be more prone to this problem than conventional ones, since clusters tend to allocate memory more aggressively for multiple storage groups and databases.
Also, check how many storage groups are present in the server. You should keep the number of storage groups to a minimum; each one allocated uses up a good deal of memory.
About the author: Serdar Yegulalp is editor of the Windows Power Users Newsletter and a regular contributor to SearchExchange.com.
If Event ID 9582 is not as crucial, would you just wait until your information store dismounts, or can you suggest for a fix to prevent this from happening?
I'd actually take the initiative and see if using the /3GB switch and related tuning mechanisms stops the errors. This may be a symptom of a problem in the offing. If you deal with it sooner rather than later, it'll mean less headaches further down the line. (If you're not dealing with a system that has more than 1GB of RAM, then I recommend adding memory to that system anyway, since running Exchange with less than that is problematic at best!)
Serdar Yegulalp, tip author
I would like a little clarity on the issues surrounding setting (or not) the /3GB switch for Exchange Server. We have recently installed a new Exchange server, which has 4GB of RAM compared to our old machine which had 1GB. I am now seeing frequent messages relating to virtual memory fragmentation, and wondered if I am safe to set the switch. Some articles say it is OK if you're running Exchange 2000 with this amount of RAM, others say don't if it's on an Exchange 2000 server.
This is our setup:
- All our servers are running Windows Server 2000 Standard.
- The domain controller is on a separate server.
- We have Exchange 2000 Enterprise SP3 on a new, dual Xeon server with 4GB RAM and five mail databases (to separate company email).
Would you recommend setting this or not? The following errors are popping up hourly:
- EventID: 9582
- The virtual memory necessary to run your Exchange Server... (you know the rest!)
I would really appreciate any advice you have to offer.
From what I've been able to determine, the Standard edition of Windows 2000 Server does not support the /3GB switch. According to Microsoft, it is unsupported on that edition of Windows and can cause stability issues:
"The /3GB switch is supported only on the following operating systems:
- Windows 2000 Advanced Server
- Windows 2000 Datacenter Server
- Windows Server 2003 Standard Edition
- Windows Server 2003 Enterprise Edition
- Windows Server 2003 Datacenter Edition"
Microsoft has a couple of articles that explain why it's not a good idea to use the /3GB switch in regular Windows 2000 Server:
- Exchange 2000 requires /3GB switch with more than 1 gigabyte of physical RAM
In a situation like this, you may want to consider migrating to Windows Server 2003, or try some of Microsoft's suggested memory-optimizations for Exchange Server 2003 that don't involve using the /3GB switch:
- How to troubleshoot virtual memory fragmentation in Exchange Server 2003 and Exchange 2000 Server
The problem may be something as simple as a misconfigured page file, for instance, or a few too many storage groups.
Good luck, and if you want to write back with further feedback please feel free to do so as it'll help other people with similar issues.
Serdar Yegulalp, tip author
Do you have comments on this tip? Let us know.
Related information from SearchExchange.com: