4

32 bit Windows XP has two well-known memory limits. Each process is limited to 2GB of memory (or 3GB if you change a setting). The maximum memory that Windows XP will use in total is 3.25GB.

There is no fundamental 4GB limit for memory in 32 bit operating systems - Windows Server 2003 can use more than 4GB. The key limit that defines a 32-bit system is per-process (the virtual address space for one particular application). This is the reason for the 2GB/3GB per-process limit in Windows XP, which is also shared by Windows 2003 Server.

I dual-boot, with 64-bit OpenSUSE 11.3 Linux and Windows XP. Linux is becoming my main operating system more and more over time, but I have too many Windows XP apps that I use regularly to just discard them.

What I want to know, therefore, is whether there is any way to get memory above 3.25GB into practical use in 32 bit Windows XP. The kinds of possibilities I have in mind are...

  • A way of making Windows XP behave more like Windows 2003 Server.
  • A way of replacing the hard disk cache handling in Windows XP with an alternative that can use extra memory.
  • A RAM disk that can use non-Windows memory.

Two possibilities that may be worth a mention, but which I will reject for the moment, are...

  • Use Windows 2003 Server 32 bit - license issues.
  • Use Reactos - still alpha, with significant issues, and I'm not sure if it can use more than 3.25GB memory anyway.

EDIT

In Joels answer, the final paragraph is...

If you have a lot of RAM (6Gb or more), I've also heard tales of people installing software that sets up a RAMDisk for the unused RAM and then placing the page file there.

If anyone knows where I can get suitable RAMDisk software, that is an answer I could accept. A normal RAMDisk isn't suitable because it will only use the memory that Windows manages, and therefore will more likely reduce the efficiency of the system and still leave the extra RAM unused.

15
  • There's no way to do this without modifying the kernel to support PAE, I believe. That's not for the faint of heart, although I think there are utilities that do this.
    – Shinrai
    Jun 2, 2011 at 18:51
  • You don't want to buy an Windows XP x64 or Windows 7 x64 license?
    – pcunite
    Jun 2, 2011 at 18:51
  • 1
    @Joel - I do have experience with the latter. It still has horrible driver and software support from vendors, which is the main reason the first sucked too.
    – Shinrai
    Jun 2, 2011 at 19:07
  • 1
    @Shinrai - not for all my old games, it won't. True - VirtualBox has 3D support these days, but it doesn't cope with everything. VirtualBox is certainly a good solution for many things, and I'd be using XP both for dual-booting and in a VM if it wasn't for the license/activation issue. As I can't do that without buying another license, for the moment, dual booting is the better option for my particular requirements.
    – user31438
    Jun 2, 2011 at 19:24
  • 1
    @user2284570 - That said, that's a very clever suggestion. I'm just nervous that there are likely to be compatibility issues (plus XP is gradually getting less important anyway - I still use it, but only as a second operating system for some old software).
    – user31438
    Apr 5, 2014 at 6:13

7 Answers 7

2

If you want to just set up a RAMDisk, as your edit indicates, I believe the application of the same name will perform as you want it.

RamDisk Plus 11 has a most unique feature. Our patent pending technology can access memory beyond the limitation imposed by a Windows 32-bit operating system! In other words, RamDisk Plus 11 can use "unmanaged" Windows' memory e.g. above 4GB. It can also use the stubbornly inaccessable memory between 3.2GB and 4GB.

See the product's help file for detailed explanation of what "unmanaged" memory is and how to access and use it with RamDisk Plus 11.

4
  • +1 and accepted - this is very interesting. Price seems high for a RAMDisk (only the "Plus" version supports memory above 4GB), but that doesn't mean "overpriced" given that rather neat trick. I don't know that I will actually buy this, but it's an interesting product and probably the best possible answer to my question.
    – user31438
    Jun 2, 2011 at 21:45
  • I'd just point out that I haven't tested it personally.
    – Shinrai
    Jun 2, 2011 at 22:33
  • @Steve314 - Out of curiosity, did you ever try this out? Just curious if it functions as advertised.
    – Shinrai
    Jul 8, 2011 at 18:07
  • not yet. I originally asked more from curiosity than from it being a priority. I have Win7 now, but with enough old-but-expensive software compatibility issues (Adobe Creative Suite CS2, for instance) that I'll be using XP for a while yet. For the moment (until I upgrade above 4GB) it's not that much unused memory anyway. Besides, depending on driver compatibility issues, I may just use a virtual machine.
    – user31438
    Jul 8, 2011 at 20:37
3

The 2GB/3GB limited you mentioned earlier is per process. You can have a lot more RAM in Windows XP, but only so much is available to each process. The actual system-wide limit in XP is 4GB, not 3.25GB. You can easily exceed 3.25GB RAM in 32bit XP by simply swapping in a video card with less RAM (you're probably running a 768MB card right now). Put an old 64Mb pci video card in and you'll likely find you get much closer to your 4GB maximum.

Exceeding the 4GB cap is harder. It requires playing addressing tricks of the sort that used to be required in the days of 16bit systems. I have heard tales that it's possible to break this barrier in 32bit XP, but it requires much more than a simple registry edit. IIRC, the limit is compiled into the operating system directly. To get around it, you have to find a specific .dll file from a 32bit Server 2003 machine and use it to replace the equivalent file on your Windows XP machine. For this to work, the file has to be modified so that XP won't reject it and you have to use volume shadow copy to get it to replace the existing file. I don't remember and can't find the link now for which file you need or how to modify it. After this is accomplished, you should be able to make the same settings to 32bit XP that you can to Server 2003 to allow the higher memory cap. Of course, such a change is highly unsupported and violates your license agreement.

If you have a lot of RAM (6Gb or more), I've also heard tales of people installing software that sets up a RAMDisk for the unused RAM and then placing the page file there.

12
  • I have a 512MB graphics card - that's 512MB of video RAM, completely separate from the system RAM. Linux quite happily uses the full currently installed 4GB system RAM, Windows XP only uses 3.25GB. "Playing tricks" is basically what I'm asking for, pre-packaged in a free or reasonably priced product - but it must be legal (no license violations, no stealing components from Windows Server). I know there's not a lot of point while I only have 4GB, but I'm likely to upgrade to 8GB soon, if only to get the dual-channel speed boost.
    – user31438
    Jun 2, 2011 at 19:13
  • 2
    @Steve - it's not possible to do legally. The only way to do this is to replace a core system file, and that's a license violation. Jun 2, 2011 at 19:14
  • 1
    Not to mention the trouble of getting drivers that won't freak out on you.
    – Shinrai
    Jun 2, 2011 at 19:27
  • 1
    XP used to support more than 4GB using PAE but they stopped because of 3rd party driver issues. See post by P.Brian.Mackey. The physical address pointers within the kernel are actually limited to 32 bits which prevents more than 4GB of physical address space from being used across the entire system. Jun 2, 2011 at 19:42
  • 3
    @Steve314 - It's pretty simple; the only way to do this in Windows XP is to edit the kernel. That's against the EULA.
    – Shinrai
    Jun 2, 2011 at 20:41
3

While 3.25 is not an official limit, 4GB is. That top 1GB or so can go to video memory and drivers. So going above 3.25 is possible. Above 4 is not possible on Windows XP by design. Many PAE driver issues were discovered that led up to this decision. The whole memory issue is discussed in depth on Microsoft.com.

Basically

The maximum amount of memory that can be supported on Windows XP Professional and Windows Server 2003 is also 4 GB. However, Windows Server 2003, Enterprise Edition supports 32 GB of physical RAM and Windows Server 2003, Datacenter Edition supports 64 GB of physical RAM using the PAE feature.

The virtual address space of processes and applications is still limited to 2 GB unless the /3GB switch is used in the Boot.ini file. When the physical RAM in the system exceeds 16 GB and the /3GB switch is used, the operating system will ignore the additional RAM until the /3GB switch is removed. This is because of the increased size of the kernel required to support more Page Table Entries. The assumption is made that the administrator would rather not lose the /3GB functionality silently and automatically; therefore, this requires the administrator to explicitly change this setting.

Also note that using non-certified drivers on Windows servers can result in problems related to PAE. Obviously, so will hacking past Microsoft defined limitations.

2

I'm running XP Pro SP3 on a 2.6ghz Core Duo machine with 4GB RAM.

I'm using that extra memory not available to XP for a ramdisk. I use a product called VSuite Ramdisk, from an outfit called Romex Software. VSuite is available in several different versions. The Free version does all I require. VSuite Ramdisk is here: http://www.romexsoftware.com/en-us/vsuite-ramdisk/index.html

When it's active, XP sees 763MB of RAM beyond the 3.3GB or so XP can access directly as a compressed NTFS volume identified as drive Z:

I'm testing beta versions of Mozilla Firefox, SeaMonkey, and Thunderbird, and I run those from the ramdisk. The stuff run from the ramdisk is stored as zip archives on the hard drive. I wrote batch files to unzip them to the ramdisk, and to update the zip files on the hard drive after any changes have been applied, which happens daily for things like nightly builds. (It proved faster to unzip from and zip to archives than to simply copy the files from the HD to the ramdisk and vice versa.) I run XP Pro, which includes Group Policy Editor, and I used it to associate the batch files as logon and logoff scripts.

The ramdisk is populated automatically when I boot up and log on, and changes are stored back to the HD when I log off, shutdown, or restart. It works quite well, and when Firefox is run from a ramdrive, and its profile is also on a ramdrive, things are gratifyingly quick. On my machine, Firefox 5/6/7 invoke in about 4 seconds with 85 extensions loaded. (The more extensi0ns you have installed, the longer FF takes, as it must enumerate and instantiate each installed addon. With no extensions loaded, I'd expect startup times on the order of two seconds.)

I also have Firefox set to store its disk cache on the ramdisk, outside of the profile, and do this routinely for any version, whether run from the HD or the ramdisk. It's a quick speedup. I do something similar under Linux by telling Firefox to put cache in /dev/shm. This is POSIX shared memory, and exists in RAM or swap, but not in the file system.

>Dennis

1
  • PAE has to be enabled in OS for this to work in VSuite Ramdisk (see Step 1 here).
    – user
    Apr 13, 2020 at 12:08
0

See the link here it appears that the answer for windows 7 (if it is unlocked etc) is 64GB of RAM. I do not belive that this is the case for winXP.

0

I don't believe there is a way to address above 3.25GB in XP without doing something that would greatly reduce stability.

If you are using OpenSUSE as your main OS, why are you concerned about XP using above 3.25GB? If you are using windows applications, why not install VirtualBox and run XP on top of OpenSUSE and have your Windows programs available without rebooting. You could set your VM Memory to 1-3GB (depending on total system RAM) and then dedicate it to programs that are not available on the Linux side...

2
  • Some games don't run so well in virtual machines. I don't need more than 3.25GB in Windows XP, but I would like to use that extra memory for something practical if possible.
    – user31438
    Jun 2, 2011 at 19:17
  • @DustinG. : What about this? Apr 4, 2014 at 19:12
0

The is nothing you can do to windows XP to use more than 3.845g of memory. The problem is not that its 32-bit OS, the problem lies within Win XP itself.

Windows 7 home can use up to 12g of ram and windows 7 ultimate can use up to 36g of memory.

Is there certain programs that your are using that require a 32-bit win xp OS? If not, have you considered upgrading to Win 7?

2
  • I already use a 64-bit O/S as my main O/S, as I pointed out in the question. I may buy Windows 7, or I may wait for Windows 8, but either is a low priority. Over time, I use Windows less and less, and that's only in very small part because Windows XP is obsolete. I don't really believe Linux is ready to be on every desktop (mainly because of driver hassles), but it works about as well for me as Windows 7 would, and I'm not even including cost. If I do buy a 64-bit Windows, it'll be for programming reasons - but a Mac may make more sense than Windows for phone apps, for example (iPhone).
    – user31438
    Jun 2, 2011 at 22:21
  • @Rob_IGS : What about this? You can obtain usbport.sys by downloading windows server 2003 service pack 2. Then extract SP2.cab which is in the cab format... Apr 4, 2014 at 19:11