I have a 32-bit Windows server with 4 GB of RAM.

From reading various articles on the web, I reached the understanding that enabling the /3GB switch in boot.ini would mean that of my 4 GB of RAM, 3 could be allocated to user mode memory. Without the switch, only 2 GB would ever be used for user mode, with the system reserving the other 2 GB for kernel mode use.

However, this article by Mark Russinovich has made me think that my previous conclusion was wrong - all the /3GB switch does is allow processes to use 3 GB of their 4 GB address space instead of only 2GB.

Let's set up a couple of scenarios to illustrate how I think it works and when the switch would be useful:

1: a database server - one memory intensive process

Without the /3GB switch the database process will only be able to use 2 GB of memory. With the /3GB switch the process will be able to allocate up to 3 GB. The switch is useful in this scenario.

2: a server running 4 processes that each consume 750 MB of memory.

Using the /3GB switch will not bring any advantages - each process can already allocate all the memory that it needs and the system can hold all of the processes in physical memory already.

Am I right or wrong? If I'm wrong, how does the /3GB switch really effect physical memory usage?

  • 6
    Keep in mind that very few programs are able to use 3GB. It takes special compile options. So don't waste you time with this option unless the vendor explicitly mentions it. – Zoredache Aug 22 '11 at 14:59

The 3GB and PAE switches are independent and work on different things.

The 3GB switch - On x86 platforms programs receive a virtual memory space. They don't get actual memory addresses. This virtual memory space is divided up in to chunks for various purposes. Normally the first half (2GB) is reserved for the program's general use. The other half is reserved for other things (kernel memory commonly). TL/DR: This switch affects how the Virtual Address Space is sliced up.

The PAE switch - Original 80386 platforms could handle a maximum of 32bits of physical RAM; this is 4GB. To add more, Intel came up with 4 additional bits and called them Physical Address Extensions. As mentioned above, programs have no idea what physical memory looks like, they see a virtual address space. The OS however can use PAE to add more than 4GB of RAM (actually ~3.7GB because of the BIOS and memory mapped IO takes up space too). TL/DR: This switch affects how the OS addresses physical memory.

The above has been simplified slightly, things are never as simple as we'd like them to be.

  • So... "This switch affects how the Virtual Address Space is sliced up." -> Nothing to do with how physical RAM is sliced up..? – Brian Beckett Aug 23 '11 at 17:05
  • 1
    That would be correct, virtual addresses spaces have basically nothing to do with physical/hardware address spaces. – Chris S Aug 23 '11 at 19:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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