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,有什么问题?? ”?例如,是否需要教育客户VM 与物理硬件不同?
应使用哪些特定指标来计量 RAM 使用量。跟踪“活动”随时间的峰值?看“消费”?
更新:我使用vCenter …
virtualization memory capacity-planning vmware-esxi vmware-vsphere
如果我查看 vSphere 集群或资源池并看到一定程度的内存膨胀或交换,我如何确定哪些虚拟机受到影响?一旦我找到它们,我就知道如何处理它们:)
在下面的示例中,资源池中有 65 个虚拟机。只有不到 32 GB 的膨胀 RAM。如何确定哪些 VM 的一部分 RAM 膨胀或交换?
在搜索了这个并且只找到了不能正确解释“缓存”数字的人的帖子后,我决定问这个问题。
我手头有一些服务器,它们的行为很奇怪。也就是说,他们的 RAM 使用率非常高,原因不明。似乎一个不可见的进程有很多“使用过的”RAM(我的意思是“使用过的”)。
这是一些信息:
还有一些shell输出:
root@good-server:# free -m
total used free shared buffers cached
Mem: 15953 14780 1173 0 737 8982
-/+ buffers/cache: 5059 10894
Swap: 31731 0 31731
root@good-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
4.7 GiB
=================================
root@bad-server:# free -m
total used free shared buffers cached
Mem: 15953 15830 123 0 124 1335
-/+ buffers/cache: 14370 1583
Swap: 31731 15 31716
root@bad-server:# …Run Code Online (Sandbox Code Playgroud) 是否可以从 Linux VM 中检测到内存正在被内存气球回收?我认为有关主机的任何信息都不会传播到 VM,因此无法连接到主机并进行询问。我也不想依赖启发式方法。
编辑:我想从 VM 了解它的原因是向 VM 的管理员发出警报,他们可能无法访问主机,但应该知道潜在的性能下降。