RAM is being under reported in Windows Task Manager?

I have a Windows Server 2008 R2 64bit SP1 machine with 16GB of RAM installed. If I open the task manager, it tell me that nearly all of the memory is full -- only it's not.

The Total is correct, but the Cached, Available, and Free totals don't seem to reflect the amount of RAM actually available on the server. What could be causing this?

Windows Task Manager misreports RAM usage

UPDATE Per @evan-anderson's suggestion, we loaded up RAMMap. It reports a ton of memory being sucked up by "Metafile".

Found a post that explains a fix via RAMMap. I did that and it seems to be slowly freeing up memory. However, it seems problematic to have to do this every couple of days.

Also found a server fault question about this issues and am considering @BeowulfNode42's solution


Solution 1:

The total of "Cached", "Available", and "Free" aren't ever going to add up to the "Total". Here's a good blog entry that describes these numbers in detail.

Task Manager is telling you that 88% of the physical RAM is occupied. You have some process (or combination of processes) that has allocated a significant amount of memory.

Solution 2:

If you can't track down which process is using this, I'd imagine that this server is likely running in Hyper-V or VMware ESXi (or KVM or Xen) and there is ballooning happening. In Hyper-V this is called Dynamic Memory. In the other products, it is called Ballooning.

What happens during ballooning is that the when the physical host is low on memory and other guests require it, then the host will "inflate" the balloon driver on underutilized hosts, which causes the balloon driver to appear to consume memory. This is done to ensure that it can safely redistribute that chunk of physical RAM to another guest. Check your host resource utilization and dynamic memory options. If you've overcommitted your RAM, this is almost certainly what is happening.