Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Someone installed the 32-bit version of MS SQL Server 2005 on a 64-bit OS with 16GB of RAM. Two instances of SQL Server are running, but each process is only using about 1.7GB of RAM. Combined, this equals about 3.2GB, or the hard limit of 32-bit applications.

I'm trying to figure out why each instance isn't using it's own 3.2GB max address space?

share|improve this question
    
Which edition of SQL Server 2005 do you have installed? –  mrdenny Mar 15 '11 at 5:07

2 Answers 2

up vote 3 down vote accepted

SQL Server will use more RAM depending on load. Maybe the load these instances are under is insufficient to drive more memory use? Or maybe someone has set a maximum memory limit within the instances?

I'm trying to figure out why each instance isn't using it's own 3.2GB max address space?

Firstly there is no 3.2GB memory limit for any processes on Windows. Process memory address space is not limited by hardware RAM limits (which a figure like 3.2GB sounds more like: details of hardware, including devices needing memory mapped IO, take from the basic 4GB limit).

The maximum available address space for a 32bit process in Windows depends on three things: the host's bitness, the "/3G" boot.ini flag1 and whether the executable has been built with the "Large Addresse Aware" flag (SQL Server 2008 certainly has based on a quick check here):

  • If the exe is not build with Large Address Aware flag: 2GB
  • If the exe is built with the large address aware flag
    • On a 32bit OS without any boot.ini flag: 2GB
    • On a 32bit OS with /3G: 3GB
    • On a 64bit OS: 4GB

In your case: each 32bit SQL Server instance can use 4GB of address space if it needs it and is not otherwise limited.


1Depending on the option switch this can be set to various values between 2GB and 3GB, but that just changes that one case.

share|improve this answer
    
I think the limit is 8TB (not GB) on 64bit operating systems: msdn.microsoft.com/en-us/library/aa366778%28v=vs.85%29.aspx –  Joel Coel Mar 25 '11 at 18:29
    
@JoelCoel: This is about 32bit processes. –  Richard Mar 25 '11 at 22:54

Each 32 bit process under windows 64 bit should be able to access 4GB of ram (64 bit windows doesn't divide up the address space for user and kernal since kernal is 64 bit) . See how-do-i-tell-if-my-windows-server-is-swapping For more details on windows memory.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.