Esxi 主機:可接受的記憶體過量使用
將記憶體分配給來賓電腦時,我可以佔用主機的物理記憶體多少成本?
例子:
主機物理記憶體:10 GB
例如將 2GB 的虛擬記憶體分配給 7 台機器總共 14GB 是否可以接受?我可以過量使用多少記憶體以確保 balooning 和其他主機記憶體釋放技術正常工作?
這基本上取決於虛擬機及其記憶體使用情況。ESXi 採用了多種技術,允許為來賓過度使用記憶體:
1.記憶體壓縮記憶體
一段時間內不活動的記憶體頁面正在被壓縮,並被解壓縮並根據請求提供服務,而不是被交換到磁碟或膨脹。頁面壓縮有一個可配置的上限,預設情況下設置為客戶機分配記憶體的 10%,根據此 VMWare 白皮書,在實際場景中使用壓縮記憶體時,您可以粗略估計 6% 的性能下降。
2.頁面分享
被發現攜帶相同資訊的不同客戶的虛擬記憶體頁面被引用到相同的物理記憶體頁面。這是一個定期釋放重複記憶體頁面的非同步操作。
3. 記憶體膨脹
與 VMWare 工具一起提供的來賓中的核心級驅動程序將在來賓的非分頁記憶體池中聲明記憶體,並將其標記為虛擬機管理程序的“空閒”。通過這種方式,記憶體有效地暫時從客戶機“竊取”,如果客戶機確實需要記憶體,則會引發客戶機級別的交換。
4.交換
如果其他一切都失敗並且需要更多記憶體,ESXi 會將客戶記憶體頁面交換到磁碟。交換文件的位置是可配置的,預設情況下與來賓配置文件位於同一目錄中。
我發現對於我的典型負載,頁面壓縮和頁面共享比 ESXi 產生的記憶體成本節省了大約 10% 的記憶體,而沒有明顯的性能下降。氣球將始終有效,只要它被配置為(您可以通過將整個記憶體量保留給來賓來有效地關閉它),但基本上它只比交換好一點(這是您的客人本來可以動態聲明的地方)大量記憶體用於記憶體,但如果客戶已經記憶體不足,它就無法發揮作用,並且會因為抖動而導致磁碟 I/O,就像基於管理程序的交換所做的那樣)。
總而言之:如果您可以配置您的客人過度使用大約 10%,並且他們將繼續執行而不會在客人內交換和隨之而來的性能下降,那麼您可能會接受 40% 的過度使用。如果沒有,你絕對不會。
記憶體頁面的輸出(從 SSH 控制台啟動後
esxtop
只需按下)會比使用 vSphere 客戶端獲得的圖表更詳細地通知您實時記憶體統計資訊,因此可能值得在那裡查看:m``esxtop
1:54:52pm up 34 days 8:39, 214 worlds; MEM overcommit avg: 0.00, 0.00, 0.00 PMEM /MB: 32766 total: 1031 vmk, 29568 other, 2166 free VMKMEM/MB: 32103 managed: 1926 minfree, 13525 rsvd, 18577 ursvd, high state NUMA /MB: 8123 ( 767), 8157 ( 2425), 8157 ( 186), 7835 ( 128) PSHARE/MB: 2162 shared, 139 common: 2023 saving SWAP /MB: 0 curr, 0 rclmtgt: 0.00 r/s, 0.00 w/s ZIP /MB: 17 zipped, 10 saved MEMCTL/MB: 295 curr, 292 target, 14289 max