Recently I was working a case with a customer who was running Windows Server 2008 with 160 GB of physical RAM installed. Problem was, about half of the memory was missing in Windows. In Task Manager we could only see 80 GB as being available, but it did show the full 160 GB installed. The customer was running SQL on the server, so my initial thought was that perhaps it was configured with a large amount of RAM reserved. However, checking the SQL configuration showed that it was set to the default. I then reopened Task Manager and selected Resource Monitor. Under the Resource Monitor, we observed that Hardware Reserved was showing as 80 GB. This would certainly explain what was going on with the missing memory, but not why a machine would have such a large amount reserved for hardware.
Here is the screenshot of what Resource Monitor would look like on an average server. Note the amount of Hardware Reserved memory:
Now that we had a clue that the issue might revolve around hardware, it was not terribly difficult to discover what was going on. First, we need to understand a setting that you might see on some server hardware, called Redundant Memory, or RAS Memory Mirroring.
Memory mirroring is implemented in the system BIOS, and allows the system to maintain a mirrored copy of the data in memory, similar to the way RAID works in the storage world. When an administrator enables this feature, banks 1 and 2 are configured as mirrored copies of each other. One bank is the primary copy while the other bank is the secondary copy. When data is written to memory, it is written to both banks. However, on a memory read, data is read back from the primary copy. If an uncorrectable error is detected on the read operation, the BIOS switches the primary and secondary banks. The system then reads from the new primary bank. A Lost Memory Redundancy Event is logged in the System event log.
The impact of having this feature enabled is that half of the installed memory is not available to the system at any one time. In return, the system can benefit from protection against uncorrectable memory errors that might otherwise result in unexpected system downtime and possibly data loss.
In this case, the customer was not concerned about this type of fault tolerance,so we booted into the BIOS and disabled the Redundant Memory feature.
Once this was done, the customer had the full use of his installed memory and the mystery was solved.