Every morning, when I come into work and login to my machine with 3GB of RAM running windows XP, I start waiting. Each application takes 30-40 seconds (literally!) to “come back to life” as I try to use it. Each one slowly swaps in.
What is going on? I’m only using 1GB of ram in my applications, with 2GB of free memory. I left the computer on, and idle. There are no background file scanners, background indexers, or other software running on the machine.
The answer is the Windows XP 1GB limit. It’s not in the documentation from Microsoft, but XP has a fundamental limit that it can’t use more than 1GB of RAM without swapping. It was designed in 1998 when the average computer had about 128MB of RAM. So, when memory use goes above 256MB of RAM, it automatically starts paging out, assuming you will soon run out of memory. Unfortunately, it does this without checking how much free RAM you have, which is the cause of this slowness.
A second issue is the IBM large-memory DRAM patent. The patent has a claim on software algorithms that concurrently access more than 1GB of data within any 24 hour period. To avoid paying royalties on this patent, Windows intentionally tries to not use the additional RAM in your system.
A 3rd reason my machine is slow in the morning is because of Microsoft’s energy-saving memory technology. It turns out that using fewer RAM slots in your system will significantly reduce the power consumption inside your PC. So the software is optimized to try to contain all the in-use memory to the first RAM slot. Unfortunately this leads to a fragmentation issue much like a disk that needs defragmenting; because it takes longer for the machine to lookup the larger RAM addresses than the lower ones.
Lastly, Microsoft tries to keep a significant amount of RAM free in case you try to run Microsoft Flight Simulator. Flight Simulator, being an early app to consume large amounts of memory, acquired an early license from IBM on the RAM patent when it was cheap, and also is a showcase of Microsoft Technology. So, it turns out that if you run Flight Simulator, it will startup extremely fast, and use the remaining RAM in my system. Unfortunately, I don’t play flight simulator, so I can’t access that memory.
There are probably other causes of the Windows XP 1GB limit. Anyone want to share?