Performance

關於 VM 記憶體分配的建議 General/Hyper-V

  • January 10, 2013

我有一個關於虛擬機設置的基本問題。我正在使用 Hyper-V,但我認為這個問題很籠統。這是針對家庭辦公室的,我想在沒有大量工作的情況下在虛擬機上獲得相當好的性能。我使用虛擬機來測試/調試我的軟體。理想情況下,我會啟動所有作業系統,但一次只有一個(大多數情況下可能為零)會得到積極使用。

是否有一些為 VM 分配記憶體的一般準則?在一個極端情況下,您可以將總記憶體除以 VM 的數量(總共 4 GB,4 個 VM -> 每個 1 GB)。在極端的另一端,您可以為每個 VM 提供完整記憶體並讓作業系統進行仲裁。我猜兩個都是錯的!我正在尋找合理性能的“經驗法則”。我不知道虛擬機伺服器如何管理虛擬機的記憶體。

$$ edit $$ 我問這個問題是因為我錯誤地假設 Hyper-V(2008 R2 版本)可以動態地為 VM 提供額外的記憶體(如果有額外的記憶體可用)。我的想法是我可以過度分配記憶體,只要我的使用量一次只達到一個 VM 的峰值。由於 Hyper-V 想要在每個 VM 啟動時為其分配固定記憶體,我需要關閉一些 VM 並只執行我需要的那些,或者將 VM 設置為較低的記憶體分配並確保物理記憶體是足夠所有的分配加上 Hyper-V 程序和(可能)主機作業系統。 聽起來VMWare在這些方面有更多選擇,如提供的答案中所述。

$$ /edit $$ 謝謝,布雷特

作為一般規則,您想知道在最壞的情況下,只有足夠的物理 RAM 供所有標準功能從 RAM 可靠執行。這個神奇的數字因作業系統而異,並且根據您將客戶作業系統用於的用途而有很大差異。您可以愉快地啟動具有幾百兆 RAM 的 Windows 2003 Server、一些具有 30Meg 或更少的 Linux 緊湊型發行版等等,但是如果您想在您的客戶機中執行具有數 GB 數據庫的 SQL Server,那麼您將想要確保它實際上有真正的 RAM 來支持它認為它擁有的幾 Gig RAM。

Hypervisor 處理 RAM 的方式因供應商和產品而異。Hyper-V 不支持所謂的記憶體過度使用,因此您只能根據實際可用的記憶體分配 RAM。VMware 的 ESX 允許過度使用,設置爭用仲裁(共享)規則,以便控制當 VM 變得繁忙且物理 RAM 總量不足以滿足負載時發生的情況。在 Hyper-V 環境中,您沒有這種級別的控制,因此您必須預先分配足夠的 RAM。

VMware 還有一些其他技巧可以幫助解決記憶體過度使用問題;透明頁面共享和記憶體膨脹。

透明頁面共享基本上是 RAM 的單實例儲存 - 管理程序監控分配給每個 VM 的 RAM 塊,如果它發現多個 VM 中存在公共塊,它只保留一個副本並將所有 VM 指向那個 - 如果隨後有任何 VM嘗試寫入該塊它會拆分副本,這樣就不會發生壞事。在同構 VM 環境中,這可以節省大量 RAM 而不會影響性能。

Memory Ballooning 是一種機制,它允許 Hypervisor “借用”分配給一個 VM 的 RAM,並通過在前者中使用 Guest OS 驅動程序在該 Guest OS 中分配(大)塊記憶體,將其提供給更重要的 VM。一旦它被分配,Hypervisor 可以安全地重新分配物理 RAM,以支持氣球驅動程序分配給它的記憶體。與 Hypervisor 只是將 Guest VM 的記憶體交換到磁碟以重新分配 RAM 的直接方法相比,這樣做的優勢在於,正在失去物理 RAM 的 Guest 知道記憶體正在被某些東西使用並且存在顯著降低了“借用”RAM 被分配給來賓內部任何重要係統功能的風險。

編輯添加: 當您嘗試啟動 VM 時,我從未嘗試查看 Hyper-V 會發生什麼情況,這將使記憶體需求超出可用物理 RAM 的數量,我可以找到的所有文件都表明 VM 可以滿足所有要求您為它們配置的 RAM,然後分配 Hypervisor 和主機作業系統剩下的。Hyper-V 沒有任何機制可以將最小的 RAM 儲備應用到 VM,然後從池中分配剩餘的 RAM,儘管它確實為 CPU 資源提供了這種機制。同樣,VMware 的 ESX\ESXi 確實提供了這個選項。

值得記住的是,您還需要規劃 Hypervisor 和主機作業系統所需的物理記憶體(如果您正在執行裸機 Hyper-V 伺服器,則忽略後者)。微軟針對 Hyper-V 的性能調整建議指出,除了 VM 中的 XGig RAM 之外,您還需要:

  • 300 MB 用於管理程序
  • 加上分配給每個虛擬機的第一 GB RAM 的 32 MB
  • 為每台虛擬機分配的每 GB RAM 再加上 8 MB
  • 加上 512 MB 用於在根分區上執行的主機作業系統

如果您沒有足夠的物理 RAM 用於這些,那麼性能將受到嚴重影響,穩定性也可能受到影響。

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