总内存超出 Hyper-V 动态内存上的内存限制

总内存超出 Hyper-V 动态内存上的内存限制

我在 Hyper-V 上安装了 Centos 7 x86 的虚拟机(主机 RAM:64 GB),它具有以下内存参数:

  • 物理 RAM:4096 MB
  • 动态内存: 是的
  • 最小 RAM:512 MB
  • 最大 RAM:1048576 MB
  • 内存缓冲区:20%

我还在 grub.cfg 中指定了 5 GB 作为内存限制:linux16 *其他参数* mem=5G

但系统使用一段时间后,总内存开始超出此限制:

-bash-4.2# free
              total        used        free      shared  buff/cache   available
Mem:        5304420     3420732     1105012       15664      778676     1802444
Swap:       2113532      260916     1852616

-bash-4.2# dmidecode memory | awk '/^Memory Device$/{for (i = 0; i < 5; ++i) { getline }; if ($2 != "No") print $2 " " $3}'
3968 MB
128 MB

据我了解,这个限制不适用于动态内存......

如何限制动态内存,使总内存不超过5G?

笔记:我应该在虚拟机中严格限制它,而不是在 Hyper-V 设置中

答案1

在特定 VM 的 Hyper-V 设置中,设置:

最小和最大内存(两者)

记忆权重(介于高和低之间)

请注意它的内容:为虚拟内存指定较低的设置可能会阻止它在其他虚拟机运行且可用内存不足时启动。

这两个设置会影响您使用的内存量。您可以尝试将第一个设置设为 5 GB。

当您构建 VM 时,设置是自动的,因为 Hyper-V 会评估所有可用内存。

Hyper-V 内存分配

您可以看到内存分配并不完全精确。此外,在虚拟机环境(Hyper-V、VMware 等)中,虚拟机 App 负责内存管理(针对主机和客户机)。

相关内容