Linux

VMware + 如何限制 linux 機器上的氣球記憶體

  • October 11, 2020

我們想知道我們是否不能通過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%非常嚴重的記憶體爭用,也就是。你的主機幾乎完全沒有記憶,這就是它採取如此嚴厲措施的原因。

向主機添加更多物理記憶體,或將一些虛擬機移離主機以減少記憶體需求!

**調整氣球不會解決任何問題!**這就像在你的腿卡在汽車下面時,在你手上的一個小傷口上使用創可貼。

引用自:https://serverfault.com/questions/1037019