ESXi伺服器中的記憶體是如何分配的?

ESXi伺服器中的記憶體是如何分配的?

我們有一台具有 48 GB RAM 的 ESXi 4.1 伺服器。

我們為每個虛擬機器分配 4GB 記憶體。由於伺服器將有 13 個虛擬機,我的經理認為這是錯誤的。

我將向他們解釋 ESXi 實際上會自行管理內存,但他們問我為 ESXi 伺服器本身分配了多少內存。

我沒有分配任何記憶體(我什至沒有聽說過為 ESXi 伺服器本身分配記憶體的選項)。

ESXi伺服器的記憶體是如何分配的?它如何在虛擬機器之間過度分配/分配 RAM 而不會出現問題?

答案1

這裡的問題不僅僅是 ESXi,

  1. 每個虛擬機器將消耗最多 4GB + 記錄的“開銷”這裡。這取決於 vCPU、+ 分配的記憶體。每個虛擬機器至少會使用 4261.98 MB(4096 + 165.98)
  2. ESXi 自身的記憶體開銷,這取決於硬體。最簡單的選擇是查看系統vSphere 用戶端中的記憶體使用情況。根據記憶,我記得它大約是 1.3GB 標記,但正如所說的那樣非常依賴硬體。

記憶體分配和過度使用解釋

請注意,虛擬機器管理程序不會預先分配所有記憶體,它取決於VM的使用情況。然而,值得了解的是,如果虛擬機嘗試分配和使用分配給它們的所有內存,將會發生什麼。

您的虛擬機器+主機將嘗試使用的最大值約為,55 GB 里程可能會有所不同

  • ESXi 使用的 1.3 GB
  • VM 使用的 4261.98 MB * 13

還有另一個方面要考慮,那就是記憶體閾值。預設情況下,VMware 的目標是擁有 6% 的空閒空間(高記憶體閾值)。所以55 GB使用的記憶體需要減少到~45GB

這意味著主機將擁有大約 10,500 MB 的內存,如果虛擬機使用為其分配的內存,則需要從某個地方回收。 ESX 執行三項操作來尋找額外的 10.5 GB。

記憶體回收方法

  1. 透明頁面共享
  2. 記憶體膨脹
  3. 管理程序交換

你應該閱讀並理解了解 VMware® ESX™ Server 中的記憶體資源管理

根據大量因素,所有這三種情況的組合將/可能發生在過度承諾的主機上。您需要測試您的環境並監控這些指標,以了解過度提交的影響。

一些值得了解的粗略規則(全部在上述論文和其他來源中)。

  1. 透明頁面共享對於使用 2/4 MB 頁面的 VM,不會發生這種情況。由於您已為 Windows VM 指派了 4096 MB,因此預設情況下它們將使用 2/4 MB 頁面(取決於 PAE)。只有在記憶體壓力下,VMware 才會將大頁面分解為可共享的 4 KB 頁面。 TPS 依賴使用空閒 CPU 週期並以一定的速率掃描記憶體頁面。它返回記憶體的速度相對較慢(想想一個小時而不是幾分鐘)。因此,啟動風暴將意味著 TPS 無法幫助您。在這三者中,這對效能影響最小。該文件的更多內容,

在硬體輔助記憶體虛擬化(例如,Intel EPT Hardware Assist 和AMD RVI Hardware Assist [6])系統中,ESX 將自動使用大型主機實體頁(2MB 連續記憶體區域,而不是常規頁的4KB)來支援客戶物理頁由於 TLB 缺失較少,性能較好。在此類系統中,ESX 不會共享這些大頁面,因為:1) 找到兩個具有相同內容的大頁面的機率很低,2) 對 2MB 頁面進行逐位比較的開銷比對於 4KB 頁面。但是,ESX 仍會為每個大頁面中的 4KB 頁面產生哈希值。由於 ESX 不會換出大頁面,因此在主機交換期間,大頁面將被分解為小頁面,以便這些預先產生的雜湊值可用於在換出小頁面之前共用小頁面。簡而言之,在主機記憶體過度使用之前,我們可能不會觀察到硬體輔助記憶體虛擬化系統的任何頁面共享。

  1. 熱氣球飛行接下來開始(閾值是可配置的,預設情況下,這是當主機的可用記憶體少於 6% 時(在高記憶體和軟體記憶體之間))。確保安裝驅動程序,並注意 Java 和管理一般應用。作業系統無法了解垃圾收集器接下來要做什麼,它最終會命中已交換到磁碟的頁面。對於專門運行 java 應用程式的伺服器來說,完全禁用交換以確保不會發生這種情況並不罕見。 查看 vSphere 記憶體管理 SPECjbb 第 17 頁

  2. 虛擬機器管理程序交換,這三種方法中,只有一種保證「記憶體」在設定的時間內可供虛擬機器管理程式使用。如果 1 和 2 沒有給它足夠的記憶體來保留在難的閾值(預設為 2% 可用記憶體)。當您仔細閱讀表現指標(自己做)時,您會意識到這是三者中表現最差的。力求不惜一切代價避免它,因為它對幾乎所有應用程式的效能影響都非常明顯兩位數百分比

  3. 還有一種狀態要注意低的(預設為 1%)。根據手冊,這會大大降低你的表現,

在主機可用記憶體低於低閾值的極少數情況下,虛擬機管理程式會繼續透過交換和記憶體壓縮回收內存,並另外阻止所有消耗記憶體多於其目標記憶體分配的虛擬機的執行。

概括

壓力的關鍵點是不可能從白皮書中預測您的環境將如何表現。

  1. TPS能給你多少錢? (取決於您的虛擬機器與其作業系統、服務包和正在運行的應用程式的相似程度)
  2. 您的虛擬機器分配記憶體的速度有多快?它們做得越快,您就越有可能在影響較小的記憶體回收方案成功地將您保持在當前閾值之前跳到下一個閾值。
  3. 根據應用程式的不同,每種記憶體回收方案都會產生廣泛不同的影響。

測試您的平均場景、95% 百分位場景以及最後的最大場景,以了解您的環境將如何運作。


編輯1

值得補充的是,對於 vSphere 4(或 4.1 無法回憶),現在可以將虛擬機器管理程式交換放在本機磁碟上,但仍然運動虛擬機。如果您使用共享存儲,我強烈建議您預設將虛擬機器管理程式交換文件移至本機磁碟上。這可以確保當一台主機面臨嚴重記憶體壓力時,它最終不會影響同一共用儲存上的所有其他 vSphere 主機/虛擬機器。

編輯2

根據評論,ESX 不會預先分配記憶體(以粗體顯示)...

編輯3

對記憶體閾值進行了更多解釋。

答案2

VMware(和其他虛擬化技術)分享根據各種演算法,VM 之間的資源(記憶體、處理器時間、各種 I/O)。

有可能過度使用資源,因為並非所有虛擬機器都會一直使用它們所需的所有處理、記憶體或 I/O。 VMware的資源管理指南可能是了解 ESXi 功能的最佳位置。

您也可以透過為不同的資源分配不同的 VM 的權重來管理演算法的效果 - 例如,您可以為應用程式伺服器 VM 提供比檔案伺服器 VM 更高的處理器權重。然而,開箱即用的設定可以很好地滿足大多數要求。在某些情況下,在這裡進行一些配置足以安撫不太明白的經理,但當然要小心並閱讀適用於您的 VMware 版本的文檔並了解您在做什麼。如果您的經理不需要進一步安撫,則只需使用預設值即可。

請注意,過度使用並不總是一個好主意,特別是當您在單一伺服器上進行虛擬化時。您應該監控 ESXi 資產中資源的使用情況,如果您經常消耗所有一項或多項資源,則如有必要,請新增其他主機/資源。

答案3

讓您的 VMWare ESXi 安裝來處理它。您可能會在 VMWare 系統上過度使用 RAM 資源,因為它使用記憶體膨脹、壓縮和重複資料刪除技術

如果虛擬機器使用類似的作業系統,則可以節省一些費用。請務必啟用來賓 VM 內的 VMWare 工具,以充分利用這些功能。

相關內容