Wednesday, February 23, 2011

Tuning 32-Bit Systems

The 2GB process limitation on 32-bit systems became a limiting factor long before 64-bit was ready for widespread adoption, so something needed to be done to take advantage of all the extra physical memory that hardware manufacturers were able to build systems with.

The different ways you can configure 32-bit Windows to use more than 4GB of RAM and SQL Server to use more than the 2GB process limitation, along with the benefits and inevitable side effects that are very often overlooked. Note that this is only applicable to
32-bit systems.

/3GB and increaseUserVA

The first technique that can be employed to increase the SQL Server process address space is to reduce the amount of kernel mode address space from 2GB to 1GB, which leaves 3GB for the user mode address space. This is implemented by using the /3GB switch,/3GB needs to be added to the OS entry in boot.ini if you’re running Windows Server 2003 or earlier. To perform the equivalent operation on Windows Server 2008, you need to edit the Boot Configuration Data using BCDEdit from a command prompt using the following switch:

Once you add /3GB and reboot, each process will have 3GB of address space instead of just 2GB, and the kernel mode address space will be reduced to 1GB. You can see this
illustrated in Figure 2-4.To be able to address the extra 1GB,your application has to have been linked with the /LARGEADDRESSAWARE flag. Thankfully, SQL Server has been linked with the appropriate
flag, so you don’t need to do anything else and 3GB will be available immediately.

The downside to this configuration is the implication for consumers of the now reduced kernel mode address space specifically, nonpaged pool, paged pool, and system PTEs.

No comments:

Post a Comment