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.