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