As the /3Gb switch cannot be used on Windows 2000 Standard Edition, is there a way to resolve
the "error 9582" issue without upgrading to Windows or Exchange 2003? My store.exe service keeps crashing due to virtual memory fragmentation.
Excellent question. There are many people running Exchange 2000 on Windows 2000 Server (aka Standard) with this configuration. Indeed, MSKB 266096 was published because PSS had lots of cases where customers were using the /3GB switch on Windows 2000 Server because they either did not know it was not supported, or because they decided to take their chances.
In 32-bit Windows systems, there are two kinds of memory: physical memory (the amount of actual memory installed in the system) and virtual memory (a virtualized 4GB address space). Regardless of the amount of physical memory in your system, Windows uses a virtual address space of 4 GB, with 2 GB allocated to user-mode processes (e.g. applications such as Exchange) and 2 GB allocated to kernel-mode processes (e.g. the operating system and kernel-mode drivers). On systems that have 1 GB or more of physical memory, the /3GB switch can be used to allocate more memory to applications (3 GB) and less memory to the operating system (1 GB). For Exchange, this extra virtual address space helps reduce the amount of memory fragmentation in the information store process's virtual address space.
The /3GB switch is used to effect this allocation change. The switch is entered into the system's BOOT.INI file and takes effect after a reboot. The /3GB switch is supported on Windows 2000 Advanced Server and Windows Server 2003 Standard Edition, Enterprise Edition, and Datacenter Edition. It is not, however, supported on Windows 2000 Server because it does not operate in the same manner on that platform.
When the /3GB switch is used on a Windows 2000 Server, user-mode processes get 2 GB of virtual address space and kernel-mode gets 1GB. In other words, 1 GB was just removed from kernel-mode without an equal allocation to user-mode.
Now, the whole purpose of this switch, or rather, the whole reason you want to change the virtual address space allocation from 2/2 to 3/1, is because it helps reduce virtual memory fragmentation (what you've referred to as error 9582).
Virtual memory is especially important to monitor and manage on Exchange servers for two reasons:
(1) The more virtual memory available to Exchange, the greater the load it can handle (e.g., you can add more users)
(2) Performance problems can occur (especially with clustered Exchange servers) when virtual memory becomes too fragmented.
During the normal course of its operations, Exchange will repeatedly allocate, use and deallocate virtual memory; the STORE.EXE process reuses virtual memory constantly. When virtual memory is allocated, used and deallocated frequently, it can cause virtual memory fragmentation. Virtual memory fragmentation is analogous to file system fragmentation that can occur over time. After a while, allocated segments of virtual memory are no longer contiguous, and performance begins to suffer. In the case of the file system, you can run an application that defragments the file system, and in most cases this can be done while the system is online and being accessed. In the case of virtual memory fragmentation, there is no defragmentation tool. Instead, to correct the problem you must stop and start the Information Store service or reboot the system.
Virtual memory is not unique to Windows; many computing systems use it. In fact, well before Windows existed, computer scientists and mathematicians struggled with the problem of virtual memory fragmentation. It's not an easy one to solve, however, mainly due to the inherent dynamic nature of what processes do. Because memory allocations occur in different sizes and last for varying amounts of time, there's no magic formula to prevent virtual memory fragmentation.
However, there are some things you can do. Of course, one would be to upgrade to Exchange 2003 and then Windows 2003. In addition to dramatically improving memory management, you'd get a whole slew of additional benefits, as well.
But you did say that you did not want to do this, so my recommendations to you would be to:
1. Install Service Pack 3. In Exchange 2000 Service Pack 3, Microsoft introduced a variety of changes to Exchange's virtual memory management functions.
2. Install the March 2003 Exchange 2000 Server Post-Service Pack 3 Rollup, which you can read about at http://support.microsoft.com/?id=810883. You can get the latest Exchange 2000 Post-SP3 Rollup at http://www.microsoft.com/exchange.
3. View Microsoft's Support Webcast at http://support.microsoft.com/default.aspx?scid=/servicedesks/webcasts/wc110502/wcblurb110502.asp. This Webcast was presented by Nino Bilic, one of the most knowledgeable Exchange people I know!