虛擬機內存復用技術的比較(XEN系統)


 

技術途徑

   業界就該問題定義為虛擬機內存復用(復用干嘛? 當然是為了跑更多的虛擬機呀!) :memory overcommit.圍繞次問題主要有4種技術手段,下面簡要介紹和分析:

1 氣泡驅動(ballooning driver)

      利用預裝在用戶虛擬機中的前端驅動程序,偷取guest os的內存貢獻給VMM以供其他虛擬機使用.反向易然.

      issue:

                 A 需要實現用戶虛擬機支持的前端驅動程序.

                 B 不能自動偷取和歸還,需要從DOM0設置.

                 C 不能實現啟動時的內存復用,只能啟動后偷取(即啟動虛擬機時宿主機必須提供其給定大小的內存)

                 D 目前xen 引入了pod (Populate-on-demand) 似乎解決了在HVM虛擬機中的限制C

2 基於內容的頁共享(base-content page sharable)

  VMM會讓虛擬機共享同樣內容的也面,以達到節約內存的目的。

      issue:

                 A 操作比較重,因為要查看頁面內容。

                 B 目前VMM只是對前后端驅動所用的頁面,因此能省出的內存數量很有限。

                 C blktap2目前該技術尚不完善。

3 VMM 換出技術(OnDemand paging/swap)

      VMM實現請頁功能,這時guest os 類似進程一樣在VMM缺少內存時能被換出到宿主機磁盤上。該方法對虛擬機透明。

      issue:

                 A 由於對虛擬機透明,所以換出的虛擬機存在不確定性。這樣容易造成“double paging”,也就是guest os中某些頁面已經被換出,而該guest os又被VMM換出,這樣必然讓guest os的性能惡化。

                 B Xen的實現中hypervisor沒有IO功能,因此要換出頁面則需要借助dom0完成。所以操作復雜,目前尚未真正實現。(kvm中由於hypervisor在內核中實現,guest os 實現基於進程,因此onDemand paging功能省缺實現)

4 Transcient Memory

   Oracle 提出的新方法,這種方法實際采用了guest os 內存分配和VMM溝通,也就是向VMM申請,使用完畢,歸還VMM的思路。這種方法最徹底的解決內存復用問題。  

        issue:

             A 需要改變guest os已有的內存分配接口。也就是改造現有系統(雖然是安全的非侵入式改造)。

             B 該技術還在發展階段,尚不成熟。

 

 

 

結論:

  1  目前最成熟和可投入實用是氣泡驅動.該技術已經發展多年 2 linux /windows其前端氣泡驅動都有參考模型。3 ciritx server已經采用氣氣泡 + vm反饋 + dom0上的策略引擎 實現了單機上的內存復用。

      2  最理想的方式是采用 Transcient Memory 實現復用,這種方式無疑是將宿主機的整個內存池化、實現了按需分配、用完歸還。避免了使用預先化區——被VM獨占——帶來的分配限制(這好比一個系統5個硬盤,單獨使用和采用LVM方式使用的區別)

     3   如果你想更經濟,尤其跑網站等應用——也許你該考慮考慮VPS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM