Do I Need to Add the /3GB Switch to a 64-bit Windows Server?

Posted on July 3, 2009 by Daniel Petri in Exchange Server with 0 Comments

Recently I’ve stumbled upon a question regarding the usage of the /3GB switch on a 64-bit version of Windows Server 2003. But before I answer that question, let me give you a brief overview of what the /3GB switch is used for.

Windows Server 2003 includes support for a startup switch (entered in the Boot.ini file) that lets you tune the allocation of use of memory and memory address space. In Windows Server 2003, and regardless of the amount of physical memory that is installed on your system, the operating system uses a virtual address space of 4 GB. Out of that amount, 2 GB is allocated to user-mode processes (for example, applications and services) and 2 GB is allocated to kernel-mode processes (for example, the operating system and kernel-mode drivers). On systems that have more than 1 GB of physical memory, this startup switch can be used to allocate more memory to applications (3 GB) and less memory to the operating system (1 GB).

The most significant product that benefits from this switch is Exchange Server. This additional virtual address space helps reduce the amount of memory fragmentation in the virtual address space of the Exchange Information Store process.

The /3GB switch is used to effect this allocation change. The switch is entered in the system’s Boot.ini file and takes effect after a restart.

The /3GB switch is supported only on the following operating systems (note that the /3GB switch was first added to Windows NT 4.0 Server Enterprise Edition):

  • Windows 2000 Advanced Server
  • Windows 2000 Datacenter Server
  • Windows Server 2003 Standard Edition
  • Windows Server 2003 Enterprise Edition
  • Windows Server 2003 Datacenter Edition

Note: On Windows Vista and later versions of Windows, use the IncreaseUserVA element in BCDEdit.

When talking about /3GB in Exchange Server, it’s also worth reminding you of the /USERVA=3030 switch. The /USERVA switch’s purpose is to provide a finer level of control over the division of virtual address space between user-mode processes and kernel-mode processes. When used on Exchange Server 2003 systems, /USERVA should always equal 3030. This value causes an additional 40 MB to be allocated to the operating system, and enables you to add more users without consuming all available system resources. See links below for a full description of this switch.

With the /USERVA switch, you can customize how the memory is allocated when you use the /3GB switch. The number following /USERVA= is the amount of memory in MB that will be allocated to each process. If you set /3GB /USERVA=3030, this reserves 3,030 MB of memory to the process space, as compared to 3,072 MB when you use the /3GB switch alone. The extra 42 MB that are saved is used to increase the kernel memory space, free system page table entries (PTEs). The PTE memory pool is increased by the difference between 3 GB (specified by the /3GB switch) and the value that is assigned to the /USERVA switch.

See links below for a full description of this switch.

Do I need to edit the Boot.ini? Is my Exchange system optimized for memory usage?

To quickly answer these questions you can run the Exchange Best Practice Analyzer, a must have free tool from Microsoft, that will not only scan your system for memory issues, but also recommend other various “best practice” procedures you should perform in order to tune your Exchange server. It will programmatically collects settings and values from data repositories such as Active Directory, registry, metabase and performance monitor. Once collected, a set of comprehensive “best practice” rules are applied to the topology.

Download details: Exchange Best Practices Analyzer:



Do I need to add more than 4GB of RAM to my Exchange 2003 server?

Exchange Server uses the /3GB switch as it scales up, the Exchange Server computer cannot efficiently use more than 4 GB of RAM. Because eExchange Server does not support instancing, Physical Address Extension (PAE), or Address Windowing Extensions (AWE), 4 GB of RAM is the maximum amount of memory that an Exchange Server computer can efficiently use.

So, going back to the original question – Do I need to use the /3GB switch on a 64-bit Windows Server 2003 machine?

The answer is no.

64-bit versions of Windows do not support the use of the /3GB switch in the boot options. Therefore, a 64-bit pointer could address up to 16 exabytes. 64-bit versions of Windows have currently implemented up to 16 terabytes of address space. (Needless to say, but I’ll say it anyway, in any case, Exchange Server 2003 cannot be run on a Windows Server 2003 64-bit operating system, and Exchange Server 2007 is not supported on 32-bit versions of Windows Server 2003/2008).

Here is a table that summarizes these differences:

Architectural component

64-bit Windows

32-bit Windows

Virtual memory

16 terabytes

4 GB

Paging file size

256 terabytes

16 terabytes


8 GB

4 MB

Paged pool

128 GB

470 MB

Non-paged pool

128 GB

256 MB

System cache

1 terabyte

1 GB

System PTEs

128 GB

660 MB


Use of the /3GB switch in Exchange Server 2003 on a Windows Server 2003-based system:

Using the /Userva switch on Windows Server 2003-based computers that are running Exchange Server:

Ask the Performance Team : Memory Management 101:

Ask the Performance Team : Memory Management – Demystifying /3GB:

How to Set the /3GB Startup Switch in Windows:

How to Set the /USERVA Startup Switch in Windows:

How to optimize memory usage in Exchange Server 2003:

How to troubleshoot virtual memory fragmentation in Exchange Server 2003 and Exchange 2000 Server:

Comparison of 32-bit and 64-bit memory architecture for 64-bit editions of Windows XP and Windows Server 2003: