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