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

0wn*_*n3r 4 virtualization memory vmware-esxi

我可以为我的主机分配内存的物理内存开销多少?

例子:

主机物理内存:10 GB

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

the*_*bit 8

这基本上取决于虚拟机及其内存使用情况。ESXi 采用了多种技术来允许为来宾过量使用内存:

1.内存压缩缓存

一段时间不活动的内存页面正在被压缩并被解压缩并根据请求提供服务,而不是被交换到磁盘或膨胀。页面压缩有一个可配置的上限,默认情况下设置为来宾分配内存的 10%,根据此 VMWare 白皮书,在实际场景中使用压缩缓存时,您可以粗略估计性能下降 6% 。

2. 页面共享

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

3. 内存膨胀

随 VMWare 工具提供的来宾中的内核级驱动程序将在来宾的非分页内存池中声明内存,并将其标记为虚拟机管理程序的“空闲”。通过这种方式,内存实际上是暂时从来宾“偷走”的,如果来宾确实需要内存,则会引发来宾级别的交换。

4. 交换

如果其他一切都失败并且需要更多内存,ESXi 会将来宾内存页面交换到磁盘。交换文件的位置是可配置的,默认放置在与来宾配置文件相同的目录中。


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

总而言之:如果您可以将您的来宾配置为仅过量使用 10% 并且它们将继续运行而不会出现来宾交换和随之而来的性能下降,那么您可能会接受 40% 的过量使用。如果没有,你绝对不会。

内存页面的输出esxtop(从 SSH 控制台m启动后只需按一下esxtop)会比使用 vSphere 客户端获得的图表更详细地通知您实时内存统计信息,因此可能值得查看:

 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
Run Code Online (Sandbox Code Playgroud)