分享:Hyper-V R2 SP1動態(tài)內(nèi)存分配最佳實踐
動態(tài)內(nèi)存是Hyper-V最大的“我也可以”功能之一,它可以讓微軟與VMware公司的步伐保持一致。信不信由你,VMware虛擬系統(tǒng)超量使用內(nèi)存的能力曾經(jīng)是微軟爭議的熱點,過去微軟聲稱該功能會耗費虛擬機的資源。但是即將發(fā)布的Windows Server 2008 R2 SP1將引入這個功能,這意味著有效利用資源或越過內(nèi)存整合提高性能的決策權(quán)現(xiàn)在就落在Hyper-V管理員身上了。
當內(nèi)存分配給虛擬機后,主機把系統(tǒng)的可用RAM分給虛擬機。到目前為止,Hyper-V內(nèi)存一直都是靜態(tài)資源。如果你分配了4 GB,那么就是4GB;但是你不能超量使用你擁有的物理內(nèi)存。
實際上,許多虛擬機并沒有充分利用它們的可用RAM,就像它們沒有充分利用它們的處理器一樣。但是有了動態(tài)內(nèi)存功能,我們就可以重新整理資源,讓內(nèi)存物盡其用,達到更好的內(nèi)存整合和更高的管理效率。
這跟標準PC中虛擬內(nèi)存使用的頁面文件沒什么不同。所有的現(xiàn)代操作系統(tǒng)在程序不知道的情況下都能在物理內(nèi)存和硬盤上的頁面文件之間交換數(shù)據(jù)。這允許我們一次性運行多少設(shè)備,同時運用針對此時運行設(shè)備的RAM,同樣的說法在運行多外虛擬機時也能用在虛擬主機上。這種情況通常很不錯,但是有經(jīng)驗的人都知道:系統(tǒng)內(nèi)存不足、頁面文件上的負載太多的話,系統(tǒng)性能會受到影響。
這也可以轉(zhuǎn)化成虛擬化,因為如果不好好考慮如何對動態(tài)內(nèi)存進行設(shè)置的話,某些需要快速訪問內(nèi)存的系統(tǒng)性能會下降。
動態(tài)內(nèi)存設(shè)置表格
動態(tài)內(nèi)存為這種復雜的內(nèi)存管理帶來了自動化,但是它跟Vmware公司的內(nèi)存超量使用功能不盡相同。你在虛擬機上開啟動態(tài)內(nèi)存的時候需要做幾項手動設(shè)置。首先,啟動RAM設(shè)置,這是訪客操作系統(tǒng)啟動時需要的內(nèi)存容量。盡管使用推薦RAM設(shè)置似乎有意義,但是實際上它應(yīng)該是操作系統(tǒng)啟動所需要的最小內(nèi)存容量加上開啟應(yīng)用程序所需要的RAM容量。
比如,Exchange Server 2010至少需要4 GB的系統(tǒng)RAM。即使你用8GB來運行一個性能系統(tǒng),而操作系統(tǒng)和應(yīng)用程序需要的最低RAM是4 GB,那么啟動RAM設(shè)置就是4GB。請把該設(shè)置與操作系統(tǒng)和應(yīng)用程序啟動所需要的最低RAM容量保持一致。
最大RAM設(shè)置是Hyper-V可以為虛擬機提供的最大RAM容量。其默認設(shè)置為64GB RAM,這使得父分區(qū)有足夠的內(nèi)存分配給訪客系統(tǒng)。這很不錯,因為Hyper-V會根據(jù)有多少容量可以分配來做決定。有時,應(yīng)用程序會要占用全部內(nèi)存。在這些情況下,把你的最大RAM設(shè)置設(shè)成你想分配給應(yīng)用程序和操作系統(tǒng)的最大內(nèi)存容量。此時也是讓最大RAM設(shè)置與你的應(yīng)用程序設(shè)置相一致的好時機。
內(nèi)存緩沖區(qū)不是以Mb計算的量,而是Hyper-V嘗試保留為高于當時提交內(nèi)存的額外值的內(nèi)存百分比。因此,如果動態(tài)內(nèi)存為虛擬機分配了1.2GB的RAM,而內(nèi)存緩沖區(qū)設(shè)成了20%,那么還會有額外的300MB內(nèi)存,Hyper-V會試圖保留1.5GB的內(nèi)存總量。
如果需要使用內(nèi)存,程序就可以先使用這部分預留內(nèi)存,而不必等待內(nèi)存分配。如果你的一個應(yīng)用程序需要較大的內(nèi)存峰值,你應(yīng)該把這個百分比設(shè)置得比默認值高,以便提供快速的內(nèi)存訪問。預留這個緩沖區(qū)的能力取決于主機上所有虛擬機對可用物理內(nèi)存的要求,所以內(nèi)存緩沖區(qū)在繁忙的Hyper-V服務(wù)器上不能保證。
你需要考慮的最后一項設(shè)置是內(nèi)存優(yōu)先級。當物理內(nèi)存受到限制時,該設(shè)置有助于確定哪個設(shè)備優(yōu)先使用內(nèi)存。此設(shè)置可以是1到10000之間的任意值。這是一個相當大的范圍,但是該設(shè)置的意味著當內(nèi)存不夠的時候,數(shù)值大的將會優(yōu)先得到內(nèi)存。低優(yōu)先級的虛擬機內(nèi)存會被系統(tǒng)剝奪,然后分配給更高優(yōu)先級的虛擬機。
默認內(nèi)存優(yōu)先級設(shè)置是5000,正好是中間值。如果你的系統(tǒng)具有嚴格的性能要求,請?zhí)岣咴撛O(shè)置的數(shù)值,并降低其他系統(tǒng)的優(yōu)先級。如果你想要使用這個設(shè)置為每個機器設(shè)定嚴格的優(yōu)先級,請務(wù)必根據(jù)確定的數(shù)量或者預先確定的服務(wù)級別協(xié)議(SLA)做決定,并保持跟蹤。
#p#
什么時候使用動態(tài)內(nèi)存
盡管動態(tài)內(nèi)存可以讓單個主機管理更多的服務(wù)器,但有時候你還是想使用舊的靜態(tài)設(shè)置。如果有應(yīng)用程序使用預先定義的RAM容量取得了最好的性能,那么就可以用靜態(tài)設(shè)置保持它使用的RAM數(shù)量不變。
比如,如果一個應(yīng)用程序始終使用6GB內(nèi)存,我們沒有必要再讓該虛擬機去參加動態(tài)內(nèi)存的算法了。舉個例子,雖然SQL Server可以設(shè)置使用特定內(nèi)存量,但是默認值就是可用的最大內(nèi)存,請保存該設(shè)置吧。
最后的考慮
作為Windows Server 2008 R2 SP1的首要新功能,動態(tài)內(nèi)存繼續(xù)證明了微軟的承諾:Hyper-V是一個可行的解決方案,也是Vmware的競爭對手。請記住,你的虛擬機必須裝有最新的集成工具來使用新設(shè)置,而且如果操作系統(tǒng)是Windows 7 或者Server 2008 R2,你需要安裝SP1。此外,一個集群中的所有主機都必須運行SP1,以便統(tǒng)一利用動態(tài)內(nèi)存功能。
最后,請一定要制定合理的內(nèi)存使用計劃,這樣你的機器就不會缺少RAM;而在內(nèi)存不足的系統(tǒng)中,你可以使用動態(tài)內(nèi)存作為智能代理,進行高級內(nèi)存管理,不然虛擬主機的文件交換會很慢。
【編輯推薦】