ESXi主機管理內存資源的方式

       由於內存一般是最有限的資源,ESXi採用內存過量配置(Memory overcommitment,即配置後的虛擬機內存可能超過物理內存(RAM))對內存進行管理。使用內存過量配置時,ESXi必須使用技術從一個或多個VM中回收內存,這些技術被稱爲:透明頁面共享(Transparent Page Sharing,TPS)、氣球(ballooning)、交換(swap)和內存壓縮(Memory compression)。ide

一、  透明頁面共享性能

      ESXi主機運行相同操做系統的VM時,保存一個可能相同的內存頁面,釋放相同其它重複的頁面。這一過程對OS徹底透明,並不知道本身和其它VM共享一個相同的內存頁面。spa

二、 氣球操作系統

      從運行的VM中取得不須要的內存,並將其分配給其它須要內存資源的VM。在生產環境中,系統正常運行工做時,須要的內存不多,而啓動時分配的內存遠大於正常工做時所需的內存,從而形成大量的內存資源未使用(稱爲閒置內存,idle memory),並不多使用。由於內存是共享的,所以能夠收回供其它VM使用。內存

       此時出現一個問題,ESXi怎麼肯定在使用氣球技術回收內存資源時,哪一個VM會釋放內存呢?資源

共享(share)解決了這一難題。共享定義了VM的優先級,有4個級別:低、中、高和自定義(使用1:2:4比例或自定義比例)。ESXi主機優先從共享級別低的VM中回收內存,給共享級別高的VM使用。博客

       此時,又出現了另外一個問題:優先級設置比較高的VM可能積累一些或大量內存未使用,而優先級設置比較低的VM須要使用大量活動內存,因爲共享並未規定使用活動內存的標準,所以,優先級設置比較低的VM將受到懲罰。虛擬機

       咱們能夠有一個思路:不管VM的共享優先級是什麼,優先回收空閒的內存。這種思路就是ESXi的閒置內存稅(idle memory tax)。默認狀況下,閒置內存稅參數被設置爲75%,即回收閒置內存的75%。閒置內存稅賦予ESXi主機使用內存頁面的樣本機率方法進行內存回收。每一個VM都在一個可設置的時間間隔內單獨採樣,默認狀況下,ESXi每30秒採樣100個頁面。it

三、 交換io

        氣球技術的全面性,保證了可以高效回收內存,可是此時出現一個問題須要解決,就是內存資源所有都在使用中,這樣就沒法回收內存資源。

        當VM啓動時,建立一個擴展名爲.vswp的交換文件。只有可以建立和訪問這個文件時才能啓動VM(這意味着應該注意可用的存儲空間)。

        ESXi主機使用交換文件是爲了防止出現使用內存過量配置但氣球驅動程序沒法從其它VM回收內存的狀況。在這種狀況下,ESXi使用磁盤做爲內存。可是這個技術可能永遠不會使用,由於磁盤訪問會大大影響性能。交換的惟一好處就是內存不足的時候VM不會崩潰。

    注意:硬盤訪問時間是以毫秒(ms,千分之一秒)計算,而內存訪問時間以納秒(ns,十億分之一)計算,二者相差100萬倍。所以交換技術應該不會永遠使用。

四、 內存壓縮

        內存壓縮的原理是將要交換的頁以壓縮的形式存儲在被保護的內存空間中,當系統訪問該頁引發缺頁時,系統會內存中找到該被壓縮的頁,並將其解壓縮後供系統使用。內存壓縮在系統存儲層次中邏輯地加入了一層:內存壓縮層,所以,能夠說內存壓縮層是虛擬化管理器決定硬盤上交換頁面的中間層。

         對壓縮內存的訪問快於硬盤訪問,沒有太多的性能損失。當一個虛擬頁面必須交換時,ESXi首先試圖在2KB或者更小的塊上面壓縮。

       這是本人寫的第一篇關於虛擬化的博客,也是第一次寫博客,有不足之出但願你們多多斧正指教。

相關文章
相關標籤/搜索