DaveWentzel.com            All Things Data

Large Memory Support


PAE and 3GB Switches and Everything You Need to Know About Large Memory Support
The AWE API is based on Intel's PAE, which allows Windows to simulate 36-bit memory addressing.  This allows apps that are AWE-aware to scale memory up to 64GB RAM. 
The AWE mechanism allocates physical memory and maps it to the given process's virtual address space (VAS).  Once it is allocated, the os cannot reclaim it until either the process is terminated or the process frees memory back to the os itself.  An app can control and even avoid paging altogether for memory allocated by using AWE.  However, it still has mapping overhead.  And, the relational engine can only use AWE-mapped memory for the data buffer cache and not for things like the procedure cache, log cache, cursors, hash memory, connection memory, or lock memory. 
Here is some additional information:
/3GB and /PAE
Whether /3GB and /PAE should be used at the same time has been an issue of much contention. We've actually gone through that debate not too long a ago with some Microsoft folks arguing for using /3GB and /PAE together (for machines with 8GB of RAM), but with some other Microsoft folks recommending otherwise. My search for the ultimate truth didn't really yield anything that was clear cut. The concern with /3GB is that, since the option leaves 1GB for the kernel, that amount 9as compared to the default of 2GB) might not be enough if you happen to have a lot of RAM and the OS needs more memory in order to manage more memory. Now, whether 8GB was large enough to be a concern was the point of contention. If you have over 16GB (or some say 12GB) of RAM, all would agree that you shouldn't use /3GB.


The situation gets even trickier if you are so lucky as to run into mysterious server crashes, and somebody happens to have read something and starts to point fingers to /3GB. In that case, since it's hard in most cases to clearly show the performance benefits of enabling /3GB, it's the first option to get sacrificed.
If you are running out of MemToleave memory (and this must be in the first 2 or 3 GB of VAS, then you are starving the OS.  You must test your configuration and application thoroughly. 


For an 8GB box, my personal preference is leave /3GB in if I don't have any idea of the workloads. But we did turn off /3GB during the process of troubleshooting a server that had stability problem, and nobody wanted to be the one suggesting to turn /3GB back. Since nobody was complaining about performance, why bother?
As per MS support and MVPs, you should not use /3gb if you have >12 GB memory.
It is up to you if you want to give 1gb extra to SQL, then use /3gb when you have <12 gb memory.
AWE and 16GB memory
In order for AWE to use the memory range above 16GB you need to be sure that the /3GB parameter is not in the BOOT.ini.  If it is, the os cannot address any memory above 16GB. 

Add new comment