How to use the /userva switch with the /3GB switch to tune the User-mode space to a value between 2 GB and 3 GB


You can use the /userva=xxxx switch for more precise tuning of user and kernel virtual memory space in the Windows Server 2003 family. Use this new switch with the /3GB switch in the Boot.ini file to tune the User-mode space to a value between 2 and 3 gigabytes (GB), with the difference (3,072 less
xxxx) being returned to Kernel mode. Note that
xxxx is expressed in megabytes (MB).

The following sample Boot.ini file demonstrates how to use the new switch to tune a computer to allocate 2,900 MB of User-mode virtual memory and 1,196 MB of Kernel-mode virtual memory. This increases the available kernel space by 172 MB:
[Boot Loader]
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows Server 2003" /fastdetect /3GB /Userva=2900

More Information

The /userva=xxxx switch is designed to allow for more precise tuning of User-mode address space for program manufacturers who require more than 2 GB of User-mode space but do not require all the space that is provided by the /3GB tuning switch alone.

Note Using only the /3GB switch allocates 1 GB to the kernel and 3 GB to the User-mode space.

Using this switch reduces the memory available in the following system pools:
  • Nonpaged Pool
  • Paged Pool
  • System Page Table Entries (PTEs)
If the memory reduction in the pools is too great in a specific server installation, the server or the applications may generate an error or appear to stop responding.

In Windows Server 2003, you can add a small amount of the additional 1 GB back to the operating system. By decreasing the amount of User-mode space that is typically allocated by the /3GB switch, Windows Server 2003 increases the available kernel memory address space. This additional Kernel-mode address space is held in reserve and is used as additional address space for PTEs if the system runs out of free PTE space. This address space is not allocated to PTEs until the system runs low on PTE space.

In order to accurately see PTE space, use the !VM command in the debugger.

Note In Microsoft Windows XP and in Windows Server 2003, you can use this command interactively with the current debuggers that are available on the Microsoft download site.

Note Microsoft Product Support Services strongly recommends using a range of memory for the /userva=xxxx switch that is within the range of 2900 to 3030. This range is wide enough to provide a pool of system PTEs that is large enough for all currently observed issues. Typically, a value of 2800 for the xxxx placeholder will provide close to the maximum available number of system PTEs possible. Values observered in production for the 2800 setting are usually in the 50,000 - 70,000 free system pages, more than enough for all installations. If the value is less that 24,000, you should reduce this value in 64 MB steps until values larger than 24,000 to 26,000 are observed. Smaller numbers in the userva switch result in larger allocations of system pages. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

894067 The Performance tool does not accurately show the available Free System Page Table entries in Windows Server 2003

To make sure of program stability and Windows stability, program manufacturers must test their programs thoroughly by using the described tuning techniques and must provide the /userva=xxxx number for their programs. To help in this testing, manufacturers can use the System Monitor tool to monitor virtual address consumption. To do this, add the Virtual Bytes counter for the program's process to obtain an accurate reading of the virtual space.

Note Microsoft Product Support Services (PSS) does not support arbitrary /userva settings; customers should add this setting to the Boot.ini file only per a manufacturer's recommendation.

For more information about the /3GB switch, click the following article numbers to view the articles in the Microsoft Knowledge Base:

171793 Information on application use of 4GT RAM tuning

189293 Enabling 4GT RAM tuning when you use Windows NT Server Enterprise Edition

Windows Server 2003 no longer limits the System Paged Pool to 160 MB on computers that have lots of memory. Because the Paged Pool is not limited, you may be able to free additional Kernel-mode address space to use as PTE space when the computer is running with the /3GB switch by limiting the size of the System Paged Pool.