一種低開銷的高效內(nèi)存去冗余方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種內(nèi)存空間去冗余方法及系統(tǒng),本發(fā)明涉及計算機內(nèi)存管理,屬于操作系統(tǒng)領域,特別涉及一種內(nèi)存去冗余方法及系統(tǒng)。該方法包括對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面;查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息;刪除該冗余頁面中的內(nèi)容,以完成該內(nèi)存空間去冗余。本發(fā)明可以動態(tài)選擇掃描區(qū)域,不但適用于大量重復頁面場景,而且還適用于少量內(nèi)存冗余場景,同時能夠減少系統(tǒng)開銷。
【專利說明】一種低開銷的高效內(nèi)存去冗余方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及計算機內(nèi)存管理,屬于操作系統(tǒng)領域,特別涉及一種低開銷的高效內(nèi)存去冗余方法及系統(tǒng)。
【背景技術】
[0002]內(nèi)存是計算機最為重要的資源之一。為了高效地利用有限的內(nèi)存資源,現(xiàn)代操作系統(tǒng)使用了很多技術以節(jié)省內(nèi)存的使用。近年來,Linux操作系統(tǒng)中出現(xiàn)了一種新的節(jié)省內(nèi)存使用的技術,即內(nèi)存去冗余技術,即KSM(Kernel Samepage Merging,內(nèi)存合并)技術。KSM技術通過掃描虛擬內(nèi)存區(qū)域,找到相同的物理內(nèi)存頁面,并把它們合并,該技術使得運行虛擬機的主機操作系統(tǒng)中使用中的內(nèi)存明顯下降,內(nèi)存使用效率明顯提高,從而讓同等物理配置的Linux主機在使用KSM技術后能運行更多的虛擬機。
[0003]在KSM中,頁面通過兩個“紅-黑”樹管理,其中一個“紅-黑”樹是臨時的,第一個樹稱為不穩(wěn)定樹,用于存儲還不穩(wěn)定的新頁面。換句話說,作為合并候選對象的頁面(在一段時間內(nèi)頁面內(nèi)容沒有變化)存儲在這個不穩(wěn)定樹中,不穩(wěn)定樹中的頁面不是寫保護的。第二個樹稱為穩(wěn)定樹,存儲那些已經(jīng)發(fā)現(xiàn)是穩(wěn)定的且通過KSM合并的頁面,為確定一個頁面是否是穩(wěn)定頁面,KSM使用一個32位校驗和,即當一個頁面被掃描時,它的校驗和被計算且與該頁面存儲在一起,在一次后續(xù)掃描中,如果新計算的校驗和等于此前計算的校驗和,則該頁面為穩(wěn)定頁面。
[0004]使用KSM進程處理一個單一的候選頁面時,第一步檢查是否能夠在穩(wěn)定樹中發(fā)現(xiàn)與該候選頁面內(nèi)容相同的頁面,搜索該穩(wěn)定樹,一個memcmp (內(nèi)存比較)操作將在該候選頁面和穩(wěn)定樹中相關節(jié)點的頁面上執(zhí)行,如果memcmp返回0,則頁面內(nèi)容相同,發(fā)現(xiàn)一個匹配值,反之,如果memcmp返回-1,則表示候選頁面小于當前節(jié)點的頁面,如果返回I,則表示候選頁面大于當前節(jié)點的頁面。如果與該候選頁面內(nèi)容相同的頁面位于穩(wěn)定樹中,則該候選頁面被合并,該候選頁面被釋放,如果在穩(wěn)定樹中沒有發(fā)現(xiàn)與該候選頁面內(nèi)容相同的頁面,則搜索不穩(wěn)定樹。
[0005]當搜索不穩(wěn)定樹時,重新計算該候選頁面上的校驗和,如果該值與原始校驗和不同,則本次掃描的后續(xù)搜索將拋棄該候選頁面,如果校驗和沒有更改,則會搜索不穩(wěn)定樹以尋找與該候選頁面內(nèi)容相同的頁面,如果沒有在不穩(wěn)定樹中發(fā)現(xiàn)與該候選頁面內(nèi)容相同的頁面,則在不穩(wěn)定樹中為該候選頁面添加一個新節(jié)點,但是如果在不穩(wěn)定樹中發(fā)現(xiàn)了與該候選頁面內(nèi)容相同的頁面,則合并該候選頁面,然后將該節(jié)點遷移到穩(wěn)定樹中,保存穩(wěn)定樹,但不穩(wěn)定樹則被刪除并在下一次掃描時重新構建。
[0006]近年來研究較多的是基于合并相同內(nèi)存頁面的內(nèi)存去冗余技術,即通過查找系統(tǒng)中的相同內(nèi)存頁面,把這些頁面合并從而節(jié)省系統(tǒng)內(nèi)存空間,但Linux并不是使用頁面共享來改進內(nèi)存效率的惟一系統(tǒng)管理程序,但是它的獨特之處在于將其實現(xiàn)為一個操作系統(tǒng)特性。VMware ESX(在通用環(huán)境下分區(qū)和整合系統(tǒng)的虛擬主機軟件)服務器系統(tǒng)管理程序?qū)⑦@個特性命名為Transparent Page Sharing (TPS,透明頁共享),而XEN(開放源代碼虛擬機監(jiān)視器)將其稱為Memory CoW(內(nèi)存寫時復制,Copy on Write)。不管采用哪種名稱和實現(xiàn)方式,這個特性都提供了更好的內(nèi)存利用率,從而允許操作系統(tǒng)(KVM(開源的系統(tǒng)虛擬化模塊)的系統(tǒng)管理程序)過量使用內(nèi)存,支持更多的應用程序或VM(虛擬機)。VMware公司較早進行了虛擬機內(nèi)存去冗余技術的研究工作,VMware公司(威睿公司)的Hypervisor (虛擬機管理器)使用的基于合并相同內(nèi)容內(nèi)存頁面的去冗余技術,以減少虛擬機之間的內(nèi)存冗余。此方案僅適用于VMware虛擬化場景,在多臺虛擬機上存在大量相同內(nèi)存時才有顯著去冗余的效果,否則收效甚微。
[0007]XEN是一個非常流行的虛擬機軟件,廣泛應用在云計算、VPS(Virtual PrivateServer,虛擬專用服務器)等領域,與KVM類似,XEN也是面向內(nèi)存的重復數(shù)據(jù)刪除技術的一個極好的應用場景,XEN Dedup (—個去冗余系統(tǒng))能夠很好的消除XEN上的冗余內(nèi)存,但是XEN Dedup并不是基于頁面內(nèi)容冗余檢查,同時XEN Dedup的掃描范圍不能由用戶指定,一些活躍頁面完全沒有合并的意義,其運用場景只是局限于XEN的虛擬化場景。
[0008]KSM也存在自身的問題與不足,大量文獻和實驗數(shù)據(jù)表明其在合并虛擬機之間冗余內(nèi)存的性能強大,而在非虛擬化場景下,一般應用程序內(nèi)部或多個應用程序間并沒有大量的冗余內(nèi)存,在冗余內(nèi)存非常少的場景下,對這些程序應用KSM技術非但不能降低內(nèi)存使用,反而因為運行KSM本身所需要內(nèi)存而增加了內(nèi)存開銷。
[0009]發(fā)明專利“一種內(nèi)存冗余消除方法”該發(fā)明涉及一種內(nèi)存冗余消除方法,包括:步驟1,將計算機內(nèi)存劃分成不同的區(qū)域塊并選擇;步驟2,計算當前選擇區(qū)域塊的哈希值;步驟3,查找是否有其他區(qū)域塊的哈希值與步驟2中區(qū)域塊的哈希值相同;步驟4,如果是,判定兩個區(qū)域塊為高概率相同,轉(zhuǎn)至步驟6 ;步驟5,將此區(qū)域塊以及哈希值加入查找數(shù)據(jù)結構,轉(zhuǎn)至步驟10;步驟6,如果步驟2中采用加密哈希函數(shù),并且哈希函數(shù)計算的是區(qū)域塊的全部內(nèi)容,則轉(zhuǎn)至步驟8 ;步驟7,比較這兩個區(qū)域塊的內(nèi)容是否完全相同;步驟8,將其中一個區(qū)域塊的索引替換成另一個區(qū)域塊的索引;步驟9,釋放被替換索引的區(qū)域塊;步驟10,從剩余區(qū)域塊中選擇一區(qū)域塊,并返回步驟2。但是該發(fā)明與本發(fā)明的實現(xiàn)方式不同,其中“一種內(nèi)存冗余消除方法”通過哈希值匹配的方式確定冗余頁面,對于內(nèi)容相同的頁面僅保留一份副本,該發(fā)明掃面全部選擇區(qū)域頁面,且不考慮頁面的穩(wěn)定性,只要頁面內(nèi)容相同即進行冗余消除,對于頻繁寫入的頁面,容易造成消除后需要立刻恢復的不足,而本發(fā)明“一種低開銷的高效內(nèi)存去冗余方法及系統(tǒng)”設計新的頁面掃描算法,多次掃描全部或部分選定內(nèi)存頁面以發(fā)現(xiàn)頁面內(nèi)容完全相同的冗余頁面;根據(jù)每次掃描的校驗和,利用采樣掃描實現(xiàn)對發(fā)現(xiàn)的冗余頁面的合并;用兩棵紅黑樹管理合并后具有不同穩(wěn)定度的頁面,從而在消除冗余內(nèi)存頁面達到節(jié)省內(nèi)存的同時,提高內(nèi)存使用效率的目標。
[0010]發(fā)明專利“一種面向內(nèi)存冗余的虛擬機遷移裝置及其方法”,該發(fā)明公開一種面向內(nèi)存冗余的虛擬機遷移裝置和方法,包括:利用數(shù)據(jù)中心整合帶有內(nèi)存數(shù)據(jù)冗余虛擬機的特性,在虛擬機進行正式遷移前,掃描獲得需遷移虛擬機內(nèi)存描述信息;將內(nèi)存描述信息與目標節(jié)點內(nèi)存頁面進行對比,得到需要遷移的部分內(nèi)存頁面列表;根據(jù)得到的內(nèi)存頁面列表取消冗余內(nèi)存的傳輸,同時利用數(shù)據(jù)壓縮技術減少遷移是的數(shù)據(jù)傳輸量。因而,能夠在以節(jié)省數(shù)據(jù)中心內(nèi)存資源為目的的虛擬機遷移過程中盡量降低網(wǎng)絡的負載,提高數(shù)據(jù)中心整體的資源利用率,但是該發(fā)明與本發(fā)明實現(xiàn)方式不同,其中“一種面向內(nèi)存冗余的虛擬機遷移裝置及其方法”是在虛擬機遷移場景下通過掃描需遷移虛擬機內(nèi)存描述信息判斷與目標節(jié)點內(nèi)存是否存在冗余,從而在虛擬機遷移過程中減少冗余內(nèi)存頁面的傳輸,而本發(fā)明是通過掃描服務器內(nèi)存,找出相同頁面,對于冗余頁面僅保存一個副本,從而減少系統(tǒng)內(nèi)存占用,可應用于非虛擬化或虛擬化場景,與虛擬機遷移無關。
【發(fā)明內(nèi)容】
[0011]針對現(xiàn)有技術不足,本發(fā)明提出了一種低開銷的高效內(nèi)存去冗余方法及系統(tǒng),以解決以上技術問題。
[0012]本發(fā)明提供一種內(nèi)存空間去冗余方法,其特征在于,包括:
[0013]步驟SI,對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面;
[0014]步驟S2,查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息;
[0015]步驟S3,刪除該冗余頁面中的內(nèi)容,以完成該內(nèi)存空間去冗余。
[0016]所述的低開銷的高效內(nèi)存空間去冗余方法,步驟SI的具體步驟包括:
[0017]步驟SI I,根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m ;
[0018]步驟S12,將該內(nèi)存空間平均分成m個區(qū)間;
[0019]步驟S13,在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面。
[0020]所述的低開銷的高效內(nèi)存空間去冗余方法,該步驟S2還包括:根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符。
[0021]所述的低開銷的高效內(nèi)存空間去冗余方法,還包括:將該冗余頁面的該信息反饋給用戶。
[0022]所述的低開銷的高效內(nèi)存空間去冗余方法,若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大。
[0023]本發(fā)明還提供一種低開銷的高效內(nèi)存空間去冗余系統(tǒng),其特征在于,包括:
[0024]采樣模塊,用于對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面;
[0025]合并模塊,用于查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息;
[0026]刪除模塊,用于刪除該冗余頁面中的內(nèi)容。
[0027]所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),該采樣模塊還包括:根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m ;將該內(nèi)存空間平均分成m個區(qū)間;在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面。
[0028]所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),還包括查找模塊,用于根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符。
[0029]所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),還包括反饋模塊,用于將該冗余頁面的該信息反饋給用戶。
[0030]所述的低開銷的高效內(nèi)存空間去冗余方法,若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大。
[0031]由以上方案可知,本發(fā)明的優(yōu)點在于:
[0032]本發(fā)明能減少內(nèi)存去冗余算法本身所消耗的內(nèi)存,實現(xiàn)一種新的用戶交互方式,可以動態(tài)選擇掃描區(qū)域,提出新的冗余頁面數(shù)量統(tǒng)計模塊,徹底消除了 KSM原本局限,不但適用于大量重復頁面場景,而且還適用于少量內(nèi)存冗余場景。本發(fā)明的系統(tǒng)比KSM節(jié)省更多內(nèi)存,掃描合并效率更高,本發(fā)明的系統(tǒng)還可以統(tǒng)計重復頁面。
【專利附圖】
【附圖說明】
[0033]圖1為本發(fā)明系統(tǒng)模塊圖;
[0034]圖2為本發(fā)明三級數(shù)據(jù)結構圖;
[0035]圖3為本發(fā)明采樣算法流程圖。
[0036]其中附圖標記為:
[0037]步驟100為本發(fā)明采樣算法的具體步驟,包括:
[0038]步驟101/102/103/104/105/106/107/108/109/110/111/112/113 ;
[0039]模塊I為采樣模塊;
[0040]模塊2為合并模塊;
[0041]模塊3為查找模塊;
[0042]模塊4為刪除模塊;
[0043]模塊5為反饋模塊。
【具體實施方式】
[0044]本發(fā)明涉及操作系統(tǒng)中內(nèi)存去冗余技術,且是在KSM的基礎上對KSM頁面掃描進行的改進與創(chuàng)新,本發(fā)明的總體流程為:對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面,其中根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m,將該內(nèi)存空間平均分成m個區(qū)間,在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面,若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大;查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息,其中根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符;刪除該冗余頁面中的內(nèi)容;將該冗余頁面的該信息反饋給用戶,從而在消除冗余內(nèi)存頁面達到節(jié)省內(nèi)存的同時,提聞了內(nèi)存使用效率的目標。
[0045]本發(fā)明提出的掃描方法是根據(jù)采樣系數(shù)生成rmap_item(rmap_item是一個數(shù)據(jù)結構,用于記錄一個內(nèi)存頁面相關的數(shù)據(jù)),當采樣系數(shù)不為100時,本發(fā)明提出的掃描方法生成的rmap_item要比KSM生成的rmap_item要少,而采樣系數(shù)以某個數(shù)值為步長,從100遞減,這意味著大多數(shù)情況下,掃描同樣大小的內(nèi)存區(qū)域,生成的rmap_item要比KSM少,因此時間效率要優(yōu)于KSM,且對系統(tǒng)性能的影響主要取決于兩個參數(shù),一個是兩次掃描之間的時間間隔,另一個是每次掃描的頁面數(shù)量,這兩個參數(shù)實際上都可以通過sysfs文件系統(tǒng)(Linux所提供的一種虛擬文件系統(tǒng))進行調(diào)整,兩次掃描之間的時間間隔越短,每次掃描的頁面數(shù)量越多,則對系統(tǒng)的性能影響越大,反之越小。
[0046]下面結合附圖對本發(fā)明進行詳細描述,為了更清楚地描述本發(fā)明的內(nèi)存壓縮方法,本發(fā)明首先給出相關數(shù)據(jù)結構的說明,本發(fā)明采用三級數(shù)據(jù)結構,如圖2所示,具體包括:
[0047]數(shù)據(jù)結構mm_slot,用于記錄每個進程虛擬內(nèi)存空間,由若干VMA(Virtual MemoryArea)構成,VMA表示某個進程某一段集中管理的虛擬內(nèi)存地址;數(shù)據(jù)結構vma_node,用于維護VMA相關數(shù)據(jù)的結構體,數(shù)據(jù)結構vma_node中有一個重要的變量,采樣系數(shù)(coefficient),該系數(shù)取I到100之間的一個值η,表示數(shù)據(jù)結構vma_node對應的VMA中有n%的頁面將被采樣,如果η為100,則VMA中所有的頁面將被采樣;為需要掃描的內(nèi)存空間中的每個頁面生成rmap_item ;
[0048]三級數(shù)據(jù)結構的關系如下:每個mm_Slot維護一棵紅黑樹,稱為穩(wěn)定樹,存儲那些已經(jīng)發(fā)現(xiàn)是穩(wěn)定(連續(xù)兩次掃描頁面時,該頁面的32位校驗和沒有發(fā)生變化,這樣的頁面被稱為穩(wěn)定頁面)的且通過KSM合并的頁面,樹中鏈接了 vma_node,而vma_node維護了一個鏈表,鏈表中鏈接了 rmap_item,即mm_slot, vma_node, rmap_item三級數(shù)據(jù)結構。
[0049]以下為本發(fā)明具體步驟,如圖3所示:
[0050]執(zhí)行步驟101,當前rmap_item指針指向vma_node掛載的rmap_item鏈表表頭元素,執(zhí)行步驟102,根據(jù)采樣系數(shù)按地址從小到大計算下一個采樣頁面的地址,具體步驟為:根據(jù)采樣系數(shù)計算出需要采樣的頁面數(shù)m,計算方法是:內(nèi)存空間中頁面的總頁面數(shù)*采樣系數(shù)/100。假設設定初始采樣系數(shù)是100,即采樣VMA中的所有頁面,然后在每輪采樣后給采樣系數(shù)減少一定的值,這樣每次采樣就會比上次采樣時選到的頁面要少,因為前幾輪的采樣系數(shù)較高,所以大部分重復頁面都會在前幾輪采樣中被選中,隨后被合并,前幾輪高密度的采樣過后會進入低密度的采樣,這樣又能使一些內(nèi)容有變化的頁面有機會被選中進行合并操作;把虛擬內(nèi)存區(qū)域平均分成m個區(qū)間;在每個區(qū)間中隨機取一個頁面。執(zhí)行步驟103,判斷當前rmap_item的地址是否小于采樣到的頁面地址(rmap_item的地址小于采樣到的頁面地址說明rmap_item對應的頁面位于本次處理的采樣區(qū)間內(nèi)部),若是則執(zhí)行步驟104,如果當前rmap_item的地址小于采樣到的地址,則繼續(xù)判斷當前rmap_item是否在穩(wěn)定樹中,如果當前rmap_item在穩(wěn)定樹中,則執(zhí)行步驟106,當前rmap_item指向鏈表中的下一個頁面地址;如果當前rmap_item不在穩(wěn)定樹中,則執(zhí)行步驟105,從鏈表中刪除該rmap_item,并指向鏈表中的下一個頁面地址,在執(zhí)行步驟103時,如果當前rmap_item的地址不小于采樣到的地址,則執(zhí)行步驟107判斷當前rmapjtem的地址是否等于采樣到的地址,若是,則執(zhí)行步驟109,當前rmap_item指向鏈表中的下一個頁面,并執(zhí)行步驟110,判斷采樣是否結束(已采樣的頁面數(shù)是否達到m,若達到m則說明采樣結束),若采樣沒結束,則執(zhí)行步驟107,若采樣結束,則執(zhí)行步驟111,對當前rmap_item到鏈表尾的rmap_item執(zhí)行rmap_item的回收邏輯,即回收rmap_item, vma_node維護的rmap_item鏈表的結點按照虛擬地址從小到大排序,回收rmap_item的操作只需要遍歷一次rmap_item鏈表,具體實現(xiàn)方法為:對于本輪采樣到的rmap_item,無條件加入vma_node維護的rmap_item鏈表;對于上輪采樣中的rmap_item,如果已經(jīng)找到可以合并的相同內(nèi)容的頁面,即該rmap_item已鏈接到穩(wěn)定樹中,則留該rmap_item,如果既不在穩(wěn)定樹中,而且不被本輪采樣命中,則回收該rmap_item。執(zhí)行步驟112,遞減采樣系數(shù),若遞減后的采樣系數(shù)coefficient不低于一定閥值,則返回步驟101進行下一輪采樣,執(zhí)行步驟113,若采樣系數(shù)小于閾值且沒有一個rmap_item在穩(wěn)定樹中,則銷毀vma_node,在執(zhí)行步驟107時,若當前rmap_item的地址不等于采樣到的地址,則執(zhí)行步驟108,創(chuàng)建新rmap_item指針指插入到鏈表。以上鏈表均為vma_node維護的鏈表。
[0051] 本發(fā)明同時提出了一種低開銷的高效內(nèi)存去冗余系統(tǒng),包括五個模塊,如圖3所示:模塊I為采樣模塊,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面;根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m;將該內(nèi)存空間平均分成m個區(qū)間;在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面;根據(jù)采樣系數(shù)計算采樣頁面地址;模塊2為合并模塊,用于查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息,判斷當前采樣頁面是否與其他頁面相同;模塊3為查找模塊,用于根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符;將冗余頁面標識符加入相應的紅黑樹中,并修改頁面指針;模塊4為刪除模塊,用于刪除該冗余頁面中的內(nèi)容;模塊5為反饋模塊,用于將該冗余頁面的該信息反饋給用戶;統(tǒng)計冗余頁面信息并通過特定接口反饋給用戶。其中該采樣模塊設定采樣系數(shù),根據(jù)該采樣系數(shù)獲取該采樣頁面,并通過該采樣系數(shù)確定采樣范圍;若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大。
【權利要求】
1.一種內(nèi)存空間去冗余方法,其特征在于,包括: 步驟SI,對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面; 步驟S2,查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息; 步驟S3,刪除該冗余頁面中的內(nèi)容,以完成該內(nèi)存空間去冗余。
2.如權利要求1所述的低開銷的高效內(nèi)存空間去冗余方法,其特征在于,步驟SI的具體步驟包括: 步驟Sll,根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m ; 步驟S12,將該內(nèi)存空間平均分成m個區(qū)間; 步驟S13,在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面。
3.如權利要求1所述的低開銷的高效內(nèi)存空間去冗余方法,其特征在于,該步驟S2還包括:根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符。
4.如權利要求1所述的低開銷的高效內(nèi)存空間去冗余方法,其特征在于,還包括:將該冗余頁面的該信息反饋給用戶。
5.如權利要求1或2所述的低開銷的高效內(nèi)存空間去冗余方法,其特征在于,若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大。
6.一種低開銷的高效內(nèi)存空間去冗余系統(tǒng),其特征在于,包括: 采樣模塊,用于對該內(nèi)存空間中的頁面進行采樣,其中設定采樣系數(shù),通過該采樣系數(shù)確定采樣范圍,并根據(jù)該采樣范圍獲取采樣頁面; 合并模塊,用于查找該內(nèi)存空間中頁面內(nèi)容與該采樣頁面的內(nèi)容相同的頁面,作為冗余頁面,并將該冗余頁面與該采樣頁面合并,同時記錄該冗余頁面的信息; 刪除模塊,用于刪除該冗余頁面中的內(nèi)容。
7.如權利要求6所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),其特征在于,該采樣模塊還包括:根據(jù)該采樣系數(shù)獲取采樣的頁面數(shù)m ;將該內(nèi)存空間平均分成m個區(qū)間;在每個該區(qū)間中隨機抽取多個頁面組成該采樣頁面。
8.如權利要求6所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),其特征在于,還包括查找模塊,用于根據(jù)該冗余頁面的標識符查找穩(wěn)定樹,若該冗余頁面的標識符在該穩(wěn)定樹內(nèi),則將該冗余頁面與該采樣頁面合并,并將該冗余頁面的標識符加入到該穩(wěn)定樹,該穩(wěn)定樹用于存儲該內(nèi)存空間中具有寫保護的頁面的標識符。
9.如權利要求6所述的低開銷的高效內(nèi)存空間去冗余系統(tǒng),其特征在于,還包括反饋模塊,用于將該冗余頁面的該信息反饋給用戶。
10.如權利要求6或7所述的低開銷的高效內(nèi)存空間去冗余方法,其特征在于,若該采樣系數(shù)減小,則該頁面數(shù)m減少,反之增大。
【文檔編號】H04L29/06GK104035822SQ201410231580
【公開日】2014年9月10日 申請日期:2014年5月28日 優(yōu)先權日:2014年5月28日
【發(fā)明者】宋 瑩, 高俊杰, 孫毓忠 申請人:中國科學院計算技術研究所