I have a problem with my Hyper-V-Guest, an SLES system, on a Windows 2016 Standard Host. In Hyper-V, I assigned 120000MB of memory to this machine. But if I type free -m in the SLES guest, I get the following output: total used free shared buffers cached Mem: 67961 2038 65923 219 11 807 -/+ buffers/cache: 1219 66742 Swap: 122879 0 122879 So only 66 GB RAM.

I tried turning on/off dynamic memory, NUMA, changed NUMA parameters, but no success. At one time, more memory was shown by free -m, but after a restart I had the same problem again.

On the Windows host, the memory is allocated, so if I start the VM (no other VMs on this host), I see 124/256 GB in use.

At the moment I am out of ideas.

Edit: I started an Ubuntu machine as guest with the same settings, and it shows the correct amount of RAM. I got the SLES VM as a vmWare Image, and converted the disk file to Hyper-V. I now upgraded the SLES system, which replaced the vmWare specific kernel with a plain one (if I saw that correctly), but the problem is still the same.


Sometimes posting a question on the internet gives some new ideas.

I found the following message in the Linux log:

dmesg | grep -i memory WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losng 51008MB of RAM

I do not know if Microsoft provides a faulty Hyper-V-BIOS, or if Linux is wrong here, or if it is a combination of both. The problem is that the MS-stack is up to date and I cannot upgrade the Linux kernel because the software running in the VM needs this version.

Workaround: instead of increasing the RAM, I reduced it to 40GB. This does not trigger the Linux error message. When I start the business application I want to run in the VM, Hyper-V dynamically assigns more memory (in my case up to 105GB) to the virtual machine without problems. Horray!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.