Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Here is my system's configuration:

  • Windows 8 Developer Preview (32-bit)
  • 2 GB RAM
  • Nvidia GeForce 8400 M (w/ 256 MB RAM)

In order to run a memory-intensive application, I needed to increase the virtual address space from 2 GB to 3 GB. (Note that this has nothing to do with virtual memory - a completely different concept.)

What are some possible negative side effects of increasing the virtual address space by 1 GB? My guess is that Windows will cache fewer disk reads, use the pagefile more, etc. Is there anything more serious that I should worry about?

share|improve this question
Actually, virtual address space and virtual memory are precisely the same concept. You will be increasing the virtual memory available to each process from 2GB to 3GB. – David Schwartz Nov 13 '11 at 4:14
@DavidSchwartz: Well... I meant that increasing the size of the pagefile doesn't increase the virtual address space as I originally mistakenly assumed :P – Nathan Osman Nov 13 '11 at 4:33
That's correct. Due to the unfortunate fact that the page file size is the only UI-tunable thing in Windows virtual memory panel, people have come to confuse paging with virtual memory. Windows implements paging in its virtual memory system (as most modern OSes do, and hence why the tuning control is where it is), but as far as the concepts go, you can have either one without the other. – David Schwartz Nov 13 '11 at 4:38
up vote 6 down vote accepted

In the 32-bit versions your virtual address space is 4GB total; 2GB for User space, and 2GB for System. When you take 3GB for the User space, you only leave 1GB for the System space. This means it's twice as easy to exhaust the System address space, so you may run into kernel-level driver problems (things like disk controllers and other I/O).

I found this excellent article on TechNet that explains some of the pitfalls: "Memory Management - Demystifying /3GB"...

Here's an applicable blurb:

Remember that we only have a 4GB total address space to work with. If we have to allocate an additional 1GB of this address space to the user-mode space, then the System space is cut in half. Drivers, Heap, Paged & NonPaged Memory all have only half the resources to work with now. However, because of the way memory mapping works, cutting the kernel space in half does a lot more than just reducing the address space. Many of the structures within the kernel virtual memory space are cut back by far more than 50%. For example, we took a Windows Server 2003 Enterprise R2 machine with 1GB of RAM installed and compared some values with and without the /3GB switch enabled.

Default OS Build:

Free System PTE's: 251,980 (1,007,920 kb)

NonPaged Pool Max: 206,848 kb

With /3GB enabled:

Free System PTE's: 34,884 (139,536 kb)

NonPaged Pool Max: 129,312 kb

As you can see, the Free System PTE's drops by over 200,000. Keep in mind that this is only a test server that isn't under any sort of load. A machine under medium to heavy load could quite easily run out of free PTE's - meaning that the system can no longer map system pages such as I/O space, kernel stacks and memory descriptor lists. In addition, look at NonPaged Pool after the /3GB parameter is enabled.

share|improve this answer
What about allocating 2.5 GB to userspace applications? Would that lessen the strain on memory for the kernel? – Nathan Osman Nov 13 '11 at 4:02
That will get you less benefit at less cost. If the extra 512MB of virtual memory will make a big difference, then go for it. (Remember, the applications need to be coded to use the additional address space. And they must not contain any bugs that cause them to break when pointers appear the same as negative signed integers.) – David Schwartz Nov 13 '11 at 4:17
@DavidSchwartz: Right - the application I'm referring to does indeed take advantage of the extra address space. It's Lightworks. In fact - it wouldn't even run until I increased the virtual address space. – Nathan Osman Nov 13 '11 at 4:22
Did you know that 64-bit versions of Windows make a full 4GB of virtual address space available to 32-bit processes that are large address aware. See Microsoft's Memory Limits for Windows Releases. Switch to a 64-bit OS. – David Schwartz Nov 13 '11 at 4:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .