Virtualization

vSphere 教育 - 使用太多 RAM 配置 VM 的缺點是什麼?

  • August 6, 2013

VMware 記憶體管理似乎是一個棘手的平衡行為。對於集群 RAM、資源池、VMware 的管理技術(TPS、膨脹、主機交換)、來賓 RAM 使用率、交換、預留、共享和限制,存在很多變數。

我處於客戶端使用專用 vSphere 集群資源的情況。**但是,他們正在配置虛擬機,就好像它們在物理硬體上一樣。**反過來,這意味著標準 VM 建構可能具有 4 個 vCPU 和 16GB 或更多 RAM。我來自從小做起(1 個 vCPU,最小 RAM)、檢查實際使用情況並根據需要進行調整的學校。不幸的是,許多供應商的要求和不熟悉虛擬化的人要求的資源比必要的要多……我有興趣量化這個決定的影響。


來自“問題”集群的一些範例。

資源池摘要 - 看起來幾乎 4:1 過度使用。請注意大量膨脹的 RAM。 在此處輸入圖像描述

資源分配 - 最壞情況分配列顯示這些 VM 在受限條件下只能訪問不到 50% 的配置 RAM。 在此處輸入圖像描述

上面列表中頂級 VM 的實時記憶體使用率圖。分配了 4 個 vCPU 和 64GB RAM。它的平均使用量低於 9GB。 在此處輸入圖像描述

同一個虛擬機的總結 在此處輸入圖像描述


  • 在 vSphere 環境中過度使用和過度配置資源(特別是 RAM)的缺點是什麼?
  • 假設虛擬機可以在更少的 RAM 中執行,是否可以公平地說,為虛擬機配置比實際需要更多的 RAM 會產生成本?
  • 與以下相反的論點是什麼:“如果 VM 分配了 16GB 的 RAM,但只使用 4GB,有什麼問題?? ”?例如,客戶是否需要了解虛擬機與物理硬體不同?
  • 應使用哪些特定指標來計量 RAM 使用情況。跟踪“活躍”的峰值與時間的關係?看“消費”?

**更新:我使用vCenter Operations Manager**來分析此環境並獲取有關上面列出的集群統計資訊的一些詳細資訊。雖然事情肯定是過度使用的,但虛擬機實際上過度配置了不必要的 RAM,以至於真正的(微小的)記憶體佔用顯示在集群/主機級別沒有記憶體爭用……

**我的結論是,虛擬機的大小確實應該合適,並帶有一點用於作業系統級記憶體的緩衝區。**出於無知或供應商“要求”而過度使用會導致這裡出現的情況。記憶體膨脹似乎在每種情況下都很糟糕,因為會影響性能,因此正確調整大小可以幫助防止這種情況。

更新 2: 其中一些虛擬機開始崩潰:

kernel:BUG: soft lockup - CPU#1 stuck for 71s! 

VMware 將此描述為大量記憶體過度使用的症狀。所以我想這回答了這個問題。

在此處輸入圖像描述


vCops“超大虛擬機”報告… 在此處輸入圖像描述

vCops“可回收廢物”圖表…

在此處輸入圖像描述

vSphere 的記憶體管理相當不錯,儘管使用的術語經常引起很多混亂。

一般來說,應該避免記憶體過度使用,因為它會產生這種類型的問題。但是,也有無法避免的時候,所以提前做好準備!

在 vSphere 環境中過度使用和過度配置資源(特別是 RAM)的缺點是什麼?

過度使用資源的主要缺點是,如果您有爭用,您的主機將被迫在幕後膨脹、交換或智能調度/重複數據刪除,以便為每個 VM 提供所需的 RAM。

對於膨脹,vSphere 將在選定的 VM 中膨脹一個“氣球”RAM,然後將膨脹的 RAM 提供給需要它的客戶機。這並不是真正的“壞”——VM 正在竊取彼此的 RAM,因此不會進行磁碟交換——但如果這些依賴於分析 VM 的 RAM 使用情況,它可能會導致錯誤觸發警報和偏差指標,因為 RAM 贏了’不被標記為“氣球”,只是它被作業系統“使用”。

vSphere 可以使用的另一個功能是透明頁面共享 (TPS),它本質上是 RAM 重複數據刪除。vSphere 將定期掃描所有分配的 RAM,尋找重複的頁面。找到後,它將去重複並釋放重複的頁面。

如果您需要更深入的解釋,請查看vSphere 的記憶體管理白皮書 (PDF) - 特別是“ESXi 中的記憶體回收”(第 8 頁)。

假設虛擬機可以在更少的 RAM 中執行,是否可以公平地說,將虛擬機配置的 RAM 超過其所需的記憶體?

沒有可見的成本 - 您可以在 16 GB 的主機上分配 100 GB 的 RAM(但是,由於上述原因,這並不意味著您應該這樣做)。

所有 VM 使用的總記憶體是圖表中顯示的“活動”曲線。當然,在計算您希望過量使用的數量時,您永遠不應僅依賴該數字,但如果您擁有歷史指標,您可以根據實際使用情況進行分析和計算。

此VMWare 社區執行緒中討論了“活動”和“已使用”RAM 之間的區別。

與以下相反的論點是什麼:“如果虛擬機分配了 16GB 的 RAM,但只使用了 4GB,那有什麼問題??” ? 例如,客戶需要接受教育嗎?

對此的簡短回答是肯定的——無論使用何種工具,客戶都應始終接受最佳實踐的教育。

應該教育客戶根據他們使用的而不是他們想要的來確定他們的 VM 大小。很多時候,人們會過度指定他們的虛擬機,只是因為他們可能需要 16 GB 的 RAM,即使他們在歷史上日復一日地在 2 GB 上裝模作樣。作為 vSphere 管理員,您擁有向他們提出挑戰並詢問他們是否真的需要分配的 RAM 的知識、指標和能力。

也就是說,如果您將 vSphere 的記憶體管理與精心控制的過度使用限制結合起來,那麼您在實踐中應該很少遇到問題,長時間耗盡 RAM 的可能性相對較小。

除此之外,自動 vMotion(VMware 稱為分佈式資源調度)本質上是 VM 的負載平衡器 - 如果單個 VM 成為資源消耗,DRS 應該遷移 VM 以充分利用集群的資源。

應該使用什麼特定指標來計量 RAM 使用情況。跟踪“活躍”的峰值與時間的關係?

上面主要介紹了 - 您的主要關注點應該是“活動”RAM 使用,儘管您應該仔細定義您的過度使用門檻值,以便在達到一定比例時(這是一個不錯的範例,儘管它可能有點過時)。通常情況下,我肯定會保持在總集群 RAM 的 120% 以內,但您可以自行決定適合的比例。

關於記憶體過度送出的一些好文章/討論:

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