SQL Server on 32 bit - The /3GB option

Peter Schmitz

Administrator
Staff member
In case you are running SQL Server on a 32 bit Operating System, you will by default only be able to have to allocate a maximum of 4GB of RAM, 2 GB of which will be reserved for the OS. In most cases, especially once the server gets busier, 2 GB might just not be enough to cut it, resulting in degrading performance as SQL Server will be forced to start paging.

To circumvent this problem, you can select to strip the OS of 1GB of its allocated Memory, which then will be available to other applications on the box. In our case, that ought to be SQL Server (I assume you would not load a 32 bit machine with both SQL Server and other heavy processes).

To achieve this, you will have to do the following:

Windows 2000 (Advanced Server or DataCenter Server) or Windows XP:
1. Ensure that you can see the boot.ini file in Windows Explorer, by clicking on Tools -> Folder Options -> View. If the "Hide protected operating system file (Recommended)" box is checked, uncheck it. When prompted, click "Yes".
2. In Windows Explorer, go to the system partition (typically C:).
3. Locate boot.ini, right-click it, and open the file with Notepad, or a similar editor program.
4. Find the line under [Operating systems] starting with "multi" (i.e. multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows 2000 Server" /fastdetect). At the end of the line with the running operating system, add "/3GB" (use a space between the /fastdetect and the new setting).
5. Save the changes, and reboot the server.

Windows Server 2003:
1. Righ-click "My computer", select "Properties", and navigate to the Advanced tab.
2. in the section "Startup and Recovery", click the button "Settings".
3. In the "System Startup" area, click eidt, which will launch an editor containing boot.ini.
4. Find the line under [Operating Systems] starting with "multi" (i.e. multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect). At the end of the line with the running operating system, add "/3GB" (use a space between the /fastdetect and the new setting).
5. Save the changes, and reboot the server.


Windows Vista, Windows 7, Window Server 2008:
In later versions of Winows (Windows Vista, Windows 7 or Windows 2008), there is no longer a boot.ini used by the OS. Instead, it will use a Boot Configuration Data (BCD) Store.
To add a "3 GB" setting to that, open up a Command Prompt Winow (Start -> Run -> CMD, or find it under Accessories in the Start Menu. You might have to run the Command Prompt as an Administrator, depending on your user rights), and the command-line program BCDEdit will be your way tool of choice. To release the extra 1 GB of memory and assign it to other processes, run rhe following command:

Code:
BCDEDIT /Set IncreaseUserVa 3072

A deeper technical explanation of the /3GB switch can be found here:
http://blogs.technet.com/b/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx
 
Top