Here is an update. The information below comes from a Microsoft Senior Support rep for Windows Server 2003. I received this information after speaking with 4 MS support reps, none of which fully understood /3GB, PAE and AWE. I hope this information helps someone.
/3gb switch is a combination of physical and paged memory, it simply allows an /3gb aware application to allocate up to 3GB of virtual memory.
If you want to dedicate chunks of physical memory, increase the physical memory and use /PAE and configure SQL to use AWE memory
If you are running Windows Server 2003 Standard Edition, you are not able to increase physical memory above 4GB at this time.
With that limitation, IF you need more than 2 GB of memory, then the /3gb switch is the only option.
With the 3GB switch, use the /userva=2950 to give some of the memory back to the kernel memory, specifically to the Free System Page table entries.
Since /3GB reduces kernel address space by 1 GB, it is always advisable to change this configuration only if there is evidence of memory pressure. We always advice our customers to test the memory configuration changes to see what works best for their environment.
The following are some of the most common errors we see reported in the SQL error log which might indicate either MemToLeave or Bpool memory pressure.
WARNING: Clearing procedure cache to free contiguous memory
WARNING: Failed to [reserve | commit] contiguous memory
Error 17802/Unable to spawn xxx thread
Error 701 - There is insufficient system memory to run this query
Error 7399 - OLE DB provider <

rovider> reported an error. The provider ran out of memory.
Error 8645 - A time out occurred while waiting for memory resources to execute the query. Rerun the query
Error 8651 - Could not perform the requested operation because the minimum query memory is not available. Decrease the configured value for the 'min memory per query' server configuration option.
Error 8902 - Memory allocation error during DBCC processing.
The following two articles explain various memory options in great detail which might be helpful:
Inside SQL Server 2000's Memory Management Facilities:
<
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqldev/html/sqldev_01262004.asp> How to configure memory for more than 2 GB in SQL Server:
<
http://support.microsoft.com/default.aspx?scid=KB;%5bLN%5d;274750> Important Notes:
/3GB vs. AWE (from Inside SQL Server 2000's Memory Management Facilities article)
The ability to increase the private process address space by as much as 50 percent via application memory tuning is certainly a handy and welcome enhancement to Windows memory management facilities; however, the Windows AWE facility is far more flexible and scalable. As I said earlier, when you increase the private process address space by a gigabyte, that gigabyte comes from the kernel mode address space, which shrinks from 2GB to 1GB. Since the kernel mode code is already cramped for space even when it has the full 2GB to work with, shrinking this space means that certain internal kernel structures must also shrink. Chief among these is the table Windows uses to manage the physical memory in the machine. When you shrink the kernel mode partition to 1GB, you limit the size of this table such that it can manage a maximum of only 16GB of physical memory. For example, if you're running under Windows 2000 Data Center on a machine with 64GB of physical memory and you boot with the /3GB option, you'll be able to access only 25 percent of the machine's RAM-the remaining 48GB will not be usable by the operating system or applications. AWE also allows you to access far more memory than /3GB does.
Obviously, you get just one additional gigabyte of private process space via /3GB. This additional space is made available to applications that are large-address aware automatically and transparently, but it is limited to just 1GB. AWE, by contrast, can make the entirety of the physical RAM that's available to the operating system available to an application provided the application has been coded to make use of the AWE Win32 API functions. So, while AWE is more trouble to use and access, it's far more flexible and open-ended.
This isn't to say that there aren't situations where /3GB is preferable to AWE-there certainly are. For example, if you need more space for memory allocations that cannot reside in AWE memory (thread stacks, lock memory, procedure plans), you may find that /3GB is a better fit.
Windows 2000 Advanced Server or Windows 2000 Datacenter or Windows Server 2003 The maximum amount of physical memory addressable by a 32-bit addressing mode is 4 GB. All processors based on the IA-32 architecture that begin with the Intel Pentium Pro, support a new 36-bit physical addressing mode known as Physical Address Extension (PAE). PAE allows up to 8 GB of physical memory on Windows 2000 Advanced Server and up to 32 GB of physical memory on Windows 2000 Datacenter Server. This is because the tested memory limit on Windows 2000 Datacenter Server is 32 GB. The PAE mode kernel requires an Intel architecture processor, Pentium Pro, or later and either Windows 2000 Advanced Server or Windows 2000 Datacenter.
For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
268230 <
http://support.microsoft.com/kb/268230> Scaling out versus scaling up with Intel Physical Addressing Extensions (PAE)
SQL Server 2000
· Both SQL Server 2000 Enterprise and SQL Server 2000 Developer Editions can use the PAE and AWE.
· The PAE use requires Windows 2000 Advanced Server or Windows 2000 Datacenter or Windows Server 2003.
· To allow AWE to use the memory range above 16 GB on Windows 2000 Data Center, make sure that the /3GB switch is not in the Boot.ini file. If the /3GB switch is in the Boot.ini file, Windows 2000 may not be able to address any memory above 16 GB correctly.
· Windows NT 4.0 Enterprise Edition does not support the AWE memory architecture model so AWE support is not available.
SQL 7.0
· AWE isn#%92t supported in SQL 7.0
· SQL Server 7.0 Enterprise edition can use /3GB
· The extended memory option in SQL Server 7.0 is not available on Windows 2000 Advanced Server or Windows Datacenter.
About 3GB (4 GT) (from
http://support.microsoft.com/kb/171793):
User-mode Address Selection: When 4GT is enabled, the highest bit of a virtual address cannot be used to differentiate user-mode addresses from kernel-mode addresses.
Memory Allocation Issues: Some dynamic link library (DLL) files load near the 2 GB boundary; therefore, there is a region of the 2 GB space in which contiguous memory cannot be allocated using VirtualAlloc.
Effects Visible in Kernel Mode: Kernel-mode code can no longer assume the
user/kernel boundary is at 0x80000000 or at any other number. Code that uses
ProbeForRead or ProbeForWrite macros must be rebuilt using new headers that no longer contain assumptions about kernel space starting at 0x80000000.
If you restart with the 3 GB switch, also known as "4 Gig tuning," the amount of non-paged pool is reduced to 128 MB from 256 MB.
From
http://support.microsoft.com/kb/247904/EN-US/The two types of data that share a portion of this 2 GB address area are Paged Pool allocations, and kernel stack allocations. If the operating system runs out of space in one of those areas, the other area cannot donate space to it, and programs may begin to encounter unexpected errors. Therefore, when you encounter a Windows 2000-based computer that is experiencing unexpected errors or an inability to accept new logins, and the computer does not have some other resource limitation such as Central Processing Unit (CPU) or disk bottlenecks, it is highly likely that the Paged Pool or System PTE areas are becoming low on disk space. Because, by default, the System PTE area is sized to be as large as possible on a computer with Terminal Services enabled, the limitation will usually be due to insufficient Paged Pool address space. In this case, 3GB will not be a good idea.