I run a small Server 2012 R2 machine that functions primarily as a Hyper-V server. It has 12 GB of RAM. The guests do not use dynamic RAM. Today I had four guests running, consuming a total of 7.5GB of RAM. I wanted to start a fifth guest that would use an extra 1 GB. That would still leave 3.5 GB physical memory free to run the host OS, which should be more than enough. But starting the VM kept failing with the message “Not enough memory in the system to start the virtual machine” (Hyper-V-Worker event ID 3122).
Resource Monitor said there were 2.2 GB free, so why couldn’t I start a 1 GB virtual machine?
I searched around but couldn’t find a definitive answer. However one post mentioned Sysinternals RAMMap. That showed only 1.9 GB free, which should still have been enough. Just for fun, I started playing with the Empty menu:
Emptying the Standby List didn’t help, but after emptying the Working Sets, I was able to start the fifth virtual machine.
Unfortunately, when I restarted the host, it could not re-start all the guests. I had to manually Empty Working Sets again to get the fifth guest to start. So this is at best a workaround.