Hyper-V動(dòng)態(tài)內(nèi)存與VMware內(nèi)存過量使用的對(duì)比
動(dòng)態(tài)內(nèi)存(Dynamic memory)是微軟應(yīng)對(duì)虛擬化中常見問題所做的努力:如何有效地分配內(nèi)存給不是一直需要它的虛擬機(jī)。
內(nèi)存一直是人們最先耗盡的關(guān)鍵資源。結(jié)果是,缺少內(nèi)存會(huì)是固結(jié)率低的起源。壓力還來自于某些應(yīng)用所有人,他們?yōu)閼?yīng)用索要盡可能多的內(nèi)存,即使是沒有必要分配他們需要的內(nèi)存量。
在理想世界中,用戶能分配大量內(nèi)存并在需要使用這些內(nèi)存時(shí)按需使用它們。有時(shí)候Hyper-V的情況并不如此:如果在虛擬機(jī)啟動(dòng)時(shí)給它分配4GB內(nèi)存,不管它需不需要,它占有這4GB的內(nèi)存,在VM關(guān)閉之前它不會(huì)把內(nèi)存返還給Hyper-V。這不可避免地會(huì)導(dǎo)致固結(jié)率低于微軟的競爭者,這也讓它很難以有效的方式分配內(nèi)存。
隨著Hyper-V R2 SP1的發(fā)布,微軟添加了動(dòng)態(tài)內(nèi)存支持,這和它主要的競爭產(chǎn)品VMware ESX中利用的內(nèi)存過量使用(memory over-commitment)非常不一樣。微軟長時(shí)間聲稱,虛擬機(jī)承擔(dān)的內(nèi)存超過物理量很危險(xiǎn),因?yàn)樗羞@些虛擬機(jī)也許同時(shí)需要分配。不管這是否是真實(shí)情況,我們一般在其它IT領(lǐng)域使用超額認(rèn)購(over-subscription),如存儲(chǔ),微軟的立場在微軟社區(qū)得到應(yīng)用。
動(dòng)態(tài)內(nèi)存本質(zhì)上平衡了來賓操作系統(tǒng)的管理系統(tǒng)功能來達(dá)成其目的。它主要依賴于大部分現(xiàn)代服務(wù)器和操作系統(tǒng)的容量來實(shí)現(xiàn)實(shí)時(shí)的內(nèi)存添加和移除。動(dòng)態(tài)內(nèi)存背負(fù)該功能,允許Hyper-V在虛擬機(jī)運(yùn)行時(shí)在其上添加或移除內(nèi)存。一旦服務(wù)器啟動(dòng),Hyper-V顯示一池免費(fèi)內(nèi)存。虛擬機(jī)都是從這個(gè)池中分配內(nèi)存。如果Hyper-V主機(jī)本身需要更多內(nèi)存,也可以用恰好相同的方式增加。動(dòng)態(tài)內(nèi)存和內(nèi)存過量使用不同,因?yàn)镠yper-V會(huì)拒絕保證超過池中可用的物理內(nèi)存。通過從來賓操作系統(tǒng)中平衡熱添加和熱移除功能來保證內(nèi)存從虛擬機(jī)返回到系統(tǒng)。讓我們來看看動(dòng)態(tài)內(nèi)存評(píng)價(jià)該方法功績的要求。
首先,Hyper-V和現(xiàn)有的Windows虛擬機(jī)必須有應(yīng)用其上的SP1。新版的Windows 7和Windows 2008 R2可能已經(jīng)安裝好了服務(wù)包。
另外,Hyper-V可以在每虛擬機(jī)的基礎(chǔ)上完成,所有虛擬機(jī)都默認(rèn)地與靜態(tài)內(nèi)存模式一致。
圖1:VM內(nèi)存分配
虛擬機(jī)都分配到啟動(dòng)量的內(nèi)存用于啟動(dòng)程序。由于動(dòng)態(tài)內(nèi)存有賴于負(fù)載在來賓操作系統(tǒng)上的服務(wù)和驅(qū)動(dòng),需要一次只用于啟動(dòng)程序(圖1)的內(nèi)存分配。這是個(gè)自相矛盾的問題,在OS啟動(dòng)前沒有動(dòng)態(tài)內(nèi)在,但是啟動(dòng)OS又需要內(nèi)存。大部分人建議,用戶分配大量啟動(dòng)內(nèi)在來滿足啟動(dòng)OS和用于它們正常運(yùn)作的應(yīng)用程序,留下動(dòng)態(tài)內(nèi)在來處理“爆發(fā)”需求。微軟官方的說法是,用戶只需分配足夠的啟動(dòng)內(nèi)存來滿足OS的需求。
虛擬機(jī)必須設(shè)置最大的內(nèi)存量,這為虛擬機(jī)可以從池中獲得的內(nèi)存量設(shè)了限制。最大的這個(gè)值可能是64GB。
最后,用戶可以配置一個(gè)“內(nèi)存緩沖區(qū)”,這是基于虛擬機(jī)承擔(dān)量的額外分配。這個(gè)緩沖區(qū)是用來抵消所有由動(dòng)態(tài)內(nèi)存自身分配和向下分配程序引起的所有過量。所以實(shí)際的內(nèi)存分配是承擔(dān)內(nèi)存加上這個(gè)內(nèi)存緩沖。
這個(gè)緩沖默認(rèn)是20%,所以如果一個(gè)虛擬機(jī)限額是16GB,且使用4GB的內(nèi)存,那么要分配大概820MB(4GB的20%或總共4.8GB)。隨著虛擬機(jī)內(nèi)的內(nèi)存需求增長,緩沖適當(dāng)增長,直到到達(dá)配置最大量。如果從內(nèi)存角度Hyper-V主機(jī)變得飽和,可以犧牲該緩沖,而主機(jī)可以首先為承擔(dān)的內(nèi)存需求服務(wù)。緩沖用作一般的緩存來提高性能,即使動(dòng)態(tài)內(nèi)存并沒有施壓要完成該工作。
有人會(huì)說,這個(gè)緩沖只不過是為了動(dòng)態(tài)內(nèi)存的執(zhí)行添加了20%的內(nèi)存,而其他人則認(rèn)為該功能提供了附加的管理能力,所以額外的內(nèi)存也是值得的。記住,動(dòng)態(tài)內(nèi)在只在某些受支持的來賓系統(tǒng)上工作。它們?cè)谕耆晒芾沓绦蚩刂频膬?nèi)存管理解決方案中有一些優(yōu)勢,因?yàn)樗鼈優(yōu)檫\(yùn)行在大部分企業(yè)數(shù)據(jù)中心的一般范圍的操作系統(tǒng)提供更好的兼容性。
如果配置內(nèi)存的IT管理員不能正確地監(jiān)控或管理它們,就有性能降低的可能。重要的事情是理解該模式的好處,并采取正確的行為來監(jiān)控它們,用專用的警示來引導(dǎo)管理員采取步驟在他們生根之前避免問題。
【編輯推薦】