Hyper-V 動態記憶體最初在 Windows Server 2008 R2 SP1 中首次引入。在其推出之前,一個 Hyper-V 虛擬機器(VM)會以分配給它的全部 RAM 啟動和運行,這導致內存超用,影響了整體 VM 的性能。此外,可用 VM 內存的量僅在 VM 關閉時才能更改。因此,合理地將靜態內存分配替換為動態內存分配,並引入了 Hyper-V 動態記憶體功能。
什麼是 Hyper-V 動態記憶體?
Hyper-V 動態記憶體是一項功能,允許您為在 Hyper-V 環境中運行的 VM 動態分配記憶體資源。此功能會從暫時不需要它的 VM 中回收未使用的記憶體的一部分,然後將回收的記憶體重新分配給實際需要它的其他 VM。
使用 Hyper-V 動態記憶體,您可以指定 VM 可以使用的啟動記憶體量,設定特定 VM 可用物理記憶體範圍,並確定 VM 的記憶體分配優先級。物理記憶體可以在需要時有效且動態地分配給 VM,並且性能影響最小。因此,您可以更加精細地控制記憶體使用情況,並增強資源優化。
Hyper-V 動態記憶體的優缺點
Hyper-V 動態記憶體是一項有用的功能,提供了許多優點,例如:
- 減少記憶體消耗,因為虛擬機器僅使用管理員設定的限制內實際需要的記憶體量。
- 有效的記憶體分配,因為您可以動態地為運行中的虛擬機器分配更多或更少的記憶體。
- 由於更有效地使用記憶體資源,所以具有較高的整合數字。
- 在 Hyper-V 智能分頁的幫助下,重新啟動操作的可靠性得到了提高。
- 由於不浪費 VM 資源,所以具有成本效益。
然而,Hyper-V 動態記憶體也有一些缺點,可能會對 VM 記憶體性能產生負面影響。 它們包括以下:
- 在虛擬環境中未跟蹤記憶體分配的情況下,可能會過度配置計算機物理內存的風險。
- 在 VM 運行時無法更改某些記憶體設置。 因此,在 VM 仍在運行或暫停時,您無法減少或增加最大和最小記憶體量,也無法修改 VM 啟動記憶體量。
- 啟用 Hyper-V 動態記憶體時,可能會出現與數據庫應用程序相關的問題。 建議您使用與 Hyper-V 動態記憶體兼容的應用程序,以避免任何性能問題。
Hyper-V 動態記憶體設置 Hyper-V 動態記憶體包括五個 VM 設置,可以在 Hyper-V 管理器中進行配置。 為此,打開 Hyper-V 管理器,選擇所需的 VM,點擊 設置 ,然後選擇 記憶體。 您將看到以下內容:
Hyper-V Dynamic Memory 包含五個虛擬機器設定,可以在 Hyper-V Manager 中進行配置。為此,請打開 Hyper-V Manager,選擇所需的虛擬機器,點擊 設定,然後選擇 記憶體。您將看到以下內容:
然而,在您開始配置 Hyper-V Dynamic Memory 設定之前,建議您先了解這些元件的工作原理以及它們能提供的優勢。讓我們來看看每個元件:
啟動 RAM
這個 Hyper-V Dynamic Memory 值定義了在啟動時選定的虛擬機器可以使用的最小物理記憶體量。啟動 RAM 應該足夠高,以便虛擬機器能夠快速啟動且不會中斷。請注意,當虛擬機器運行時,無法更改啟動 RAM。
最小 RAM
這個 Hyper-V Dynamic Memory 值確定了在虛擬機器啟動後應該分配給它的最小物理記憶體量。如果其他虛擬機器需要額外的 RAM,Hyper-V 主機可以開始從這個虛擬機器回收未使用的記憶體,直到達到最小 RAM 值。請注意,該值可以設置為低至 32 MB,但不能高於啟動 RAM。此外,您不能在虛擬機器運行或暫停時增加最小記憶體,但可以減少它(例如,您可以將最小 RAM 值從 512 MB 更改為 64 MB)。
最大 RAM
此Hyper-V動態記憶體值指定了VM可以使用的最大物理記憶體量。請注意,此值不能低於分配的啟動RAM,但可以高達1 TB(1,048,576 MB)。此外,您無法在VM運行或暫停時減少最大記憶體量,但可以增加它(例如,您可以將最大RAM值從512 MB更改為2048 MB)。
記憶體緩衝區
此Hyper-V動態記憶體值確定了應該分配給VM作為緩衝區的物理記憶體的百分比。記憶體緩衝區是根據VM的記憶體需求預留給VM的一部分物理記憶體。要計算記憶體緩衝區,您需要使用以下公式:
記憶體緩衝區量 = VM實際需要的記憶體量 / (記憶體緩衝區值 / 100)。
默認情況下,記憶體緩衝區值為20%,但可以設置為低至5%,高至2000%。您可以在任何時候更改記憶體緩衝區值,即使在VM運行時也可以。
記憶體權重
此Hyper-V動態記憶體值指定了所選VM與此主機上其他VM相比的優先級。根據此優先級順序,您可以確定如何在同一Hyper-V主機上運行的多個VM之間分配可用記憶體。
請注意,如果VM的優先級設置得太低,並且可用物理記憶體量減少,則存在此VM無法啟動的風險。您可以在任何時候更改記憶體權重值,即使在VM運行時也可以。
Hyper-V 動態記憶體最佳實踐
為了在Hyper-V環境中達到高性能並提高記憶體利用率,建議您遵循Hyper-V動態記憶體的最佳實踐。
以下列出的Hyper-V動態記憶體最佳實踐可以大幅提升VM記憶體性能以及您在Hyper-V環境中的整體體驗。
啟用Hyper-V整合服務
Hyper-V整合服務是一套用於在Hyper-V環境中提升VM性能的工具。每個Hyper-V整合服務都必須在主機和客戶端上啟用,以便它們能夠正常運作並按需提供服務。預設情況下,所有Hyper-V整合服務(除了Hyper-V客戶端服務接口)都在客戶端OS上啟用。
為了使Hyper-V動態記憶體有效運作,請確保將Hyper-V整合服務升級到最新版本,並且客戶端操作系統支援動態記憶體功能。否則,Hyper-V可能會因為記憶體無法動態提供和記憶體需求無法妥善處理而遇到問題。
自從Windows Server 2016發布以來,Hyper-V整合服務及其相應的更新可以通過Windows Update安裝。因此,您應該配置您的VM以接收更新,以確保您的Hyper-V基礎設施使用最新版本的Hyper-V整合服務。
監控記憶體使用情況和資源分配
目前市場上有許多Hyper-V管理工具,可以讓您監控Hyper-V環境中的記憶體使用情況和資源分配。啟用Hyper-V動態記憶體後,可以超額分配RAM並完全耗盡記憶體。因此,建議您追蹤分配給Hyper-V主機上各個VM的RAM。
為此,您可以使用原生監控工具或購買第三方軟體。例如,您可以透過Hyper-V管理器或客戶端VM的任務管理器檢查VM的記憶體狀態。
這樣我們可以監控系統內記憶體資源的使用情況。但是,請注意,Hyper-V管理器和任務管理器對記憶體使用情況的顯示結果不同。客戶端監控工具不會顯示實際結果,因為客戶端VM認為分配給VM的總記憶體實際上正在被其驅動程序使用。實際上,主機通常更清楚記憶體在基礎設施內分配給VM的方式。未使用的記憶體實際上被重新分配給其他VM,這在Hyper-V管理器中有所反映。
考慮啟動RAM
設置啟動RAM的高低可以顯著影響Hyper-V的性能。您應該增加啟動RAM,以確保OS和在其上運行的應用程序按需啟動。這是因為Windows在啟動時比OS空閒時需要更多的RAM。
此外,在安裝或升級操作期間,客戶端操作系統可用的RAM數量等於啟動RAM值。因此,在執行安裝或升級之前,確保啟動RAM值滿足所選操作系統的最低內存要求至關重要。
請注意,如果啟動RAM值設置得太高,這也可能對Hyper-V動態內存性能和整體內存使用產生負面影響。因此,建議將512 MB作為客戶端操作系統的啟動RAM值,以便它能夠無中斷地啟動。
不要忘記內存泄漏
在為特定VM設置Hyper-V動態內存限制時,必須牢記您的基礎設施可能會受到內存泄漏的影響。內存泄漏意味著由於不正確的內存分配而逐漸失去可用內存。通常發生在應用程序未能釋放僅供臨時使用的內存時。如果在造成嚴重損害之前未檢測到此問題,操作系統內存可能會耗盡,應用程序最終將失敗。
為了減輕此問題的負面影響,建議您安裝監控工具(例如RAMMap)並掃描整個基礎設施以查找任何不一致之處,並檢測運行應用程序的異常內存使用情況。此外,此類工具可以幫助您確定最適合該特定VM的最低和最高RAM值。
配置最大和最小RAM值
為了確保Hyper-V動態記憶體能夠按需運作,建議您設定系統無法超越的限制。這樣一來,您的基礎設施內的記憶體使用就能得到有效控制,意味著虛擬機器不會消耗過多或過少的記憶體。
謹慎設定記憶體緩衝值
一項Hyper-V動態記憶體的最佳實踐是分配適當的記憶體緩衝值,這指定了應為選定虛擬機器提供多少額外記憶體。如果記憶體緩衝值設定得高,這額外的記憶體通常用於大型虛擬機器中的文件快取,並優化系統內的I/O操作。
同時,如果正在運行的應用程式需要大量物理記憶體,則應將記憶體緩衝值設定得低。通過降低記憶體緩衝值,您可以確保可用記憶體不會被單一虛擬機器完全消耗。
此外,如果已經為虛擬機器分配了大量記憶體,那麼它不太可能需要額外的記憶體。因此,將未使用的記憶體資源與其他更需要它的虛擬機器共享更有意義。
必要時更新Hyper-V主機
生產工作負載在工作時間內大幅增加,最終影響了 Hyper-V 的性能以及資源分配和內存利用率。作為 Hyper-V 動態內存的最佳實踐之一,建議您在工作日內監控內存使用情況的變化。通過檢測高低內存使用量的周期通常發生的時間,您可以學會如何利用 Hyper-V 動態內存。
在實際需要時啟用 Hyper-V 動態內存
儘管 Hyper-V 動態內存是一個非常有用的功能,可以改善物理內存的使用情況,但在某些情況下,靜態內存分配是首選。因此,您應該考慮在特定虛擬機器上是否需要啟用 Hyper-V 動態內存。例如,一些應用程序如果具有預先確定的內存量,它們的性能會更好,而不會中斷使用。預分配的內存量在內存需求波動時保持不變。
因此,建議您提前計劃在您的 Hyper-V 環境中如何分配物理內存,以防止內存不足並避免未來應用程序失敗。僅使用與 Hyper-V 動態內存兼容的應用程序
儘管Hyper-V動態記憶體是一個極其有用的功能,它能夠提高物理記憶體的使用率,但在某些情況下,靜態記憶體分配是更可取的選項。因此,您應該考慮是否需要在特定的虛擬機器(VM)上啟用Hyper-V動態記憶體。例如,某些應用程式在擁有預先確定的RAM量時運行得更好,這些RAM量不會因記憶體需求波動而中斷。預分配的RAM量保持不變,儘管記憶體需求有所波動。
因此,建議您提前計劃如何在您的Hyper-V環境中分配物理記憶體,以防止將來RAM不足和應用程式失敗。
僅與相容的應用程式一起使用Hyper-V動態記憶體
在您的Hyper-V主機或客戶機上安裝任何應用程式之前,請確保該應用程式可以與Hyper-V動態記憶體一起使用。為了檢查此類信息,建議您首先閱讀產品支持文檔,以了解其功能和系統要求。這些預防措施可以幫助您避免可能發生的記憶體使用和分配問題。
總結
在了解了Hyper-V动态内存的最佳实践之后,您可以更有效地和安全地使用物理内存。然而,您的虚拟基础架构仍然面临各种威胁和危险,可能会影响其性能。为了确保虚拟环境的安全性,使用数据保护解决方案是最可行的选择。NAKIVO备份与复制是一个可靠、有效和价格合理的解决方案,提供虚拟机备份、复制、云备份、备份副本、站点恢复和丰富的功能集。
Source:
https://www.nakivo.com/blog/full-overview-hyper-v-dynamic-memory-best-practices/