虚拟化 – 如何在ESXi服务器中分配内存?

我们有一台带有48 GB RAM的ESXi 4.1服务器.

对于每个VM,我们分配4GB内存.由于服务器将有13个虚拟机,我的经理认为这是错误的.

我将向他们解释ESXi实际上将自己管理内存,但他们问我为ESXi服务器本身分配了多少内存.

我没有分配任何东西(我甚至没有听说过为ESXi服务器本身分配内存的选项).

如何为ESXi服务器分配内存?如何在没有问题的情况下在虚拟机之间过度分配/分配RAM?

最佳答案
这里有很多只有ESXi的问题,

>每个VM将消耗最多4GB的“开销”,记录为here.这取决于vCPU,分配的内存.每个VM至少使用4261.98 MB(4096 165.98)
> ESXi自身的内存开销,这取决于硬件.最简单的选择是查看vSphere客户端中的系统内存使用情况.从内存中我记得它大约是1.3GB标记,但正如所述,它非常依赖于硬件.

记忆分配&过度承诺解释

请注意,虚拟机管理程序不会预先分配所有内存,而是依赖于VM的使用情况.但是,值得了解如果VM尝试分配和使用分配给它们的所有内存将会发生什么.

您的VM主机将尝试使用的最大值大约为55 GB,这可能会有所不同

> ESXi使用的1.3 GB
VM使用> 4261.98 MB * 13

还有另一个方面需要考虑,那就是内存阈值.
默认情况下,VMware的目标是获得6%的可用空间(高内存阈值).因此,55 GB的已用内存需要降低到约45GB

这意味着如果VM使用已经分配的内存,主机将拥有大约10,500 MB的内存,需要从某处回收. ESX有三件事可以找到额外的10.5 GB.

内存回收方法

> Transparent Page Sharing
>记忆气球
>管理程序交换

你应该阅读并理解Understanding Memory Resource Management
in VMware® ESX™ Server
.

根据大量因素,这三者的组合将会/可能发生在过度承诺的主机上.您需要测试您的环境并监控这些指标,以了解过度提交的影响.

一些值得了解的粗略规则(所有这些都在上面的论文和其他来源中).

>对于使用2/4 MB页面的VM,不会发生透明页面共享.由于您已为Windows VM分配了4096 MB,因此默认情况下它们将使用2/4 MB页面(取决于PAE).只有在内存压力下,VMware才会将大页面分解为可共享的4 KB页面. TPS依赖于使用空闲CPU周期和以一定速率扫描内存页面.它相对缓慢地返回内存(想想一小时而不是几分钟).所以启动风暴意味着TPS不会帮助你.从三者来看,这对性能影响最小.更多来自该文件,

In hardware-assisted memory virtualization (for example, Intel EPT
Hardware Assist and AMD RVI Hardware Assist [6]) systems, ESX will
automatically back guest physical pages with large host physical pages
(2MB contiguous memory region instead of 4KB for regular pages) for
better performance due to less TLB misses. In such systems, ESX will
not share those large pages because: 1) the probability of finding two
large pages having identical contents is low, and 2) the overhead of
doing a bit-by-bit comparison for a 2MB page is much larger than for a
4KB page. However, ESX still generates hashes for the 4KB pages within
each large page. Since ESX will not swap out large pages, during host
swapping, the large page will be broken into small pages so that these
pre-generated hashes can be used to share the small pages before they
are swapped out. In short, we may not observe any page sharing for
hardware-assisted memory virtualization systems until host memory is
overcommitted.

>接下来要进行气球攻击(阈值是可配置的,默认情况下,主机的内存空间小于6%(高端和软件之间)).确保安装驱动程序,并注意Java和托管应用程序.操作系统无法深入了解垃圾收集器接下来会做什么,最终会触及已交换到磁盘的页面.对于运行java应用程序的服务器来说,完全禁用交换以保证不会发生这种情况的做法并不罕见.查看vSphere内存管理第17页,SPECjbb
>管理程序交换,这三种方法是唯一一种保证在一定时间内管理程序可以使用“内存”的方法.如果1& 2不要给它足够的内存以保持在硬阈值(默认为2%可用内存).当您阅读性能指标(自己做)时,您会发现这是三者中表现最差的.旨在不惜一切代价避免它,因为几乎所有应用程序的两位数百分比都会对性能影响非常明显
>还有一个州要注意低(默认为1%).从手册中可以大大降低你的表现,

In a rare case where host free memory drops below the low threshold,
the hypervisor continues to reclaim memory through swapping and memory
compression, and additionally blocks the execution of all virtual
machines that consume more memory than their target memory
allocations.

摘要

压力的关键在于无法从白皮书中预测您的环境将如何表现.

> TPS能给你多少钱? (取决于您的VM与其操作系统,Service Pack和正在运行的应用程序的相似程度)
>您的VM分配内存的速度有多快?他们做得越快,你就越有可能在影响较小的内存回收方案成功阻止你进入当前阈值之前跳到下一个阈值.
>根据应用程序的不同,每种内存回收方案的影响都会各不相同.

测试您的平均场景,95%百分位情景,最后是您了解环境运行方式的最大值.

编辑1

值得一提的是,使用vSphere 4(或4.1无法回想起),现在可以将虚拟机管理程序交换放在本地磁盘上,但仍然可以对VM进行操作.如果您正在使用共享存储,我强烈建议您将管理程序交换文件默认移动到本地磁盘上.这可确保当一台主机承受严重的内存压力时,它不会最终影响同一共享存储上的所有其他vSphere主机/ VM.

编辑2

根据评论,事实上ESX没有预先以粗体分配内存……

编辑3

更多地解释了内存阈值.

转载注明原文:虚拟化 – 如何在ESXi服务器中分配内存? - 代码日志