Esxi 主机:可接受的内存过量使用

Esxi 主机:可接受的内存过量使用

我可以将主机的物理内存分配给客户机多少?

例子:

主机物理内存:10 GB

例如,将 2GB 虚拟内存分配给 7 台机器,总共 14GB,这可以接受吗? 我可以过度使用多少内存才能确保膨胀和其他主机内存释放技术正常工作?

答案1

这基本上取决于虚拟机及其内存使用情况。ESXi 采用了许多技术,允许为客户机过度分配内存:

1.内存压缩缓存

一段时间内处于非活动状态的内存页面将被压缩,并在请求时解压并提供,而不是交换到磁盘或膨胀。页面压缩具有可配置的上限,默认情况下设置为客户机分配内存的 10%,根据以下数据,您可以粗略估计在实际场景中使用压缩缓存时性能会下降 6%这份 VMWare 白皮书

2. 页面分享

发现不同客户机的虚拟内存页面包含相同的信息,这些虚拟内存页面被引用到同一个物理内存页面。这是一个异步操作,会定期释放重复的内存页面。

3. 内存膨胀

VMWare 工具提供的客户机中的内核级驱动程序将声明客户机非分页内存池中的内存,并将其标记为虚拟机管理程序的“空闲”。这样,内存实际上是从客户机暂时“偷”来的,如果客户机确实需要内存,则会引起客户机级交换。

4. 交换

如果所有其他方法均失败且需要更多内存,则 ESXi 会将客户机内存页面交换到磁盘。交换文件的位置是可配置的,默认情况下与客户机配置文件位于同一目录中。


我发现,对于我的典型负载,页面压缩和页面共享可节省大约 10% 的内存,而 ESXi 产生的内存开销则不会出现明显的性能下降。只要配置正确,膨胀将始终有效(您可以通过将整个内存量保留给客户机来有效地关闭它),但基本上它只比交换略好(在这种情况下,您的客户机本来可以动态地要求大量内存用于缓存,但如果客户机已经内存不足,它就无法发挥神奇的作用,并且会像基于虚拟机管理程序的交换一样,由于抖动而导致磁盘 I/O)。

总而言之:如果您可以配置客户机超额使用大约 10%,并且它们将继续运行,无需客户机交换和随之而来的性能下降,那么您可能可以接受 40% 的超额使用。如果不是,您肯定不会接受。

内存页面的输出(从 SSH 控制台启动后esxtop按下即可)将比您使用 vSphere 客户端获得的图表更详细地告知您有关实时内存统计信息,因此值得一看:mesxtop

 1:54:52pm up 34 days  8:39, 214 worlds; MEM overcommit avg: 0.00, 0.00, 0.00
PMEM  /MB: 32766   total:  1031     vmk, 29568 other,   2166 free
VMKMEM/MB: 32103 managed:  1926 minfree, 13525 rsvd,  18577 ursvd,  high state
NUMA  /MB:  8123 (  767),  8157 ( 2425),  8157 (  186),  7835 (  128)
PSHARE/MB:  2162  shared,   139  common:  2023 saving
SWAP  /MB:     0    curr,     0 rclmtgt:                 0.00 r/s,   0.00 w/s
ZIP   /MB:    17  zipped,    10   saved
MEMCTL/MB:   295    curr,   292  target, 14289 max

相关内容