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