vSphere教育-配置RAM过多的VM有何弊端?


57

VMware内存管理似乎是一个棘手的平衡行为。有了群集RAM,资源池,VMware的管理技术(TPS,热气球,主机交换),来宾内的RAM利用率,交换,预留,份额和限制,存在很多变量。

我处于客户端使用专用vSphere群集资源的情况。但是,他们就像在物理硬件上一样配置虚拟机。反过来,这意味着标准的VM构建可能具有4个vCPU和16GB或更多的RAM。我来自一个小学校(1个vCPU,最小的RAM),检查实际使用情况并根据需要进行调整。不幸的是,许多供应商的要求和不熟悉虚拟化的人们要求的资源比必要的要多。我对量化此决定的影响很感兴趣。


来自“问题”集群的一些示例。

资源池摘要-看起来几乎4:1过量使用。注意大量增加的RAM。 在此处输入图片说明

资源分配-最坏情况分配列显示这些VM在受限条件下只能访问其配置RAM的不到50%。 在此处输入图片说明

上面列表中顶级VM的实时内存利用率图。分配了4个vCPU和64GB RAM。平均使用量不到9GB。 在此处输入图片说明

同一VM的摘要 在此处输入图片说明


  • 在vSphere环境中过度使用和过度配置资源(特别是RAM)有哪些弊端?

  • 假设VM可以在更少的RAM中运行,是否可以公平地配置具有比其实际需要更多的RAM的虚拟机?

  • 反驳参数是什么:“如果VM分配了16GB的RAM,但仅使用4GB,那有什么问题? ”?例如,是否需要告知客户虚拟机与物理硬件不同?

  • 应该使用什么特定指标来度量RAM使用率。跟踪“活动”与时间的峰值?看“已消费”?


更新:我使用vCenter Operations Manager对此环境进行了配置,并获得了有关上面列出的群集统计信息的一些详细信息。虽然事情肯定是过量的,但VM实际上配置过多了不必要的RAM,以至于实际的(微小的)内存占用量在群集/主机级别上都没有显示任何内存争用...

我的收获是,虚拟机的大小应该确实合适,并具有用于操作系统级缓存的一些缓冲区。出于无知或供应商“需求”而过度使用导致出现此处出现的情况。内存膨胀似乎在每种情况下都是不好的,因为这会影响性能,因此正确调整大小可以帮助防止这种情况。

更新2: 其中一些虚拟机开始崩溃:

kernel:BUG: soft lockup - CPU#1 stuck for 71s! 

VMware将其描述为过度使用内存过多症状。所以我想这回答了问题。

在此处输入图片说明


vCops“超大型虚拟机”报告... 在此处输入图片说明

vCops“可回收废物”图...

在此处输入图片说明

Answers:


45

vSphere的内存管理相当不错,尽管使用的术语通常会引起很多混乱。

通常,应避免过度使用内存,因为它恰好会造成此类问题。但是,有时无法避免,因此要预先警告!

在vSphere环境中过度使用和过度配置资源(特别是RAM)有哪些弊端?

过度使用资源的主要缺点是,如果您有争用,您的主机将被迫在后台进行热气球,交换或智能地计划/重复数据删除,以便为每个VM提供所需的RAM。

对于膨胀,vSphere将在选定的VM内膨胀一个“气球” RAM,然后将该膨胀的RAM提供给需要它的客户机。这并不是真正的“坏”-虚拟机正在窃取彼此的RAM,因此没有进行磁盘交换-但是如果这些依赖于分析虚拟机的RAM使用情况,则可能导致触发错误的警报和偏斜的指标,因为RAM赢了不会被OS标记为“使用中”。

vSphere可以使用的另一个功能是透明页面共享(TPS)-本质上是RAM重复数据删除。vSphere将定期扫描所有分配的RAM,以查找重复的页面。找到后,它将删除重复数据并释放重复的页面。

如果需要更深入的说明,请参阅vSphere的内存管理白皮书(PDF) -特别是“ ESXi中的内存回收”(第8页)。

假设VM可以在更少的RAM中运行,是否可以公平地配置具有比其所需的RAM更多的RAM的虚拟机?

没有明显的开销-您可以在具有16 GB的主机上分配100GB的RAM(但是,由于上述原因,这并不意味着您应该这样做)。

所有VM使用的总内存是图形中显示的“活动”曲线。当然,在计算您想要超额使用的数量时,您永远不应仅依赖该数字,但是如果您拥有历史指标,则可以根据实际使用情况进行分析和计算。

在此VMWare社区线程中讨论了“活动” RAM和“已使用” RAM之间的区别。

反对意见是什么:“如果VM分配了16GB的RAM,但仅使用4GB,那是什么问题呢?” ?例如,客户需要接受教育吗?

对此的简短答案是肯定的 - 无论使用什么工具,都应该始终向客户提供最佳实践方面的教育。

客户应根据他们怎样被教育尺寸他们的虚拟机使用,而不是他们有什么希望。在很多时候,人们会过度指定自己的VM,因为他们可能需要16 GB的RAM,即使他们过去每天都在忙于2 GB。作为vSphere管理员,您具有知识,指标和能力来挑战它们,并询问他们是否确实需要分配的RAM。

也就是说,如果将vSphere的内存管理与精心控制的过量使用限制相结合,则在实践中几乎应该不会有问题,因为长时间没有RAM的可能性相对较小。

除此之外,自动化vMotion(VMware 称为分布式资源调度)实质上是VM的负载平衡器-如果单个VM成为资源消耗者,则DRS应该迁移VM以充分利用群集的资源。

应该使用哪种特定指标来衡量RAM使用情况。跟踪“活动”与时间的峰值?

上面已基本涵盖了-尽管您应该仔细定义过量使用的阈值,以便达到一定的比率(这是一个不错的示例,尽管可能有些过时),但主要的关注点应该是“活动” RAM使用率。通常,我当然会保持在群集总RAM的120%以内,但是由您决定自己适合的比例。

关于内存的一些好文章/讨论过度使用:


我的理解是,为VM分配了更多的RAM,这意味着DRS很难迁移VM –在节点之间迁移需要更长的时间,因为在RAM之间复制需要更长的时间。并且需要的RAM越多,DRS能够找到足够大的空闲块的可能性就越小。如果您确实遇到某个事件(例如,硬件故障)会降低群集的容量,那么这将特别麻烦(我被认为是这样)。小型VM易于洗牌,不太可能出现大量中断,大型VM可能很棘手。我被正确告知了吗?
詹姆斯·波利

2
@James-在vMotion期间仅迁移活动(即正在使用)的内存,因此分配给VM的RAM数量没有多大关系。参考:vmware.com/files/pdf/VMware-VMotion-DS-EN.pdf-Craig
Watson

好答案。我已经从该特定集群中更详细地更新了我的问题。不过,您的观点很好。事实证明,此设置中的VM严重过度配置。活动RAM的使用量远远低于群集的物理资源,因此没有争用……只是繁重的热身/交换/丑陋。我怀疑正确调整VM的大小将减轻这种压力。
ewwhite

21

除了Craig Watson的出色回答外,我还要添加以下内容:

在VMware中过量使用内存不是您应该有意做的事情。它通常表明您或您的客户都在过度订购硬件。

如果过度承诺是唯一的选择,那么我强烈建议您执行优先级规则。如果某人只想给非关键虚拟机提供16GB的vRam,而只需要4GB,则至少将该虚拟机放在资源池不足的地方,或者给它一个低优先级。您确实不希望虚拟机管理程序交换关键的生产数据库。性能不仅会消耗the尽,还会吞噬后端存储上的I / O队列。

如果您在快速的存储(FusionIO,Violin,本地SSD等)上运行,则交换可能不是大问题,但是使用传统的SAN存储,最终将影响连接到同一阵列/控制器的每个VM和主机。


4
很好地观察了交换对存储的影响。这解释了我见过的一些VNX性能问题
。...– ewwhite

很棒的一点,我从没想过要接受存储IO的论点
Dan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.