當主機可用記憶體高于等于6%時,hypervisor僅使用透明頁共享回收記憶體(當沒有設定虛拟機記憶體限制時)。如果虛拟機設定了記憶體限制,則hypervisor使用ballooning甚至swapping回收記憶體直到低于限定值。當主機可用記憶體接近4%時,hypervisor使用ballooning回收記憶體,一般情況下可以及時的回收記憶體,讓可用記憶體保持在4%以上。如果ballooning不足以回收記憶體,主機可用記憶體接近2%時,hypervisor在ballooning回收記憶體的基礎上增加使用swapping(并激活記憶體壓縮)加速記憶體回收,讓可用記憶體保持在4%以上。罕見的當主機可用記憶體隻有1%時,hypervisor除了繼續使用ballooning和swapping回收記憶體,還禁止所有虛拟機申請更多記憶體。
透明頁共享(Transparent Page Sharing):當多個虛拟機在一個主機上運作時,可能有些記憶體頁是一樣的,比如一樣的Guest OS。hypervisor通過周期性的掃描記憶體頁生成hash值在記憶體hash總表中查找,一旦hash比對就會進行完整比較,确認記憶體頁完全一樣後hypervisor會删除備援記憶體頁以指針代之,類似于存儲中的重複資料删除功能。當某虛拟機對共享記憶體頁試圖寫時,hypervisor會複制一個這個虛拟機的專有頁來修改,保證共享頁不被破壞。這種記憶體回收的速度取決于掃描的速度,在ESX(i)的進階設定中可以設定掃描速度和時間間隔。是以最好将相同或者相近的OS部署在一台host上面,以便更好的使用TPS節省記憶體。
氣球膨脹(Ballooning):由于hypervisor無法得知虛拟機中哪些記憶體是空閑的,是以依靠VMware Tools在Guest OS中的氣球驅動(balloon driver)來回收記憶體。當需要從該虛拟機回收記憶體時,氣球膨脹從Guest OS中請求記憶體,配置設定給氣球驅動的記憶體可被hypervisor安全的回收,Guest OS自行決定将哪些記憶體swapping交換到硬碟上以保證配置設定給氣球驅動記憶體。顯然需要安裝VMware Tools才能實作氣球回收記憶體,通過這種方式回收記憶體較慢,依賴于Guest OS記憶體配置設定的速度。
記憶體交換(Hypervisor Swapping):當虛拟機啟動時就會建立一個記憶體swap檔案,檔案大小為最大記憶體交換量(虛拟機配置記憶體-記憶體預留)。當上面兩種回收方式不能滿足需求時,hypervisor會進行swapping将虛拟機的實體記憶體交換到硬碟上。hypervisor并不知道将哪些記憶體交換好,Guest OS也不知道哪些記憶體被交換了,這将極大的影響虛拟機的性能,當出現這種情況時說明需要加記憶體了。
記憶體壓縮(Memory Compression):這是4.1版本的新功能,對記憶體的交換的優化。如果swapping的記憶體頁是可壓縮的,則将其壓縮後存儲在壓縮緩存區中,這樣再次通路這個被swapping的記憶體時僅需要解壓縮,而不是從硬碟讀取,這将快的多。不能壓縮或壓縮緩沖區滿則會與硬碟進行真正的swapping。在ESX(i)的進階設定中可以設定壓縮緩存的大小等。
虛拟機記憶體配置設定VMware ESX(i)提供了三個參數來控制虛拟機的記憶體配置設定。
“限制(Limit)”限定了配置設定給虛拟機實體記憶體的上限,如果虛拟機使用的記憶體超過該限定值則hypervisor強制回收記憶體,預設是無限制,即以虛拟機記憶體大小為限。虛拟機硬體設定中的記憶體對于大多數Guest OS是不能熱添加的,有的能熱添加但是要使用添加的記憶體還要重新開機Guest OS,隻有少數Guest OS能熱添加并使用的,因為這個需要Guest OS識别,是以對Guest OS要求高。但是記憶體限制可以在虛拟機運作時随意的調整,Guest OS無需感覺是透明的。
“預留(Reservation)”是保證配置設定給虛拟機最低實體記憶體的下限,即hypervisor至多從虛拟機回收記憶體到預留值為止,不再繼續回收,保證一個基本的記憶體可避免性能降低到無法忍受。
“份額(Shares)”是當主機記憶體過量使用時,虛拟機可獲得的實體記憶體是通過一個公式計算得到的,份額是其中一項。預設份額=虛拟機記憶體*10。公式:ρ=份額/(活動記憶體+k*空閑記憶體),ρ就是該虛拟機可獲得實體記憶體比例的分子,分母是所有虛拟的ρ的和。k是懲罰因子,k=1/(1-IMT),IMT為空閑記憶體稅(Idle Memory Tax),預設IMT=75%,即k=4,IMT值可以在ESX(i)的進階設定中修改。顯然份額越大,活動記憶體比例越高則ρ越大,可獲得的實體記憶體越多。hypervisor從ρ最小的虛拟機開始回收記憶體。
本文轉自 qq8658868 51CTO部落格,原文連結:http://blog.51cto.com/hujizhou/1688815,如需轉載請自行聯系原作者