Hyper-V RAM Limitations
Wednesday 13th March, 2019 11:31 Comments: 0
I try to like Microsoft's products, but in recent years I keep stumbling upon bugs and limitations that I wouldn't have expected from them in the past.
I first stumbled upon the standby memory issue when gaming, as it caused the occasional stutter. After some searching I stumbled onto some NVIDIA forum posts that essentially blame Windows 10's memory management and it recommended using EmptyStandbyList.exe to empty the list to prevent stutters. I still have this configured to run every 5 minutes as a Scheduled Task and I've not noticed any stutters since then.
I'd previously been running some VMs on Hyper-V under Server 2012 without any trouble, even when I temporarily spun up some additional VMs. I recently migrated those VMs to a new Server 2019 installation to play around with. All was well until I tried to spin up a new Server 2016 VM and received the error "Not enough memory in the system to start the virtual machine". The odd thing was I had about 2GB free and was trying to started a 1GB VM. I knocked it down to 768MB and the VM started. Unfortunately I forgot to add a second CPU (running Server 2016 with a single CPU seems to result in terrible performance) so I shut down the VM and added an extra virtual CPU and then tried to start the VM. I got the error again. I nudged the RAM down even further to 512MB, and it launched, but apparently that's not enough RAM, especially when I was trying to install the Desktop Experience version so I could more easily install SQL Server 2016 SP1 afterwards. Server 2019 has the same limitations, which isn't a surprise as 2019 is essentially a rebadged 2016 (even the Domain Functional Level remains 2016).
I used ProcessHacker to free up some "standby" RAM so I could bump up the RAM on the VM, but I suspect EmptyStandbyList.exe would have done the trick too. I shouldn't have to use third party tools as workarounds to free up unused RAM in order to start Hyper-V VMs though. Standby memory also shouldn't be causing issues with gaming on Windows 10, but let's not digress (I just noticed that I'd moved the binary and it'd been failing to run the task for a few months now so maybe Microsoft or NVIDIA have worked around it?).
In the end I used a more expensive workaround and filled the remaining two slots in the motherboard with a brand new pair of RAM modules, doubling the amount of RAM in the 2019 host.
I first stumbled upon the standby memory issue when gaming, as it caused the occasional stutter. After some searching I stumbled onto some NVIDIA forum posts that essentially blame Windows 10's memory management and it recommended using EmptyStandbyList.exe to empty the list to prevent stutters. I still have this configured to run every 5 minutes as a Scheduled Task and I've not noticed any stutters since then.
I'd previously been running some VMs on Hyper-V under Server 2012 without any trouble, even when I temporarily spun up some additional VMs. I recently migrated those VMs to a new Server 2019 installation to play around with. All was well until I tried to spin up a new Server 2016 VM and received the error "Not enough memory in the system to start the virtual machine". The odd thing was I had about 2GB free and was trying to started a 1GB VM. I knocked it down to 768MB and the VM started. Unfortunately I forgot to add a second CPU (running Server 2016 with a single CPU seems to result in terrible performance) so I shut down the VM and added an extra virtual CPU and then tried to start the VM. I got the error again. I nudged the RAM down even further to 512MB, and it launched, but apparently that's not enough RAM, especially when I was trying to install the Desktop Experience version so I could more easily install SQL Server 2016 SP1 afterwards. Server 2019 has the same limitations, which isn't a surprise as 2019 is essentially a rebadged 2016 (even the Domain Functional Level remains 2016).
I used ProcessHacker to free up some "standby" RAM so I could bump up the RAM on the VM, but I suspect EmptyStandbyList.exe would have done the trick too. I shouldn't have to use third party tools as workarounds to free up unused RAM in order to start Hyper-V VMs though. Standby memory also shouldn't be causing issues with gaming on Windows 10, but let's not digress (I just noticed that I'd moved the binary and it'd been failing to run the task for a few months now so maybe Microsoft or NVIDIA have worked around it?).
In the end I used a more expensive workaround and filled the remaining two slots in the motherboard with a brand new pair of RAM modules, doubling the amount of RAM in the 2019 host.