我们想知道我们是否不能通过balloon memory
调整以下值来限制 Linux 机器上的 -
Mem.CtlMaxPercent
例如,是否可以将 20% 设置为Mem.CtlMaxPercent
默认值 65%?
目标是在 RHEL 机器上提供更多可用内存,因为 RHEL 机器上的气球内存大约是 30G,我们希望减小这个值,以便 RHEL 机器有更多可用内存
参考 - https://nerdblurt.com/vmware-memory-ballooning-sched-mem-maxmemctl-versus-mem-ctlmaxpercent/
Sched.Mem.MaxMemCtl:通过膨胀从所选虚拟机回收的最大内存量,以兆字节 (MB) 为单位。如果 ESXi 主机需要回收额外的内存,它会被强制交换。交换不如膨胀。默认值 = -1(无限制)(VM 高级设置)
Mem.CtlMaxPercent:根据配置的内存大小的百分比,限制使用内存气球驱动程序 (vmmemctl) 从任何虚拟机回收的最大内存量。指定 0 以禁用所有虚拟机的回收。默认值 = 65%(主机高级设置)*
气球只会在一些非常特殊的条件下发生。为了使 VMware ESXi 在 VM 中“膨胀”气球驱动程序,主机必须处于非常严重的内存争用状态,通常少于主机上可用内存的 4%。
请注意,气球驱动程序只是向 VM 上的操作系统询问内存,并且给予它的任何内存页面都会被管理程序立即删除,因为 VM 没有将它们用于任何事情。所以气球驱动程序实际上并没有使用内存,它只是管理程序欺骗操作系统告诉它它不需要哪些内存页面的方式。
如果这不能解决主机的内存争用问题,则管理程序会进一步膨胀气球驱动程序,以强制 VM 上的操作系统开始将内存交换到磁盘。这并不理想,但它比替代方案好得多,即管理程序开始交换到磁盘,因为 VM 上的操作系统实际上知道它正在交换到磁盘的内容。
限制气球的方法不是按照您的要求更改预设,而是为 VM 分配超过 VM 总内存 35% 的内存预留(因为气球驱动程序的默认限制是65%,35% 或更少的预订将不会影响膨胀)。这保证了 VM 至少可以获得内存预留,因此在您的情况下,这应该是在 VM 上启动应用程序所需的最小内存量。
请记住,膨胀表示主机上的可用内存不足 4%的非常严重的内存争用,也就是。你的主机几乎完全没有记忆,这就是它采取如此严厉措施的原因。
向主机添加更多物理内存,或将一些虚拟机移离主机以减少内存需求!
调整气球不会解决任何问题!这就像在你的腿卡在汽车下面时,在你手上的一个小伤口上使用创可贴。