Us software developers are in a perpetual dire state for more RAM. We can never get enough of it. As soon as we plug in new RAM module, the usual suspects - Visual Studio, SQL Server/Management Studio, ASP.NET runtime hosts, Outlook, Virtual Server/Virtual PC, browsers - swifty scoop up every new bead of rice available and say, "thank you, can I now have a second helping." Heck, even the combined memory consumption of three IMs I run (MSN Messenger, Skype, GTalk) can peak close to 100MB.
It should not be too wild a prediction to state that 32-bit computing will still persist for a long time, even for software developers. How soon do you think companies will invest in 64-bit workstations for employees?. That means, 32-bit machines (your PC and mine) will be limited to at most 4GB of RAM in the years to come, and supposing the laptops issued to us can even accept 4GB.
But you know what, it is actually tougher than that. Because we have less than 4GB of memory available, thanks to some bright idea on how to design the x86 architecture, hardware devices have their addresses mapped to the high-end range of the same exact address space used to designate physical RAM locations. That causes the top range of RAM to simply disappear without a trace. Wow. I read that article just two weeks too late. To my shock and horror, I saw the reality confirmed with my home-based Dell Poweredge SC430, which was earlier topped up to 4GB. Windows reported 3.63GB available. I am supposedly one of the "lucky" ones to make it to that amount; other reports have claimed as low as 3.2GB.
In the following weeks I started looking around for more information on PAE - Physical Adression Extension - the technology that allows the additional memory to be mapped beyond the 4GB range. This is the implementation that allows industrial-strength servers address in excess of 8-64GB of RAM. Unfortunately to my despair, PAE is a "takes two hands to clap" technology - the motherboard must properly support 36-bit memory addressing as per Intel specifications, and the operating system must be specficially written to take advantage of PAE.
The OS that I ran on this server was Windows Server 2003 Standard. While it seems to show PAE is enabled (implicitly activated with DEP), the full 4GB is not available. Conflicting reports all around the Internet make it difficult to ascertain if Win2003 Standard indeed can reclaim the hidden RAM, but in the end I concluded with the following documents
Operating Systems and PAE Support
Physical Address Extension - PAE Memory and Windows
that Win2003 Standard is indeed, as others have claimed, limited to address a max physical range of 4GB. Even if the motherboard maps the remaining memory above 4GB and makes it available, it does not bother to see it.
The alternative then is to upgrade to Enterprise edition. This being a development server, I already had many setups running on top of it, so it took me a fair bit of preparation to backup as well as properly slipstream SP2 (which just came out back then) in order to upgrade from SP1. The eventual upgrade was relatively smooth (only real problem was IE7 reverting back to IE6 after upgrade), but the core issue driving all these activities maintained status quo. 3.62GB RAM still.
Remember me mentioning "two hands to clap"? It turns out that Dell's budget SC range did in fact go for the budget way of addressing - only 32bits. The extra 4 bits are not taken care of.
Dell systems with 4GB of memory show less memory in Microsoft® Windows®.
Why does my operating system display less than the 4GB of memory I have installed on my system?
The moral of the story? If you want to use 4GB of RAM, make sure your OS and motherboard support 8GB. The irony.