# Windows 32-bit.  Memory size limits, with virtual memory and pagefile



## lemonadesoda (May 29, 2008)

OK, so we know that Win 32-bit normally uses only 2GB. With the /3GB switch, it can use 3GB. The address space is limited to 4GB in Win32, but the range 3-4GB is typically not available since this is the i/o area (memory mapping for BIOS, PCIe, PCI, AGP devices, etc), unless you have a mainboard that can do shadow memory swapping, the 3-4GB area (and physical RAM id you bought it), is lost.

So the questions are:

Q1. What happens if you are fully loaded with memory and you extend the Virtual Memory (Pagefile.sys). Are you still stuck with the 32-bit address boundary, ie. 4GB? Or does memory break the 4GB boundary (albeit limited to 3GB for any ONE application).

Q2. If adding a SSD or RAMDISK (ala gigabate i-RAM), are we able to use this effectively as a swapdrive for pagefile, as an extremely fast virtual memory area, or, will it add no value, since Win32 cant use it?  That would therefore leave the SSD and RAMDISK for temp files, (some speedup), but not for virtual memory performance gains.

Please no answers about /PAE. I'm not interested in Datacentre and Enterprise versions of Windows. http://support.microsoft.com/kb/283037


----------



## Darknova (May 29, 2008)

1. I have always been under the impression that virtual memory does not in fact contribute to system memory, as I have in the past run with 6-8Gb of memory seen in Task manager on XP x86.

I thought that Virtual Memory was more like a backup pool that Windows used to off-load stuff it didn't have space for in it's main memory.

Could be wrong though.

2. No idea.


----------



## lemonadesoda (May 30, 2008)

OK. Seems like I'm still learning about Win architecture.

http://support.microsoft.com/?kbid=294418
http://members.shaw.ca/bsanders/WindowsGeneralWeb/RAMVirtualMemoryPageFileEtc.htm

So, virtual memory is limited to 4GB.  It is the maximum amount of memory that can be "operating" at one time.  It is typically 2GB for the kernel and 2GB max for a single application.
Whether you have 1GB, 2GB, 3GB or 4GB of physical RAM, the "virtual memory" cannot be more than 4GB.  The only difference between "virtual" and system memory is that "virtual" can be more than system by using disk space.

I think there is a big terminology comfusion (and inconsistency) with the term "virtual memory". Be careful when using it, or interpretting comments, because its meaning seems to change between virtual memory as described by http://support.microsoft.com/?kbid=294418, and paged memory, as in pagefile.sys

The pagefile is something else. Firstly, it makes up any gap between physical RAM and the virtual RAM. It also allows MULTIPLE virtual memories. This means that even though ONE application is limited to 2GB, it is possible to run multiple applications, each with a max of 2GB.

If you are multitasking, then a bigger pagefile lets you do more. If you run only ONE application, and have 4GB of system ram, then the pagefile does NOTHING for you. (That one application).

There are two switches we often hear about. The /3GB and /PAE.  The /3GB switch lets you have an application space as big as 3GB, but it reduces the kernel from 2GB to 1GB. For single application uses, like desktop photoshop etc, it is a help. For multitasking, esp. server services like terminal services, it is a disaster. The smaller 1GB kernel will half the number of connections it can manage.  The /PAE switch allows the use of additional paged addressing, so that system memory can be bigger. However, that SAME 2GB kernel, 2GB application limit exists. It just that now, additional 2GB applications can reside in physical memory rather than on the pagefile.

So, the best answers I can give to my original questions are:

Q1. A= Yes, still stuck with 4GB boundary. Actually, 2GB kernel and 2GB application, unless using /3GB.

Q2. A= Yes and no. It will not impact a single application in any way. But it multitasking and SWAPPING from one application to another that would hit the HDD pagefile, then yes, you will get a speedup in the SWITCHING TASK. But once the app is loaded, there are no performance gains.  Adding a SSD or iRAM drive is EQUIVALENT to having more system RAM and using the /PAE switch.  But the system RAM approach is faster.

Conclusion: dont use SSD or iRAM for pagefile. Add additional RAM and use /PAE.

To beat the 2GB/4GB boundary, the only solution is to go 64-bit.


----------



## niko084 (May 30, 2008)

You want to use /PAE switch in your boot.ini, that will give you the most performance gain under a 32bit os for most users.

***Looked above***
Lemonadesoda pretty much laid it out for ya pretty well.


----------



## Darknova (May 30, 2008)

Conclusion:

F*** it and go 64-bit


----------

