斯 雷,鄧玉輝,2
1(暨南大學 信息科學技術(shù)學院,廣州 510632)2(中國科學院 計算技術(shù)研究所 計算機體系結(jié)構(gòu)國家重點實驗室,北京100190) E-mail:tyhdeng@jnu.edu.cn
緩存機制在計算機各級存儲系統(tǒng)中廣泛存在,主要是利用數(shù)據(jù)的時間局部性和空間局部性緩解高速和低速存儲設(shè)備間的性能差異[1].磁盤內(nèi)部的緩存,表現(xiàn)為磁盤控制器上的一塊RAM芯片,在磁盤低速盤片和高速外部接口之間起到緩沖的橋梁作用.研究表明,磁盤緩存大小設(shè)置為磁盤容量的0.1%至0.3%時,能夠達到最好的效果[2].緩存命中率是衡量緩存好壞的重要指標,通過改變頁面大小,最大化磁盤緩存的命中率具有重要意義.傳統(tǒng)內(nèi)存及磁盤緩存的頁面大小多為固定的4K大小,而隨著計算機的發(fā)展,許多處理器和操作系統(tǒng)已經(jīng)能夠完全支持混合頁機制.例如,X86平臺能夠支持2M和1G的巨頁大小,ARM平臺能夠支持1M和16M的巨頁大小(1)http://en.wikipedia.org/wiki/Page(computer_memory).
巨頁的引入,一方面能夠使相同容量的快表(TLB)容納更多的內(nèi)容,增加TLB命中率,極大地減少了由于TLB未命中而帶來的性能開銷.研究[3,4]表明,TLB未命中是導致虛擬化系統(tǒng)和裸機之間性能差異的主要原因,也成為了內(nèi)存訪問的主要瓶頸之一.另一方面,頁面大小也是影響緩存命中率的重要因素,巨頁能夠擴大傳統(tǒng)緩存的頁面大小,最大化緩存的命中率.巨頁是由固定數(shù)量的連續(xù)基頁組成,例如在X86 64位系統(tǒng)中,2M大小的巨頁是由連續(xù)的512個4K大小的基頁組合而成.隨著頁面變大,頁表項變得更少,相同大小的TLB就能容納更多的內(nèi)容,從而提高TLB命中率.在虛擬環(huán)境中,對于TLB未命中所產(chǎn)生的二維頁表遍歷,隨著巨頁的引入,能夠?qū)⑵渥畲笠么螖?shù)從24減少到15[5].Guilherme[6]提出一種節(jié)能型組相聯(lián)結(jié)構(gòu)的混合快表MIX TLBs,通過巨頁分配機制能夠同時支持多種頁面大小,并提高性能達10%-30%.
傳統(tǒng)基于LRU算法的緩存系統(tǒng),并不能感知磁盤緩存中的重復數(shù)據(jù),導致緩存中存在大量的冗余數(shù)據(jù)塊,這對于磁盤中寶貴的緩存空間而言是巨大的浪費.Castro[7]提出采用數(shù)據(jù)壓縮的方法,減少內(nèi)存交換頻率以節(jié)省緩存容量.然而,對于壓縮算法而言,其本身就需要大量的計算開銷,當壓縮率很低的時候不僅無法節(jié)省空間還會引入許多額外的計算和時間開銷.CacheDedup系統(tǒng)[8]采用重復數(shù)據(jù)刪除技術(shù)對緩存進行去重操作,在緩存中只保留唯一的數(shù)據(jù)塊,大大節(jié)省了緩存容量,并進一步提出了去重感知的D-LRU、D-ARC緩存替換算法.
值得注意的是,巨頁對于去重也有一定的影響.傳統(tǒng)針對基頁的完全去重能夠消除磁盤緩存中的冗余數(shù)據(jù),但隨著頁面變大,完全重復的巨頁將變得越來越少,去重率將會變得越來越低.為了實現(xiàn)有效的去重,當前許多操作系統(tǒng)主要采用主動去重方法ADA(Aggressive Deduplication Approach),該方法主動地將巨頁拆分為基頁,然后在基頁之間進行去重操作[9],例如Linux系統(tǒng)中的KSM.文章[10]實驗結(jié)果表明,ADA方法能夠節(jié)省13.7%~47.9%的內(nèi)存空間,而以巨頁為單位的去重僅能節(jié)省0.8%~5.9%的空間.雖然ADA方法節(jié)省了更多的存儲空間,但對于拆分的巨頁進行訪問會顯著減少TLB的命中率,降低了訪問性能.并且,當前許多操作系統(tǒng)并不支持對已拆分巨頁進行重構(gòu).Fan Guo等人提出了一種基于混合頁的內(nèi)存去重方案SmartMD[10],此方案通過利用去重技術(shù)最大限度節(jié)省內(nèi)存容量,同時保持了內(nèi)存的高訪問性能.
針對上述問題,本文提出了一種基于混合頁面的磁盤緩存去重策略.首先,在磁盤緩存中引入混合頁機制.在保留基頁的同時,引入巨頁,自適應地調(diào)整巨頁的大小以使緩存命中率最大化.其次,對基頁和巨頁進行動態(tài)轉(zhuǎn)換.設(shè)置監(jiān)視程序動態(tài)檢測巨頁的冷熱程度,將重復率高的冷巨頁拆分為基頁,以提高緩存去重率,最大限度節(jié)省緩存容量;同時,當拆分后的巨頁變熱時,對其進行重構(gòu)操作,以提高緩存的命中率以及訪問延遲,使命中率和去重率均達到相對最優(yōu).最后,利用去重技術(shù)對緩存進行去重操作.將LRU緩存替換算法與重復數(shù)據(jù)刪除技術(shù)相結(jié)合,對基頁和巨頁分別進行去重操作,在緩存中只保留唯一的數(shù)據(jù)塊,進一步節(jié)省緩存容量.
本文剩余內(nèi)容組織如下.第二部分,介紹了相關(guān)背景知識,主要包括混合頁機制和緩存去重的相關(guān)概念.第三部分,詳細描述了本文所提出的基于混合頁面的磁盤緩存去重系統(tǒng)整體設(shè)計架構(gòu).第四部分,通過對真實數(shù)據(jù)trace進行仿真實驗,得到相關(guān)實驗數(shù)據(jù)并進行評估與分析.第五部分,得出結(jié)論并進行總結(jié).
頁面大小是由所用處理器體系架構(gòu)決定的,傳統(tǒng)的系統(tǒng)架構(gòu)通常只具有統(tǒng)一的頁面大小,例如為4K大小.然而隨著計算機的發(fā)展,現(xiàn)在的體系結(jié)構(gòu)大多都能很好地支持多種頁面大小,如表1列舉出了常見體系結(jié)構(gòu)下的混合頁面大小.系統(tǒng)的頁面大小越小,則頁面的個數(shù)就越多.例如,對于32位的虛擬地址空間映射到4K大小的頁面,則虛擬頁面?zhèn)€數(shù)為220(232/212),而當頁面大小調(diào)整到64K時就只需要216(232/216)個頁.程序每次訪問內(nèi)存,從虛擬地址轉(zhuǎn)換為物理地址,需要先訪問TLB,而TLB未命中造成的二維頁表遍歷的代價異常高,達到6倍的頁表查找和內(nèi)存訪問,并且隨著主存容量的增加代價越來越高[11-14].混合頁機制引入巨頁后,增大了頁面大小,使得相同大小的TLB能夠存放更多的頁,映射到更多的內(nèi)存空間,極大地提高了TLB的命中率.并且混合頁機制能夠自適應地調(diào)整緩存中的頁面大小,從而使緩存命中率達到最大.
表1 常見體系架構(gòu)下的混合頁面大小
Table 1 Page sizes among architectures
處理器架構(gòu)基頁大小巨頁大小X86-32位4K2M,4MX86-64位4k2M,1GARMv74K64K,1M,16MIA-64位4K8K,64K,256K,1M,4M,16M,256MPower4K64K,16M,16GSPARC v84K256K,16MUltraSPARC8K64K,512K,4M,32M,256M,2G,16G
消除緩存冗余數(shù)據(jù)的主要技術(shù)手段是數(shù)據(jù)壓縮[15-17]和重復數(shù)據(jù)刪除[18,19].數(shù)據(jù)壓縮主要是針對原始數(shù)據(jù)采用更少的位對其進行重新編碼,以達到優(yōu)化存儲空間的目的,常見的主流壓縮算法有LZ77、LZSS、LZ78和LZW四種.但當頁面壓縮率很低的時候,由于引入了大量額外的計算開銷從而導致不僅無空間節(jié)省的收益,反而付出了巨大代價.
重復數(shù)據(jù)刪除技術(shù)則避免了這一弊端,通過對緩存空間進行去重檢測,篩選出完全相同的數(shù)據(jù)塊并進行刪除操作,在緩存中只保留唯一的副本,從而消除緩存中的冗余數(shù)據(jù),節(jié)省緩存空間.去重技術(shù)按照去重粒度可分為字節(jié)級去重、塊級去重和文件級去重,其中字節(jié)級去重主要是利用Delta編碼來識別重復數(shù)據(jù),而塊級和文件級則主要是利用哈希算法(如MD5和SHA-1)來識別相應的重復數(shù)據(jù)塊.去重過程主要包括數(shù)據(jù)塊切分、指紋計算和數(shù)據(jù)塊檢索,首先將數(shù)據(jù)按照固定大小分割為數(shù)據(jù)塊,并為每個數(shù)據(jù)塊計算指紋,然后將指紋作為關(guān)鍵字進行Hash比對,若匹配成功則為重復數(shù)據(jù)塊,最后進行去重操作.
傳統(tǒng)基于LRU替換算法的磁盤緩存系統(tǒng),并不能有效識別緩存中的重復數(shù)據(jù),導致緩存中存在大量冗余數(shù)據(jù).在這種情況下,文章[8]提出了一種新穎的緩存去重方案,將數(shù)據(jù)緩存與去重元數(shù)據(jù)(包括源地址信息和數(shù)據(jù)指紋信息)相結(jié)合,有效地對這兩個組件進行管理.并在此基礎(chǔ)上提出了去重感知的緩存替換算法,顯著提高了緩存命中率并降低了延遲.
本文提出的混合頁磁盤緩存去重策略,其主要思想是在磁盤緩存中引入混合頁機制,這種緩存中的混合頁一方面能夠很好地適配大規(guī)模應用程序所采用的巨頁機制,另一方面能夠針對不同的應用負載自適應地動態(tài)調(diào)整緩存頁面的大小.最佳的頁面大小能夠提高緩存命中率,該緩存系統(tǒng)通過混合頁機制動態(tài)調(diào)整巨頁大小,使頁面大小調(diào)整為一個合適值,從而讓緩存命中率達到最大.其次,將混合頁機制與重復數(shù)據(jù)刪除技術(shù)相結(jié)合,去除緩存中的冗余數(shù)據(jù),提高緩存利用率.
我們在傳統(tǒng)的磁盤緩存中增加了巨頁產(chǎn)生器、頁面監(jiān)視器以及去重組件.巨頁產(chǎn)生器主要用于生成巨頁,將連續(xù)的基頁進行合并,生成相應巨頁.頁面監(jiān)視器用于檢測巨頁和基頁的冷熱程度,并決定是否將巨頁進行拆分或?qū)⒁巡鸱值幕撨M行重構(gòu).去重組件在緩存寫入磁盤之前進行去重操作,在緩存中只保留唯一的副本
圖1給出了混合頁磁盤緩存去重系統(tǒng)的詳細設(shè)計圖,整個系統(tǒng)的關(guān)鍵技術(shù)在于兩個方面.其一,如何在基頁與巨頁之間進行動態(tài)轉(zhuǎn)換.基頁大小由操作系統(tǒng)所決定,巨頁大小需要根據(jù)實際的應用負載進行調(diào)整,而巨頁、基頁之間的轉(zhuǎn)換則需要實時地監(jiān)測頁面的冷熱程度.其二,如何將混合頁機制與重復數(shù)據(jù)刪除技術(shù)有效地結(jié)合.加入混合頁機制后,去重難度將進一步增加,巨頁、基頁都需要進行去重操作才能最大限度節(jié)省緩存空間.
圖1 混合頁磁盤緩存詳細設(shè)計圖Fig.1 Detailed design of mixed page disk cache
為了解決以上問題,混合頁磁盤緩存去重系統(tǒng)主要分為如下三個部分:
1. 將連續(xù)基頁合并為巨頁.
2. 監(jiān)視基頁和巨頁,并進行動態(tài)轉(zhuǎn)換.
3. 將調(diào)整后的基頁和巨頁進行去重操作.
首先,根據(jù)初始頁地址,將地址連續(xù)的基頁合并為大的巨頁.巨頁的大小是統(tǒng)一的,主要根據(jù)應用程序負載情況動態(tài)確定,例如當巨頁大小設(shè)置為2M時,一個巨頁是由512個地址連續(xù)的4k大小基頁合并而成,若存在超過512個連續(xù)的基頁則進行合并,否則保持原有基頁.然后,監(jiān)視程序開始工作,檢測巨頁和基頁的冷熱程度.將那些訪問頻率低的冷巨頁拆分為基頁,這樣有利于對拆分的巨頁進行去重操作,提高去重率.同時,當這些拆分的巨頁變熱時,再對其進行重構(gòu)操作,以提高緩存命中率和訪問延遲.最后,對調(diào)整后的基頁和巨頁分別進行數(shù)據(jù)指紋的比對,以確定是否為重復的數(shù)據(jù)塊,從而進行重刪操作
混合頁機制中有巨頁和基頁之分,它們的各字段也不盡相同.標志位tag用1個bit位來表示,用以標識該頁是基頁還是巨頁,當該頁為巨頁時tag等于1,否則tag為0.start_addr字段表示巨頁的起始地址,size字段表示巨頁的大小,基頁并沒有此字段,這是因為基頁在程序執(zhí)行前就已經(jīng)由操作系統(tǒng)決定,是一個固定值,在我們的實驗中該基頁大小為4K.巨頁由連續(xù)的基頁組成,并且內(nèi)部對每個基頁都進行了編號.基頁地址轉(zhuǎn)換并未變化,因此對于組成巨頁的每個基頁,可以通過編號計算出頁內(nèi)偏移量,然后利用巨頁起始地址得到巨頁內(nèi)部每個基頁的地址.
在巨頁產(chǎn)生器生成巨頁后,監(jiān)視程序開始工作,對巨頁和基頁進行冷熱檢測.基頁和巨頁都含有一個degree字段,初始值為0.某頁被訪問時degree進行自加,當degree大于1時表示該頁被重復訪問,將其視為熱頁,否則即為冷頁.
算法1.混合頁的相互轉(zhuǎn)換
輸入:Pagei∈InitialPage,i=0,1,2,…,n
1.fori=0;i≤n;i++ do
2. ifPageiisHugePagethen
3. ifPageiiscoldthen
4.BasePage←HugePage;//巨頁拆分為基頁
5. else
6. continue;
7. else
8. ifPageiishotthen
9.HugePage←BasePage;//基頁重構(gòu)為巨頁
10. else
11. continue;
12.end
算法 1 描述了巨頁和基頁的動態(tài)轉(zhuǎn)換過程.當所檢測的頁為巨頁(由tag標志位決定),并且該頁的訪問頻率較低時(為冷巨頁),則將該巨頁拆分為若干個連續(xù)的基頁,并對每個拆分后基頁的各個字段進行相應內(nèi)容的填充,而當該頁為熱巨頁時,則保留不進行操作.同理,當所檢測的頁為拆分后的基頁,并且該頁的訪問頻率變得越來越高時(變成了熱頁),則又將這些拆分后的連續(xù)基頁進行重構(gòu)操作,合并為巨頁.值得注意的是,我們的程序并不是對每一個拆分的熱基頁都進行一次重構(gòu),而是將這些連續(xù)的熱基頁進行統(tǒng)一的重構(gòu)操作,這樣進一步提高了程序的效率,避免了多次冗余的重構(gòu)操作
算法2.巨頁大小自適應調(diào)節(jié)算法
輸入:InitialHugePageSize;Pagei∈InitialPage,i=0,1,2,…,n
輸出:HugePageSize;
1.whilehit_ratio>max_ratiodo
2. whilei 3. ifPageiisHugePagethen//巨頁 4. whilej 5.Pagei[j].operator(); 6. //統(tǒng)計巨頁命中率,并記錄 7.j++; 8. end 9. else //基頁 10.Pagei.operator(); 11. //統(tǒng)計基頁命中率,并記錄 12.i++; 13. end 14.HugePageSize*=2; //調(diào)整巨頁大小 15. max_ratio=hit_ratio; //調(diào)整最大命中率 16.end 算法 2 描述了巨頁大小的自適應算法.程序由初始頁序列開始,若該頁為巨頁,則對組成該巨頁的所有基頁進行遍歷,統(tǒng)計這些頁的命中情況;若為基頁,則無需遍歷,直接統(tǒng)計該基頁命中情況.之后根據(jù)命中數(shù)據(jù),計算緩存命中率,并將該命中率與最大命中率進行比較.若該命中率就是最大命中率,則程序結(jié)束;否則繼續(xù)調(diào)整巨頁大小,使之成倍數(shù)增加.最終得到最佳的巨頁大小. 為了消除混合頁中的冗余數(shù)據(jù),提高緩存利用率,我們將重復數(shù)據(jù)刪除技術(shù)與混合頁機制有效結(jié)合在一起.雖然傳統(tǒng)基于LRU替換算法的磁盤緩存,實現(xiàn)簡單,開銷也很小,但卻無法識別緩存中的冗余數(shù)據(jù)塊,導致了對寶貴緩存空間的浪費.增加去重操作后,原來的地址映射關(guān)系從一對一變成了多對一,不再是源地址到Cache地址的一一映射,同一數(shù)據(jù)塊將映射到多個源地址. 首先,我們采用固定分塊的重復數(shù)據(jù)刪除方法,利用MD5算法對數(shù)據(jù)塊進行指紋計算,相應指紋對應于頁面的hash值.其次,為了方便有效地對緩存數(shù)據(jù)進行管理,系統(tǒng)維護了兩個緩存鏈表,分別是數(shù)據(jù)緩存(Data Cache)鏈表和元數(shù)據(jù)緩存(Metadata Cache)鏈表.其中數(shù)據(jù)緩存鏈表用以保存去重后的唯一數(shù)據(jù)塊,而元數(shù)據(jù)緩存則用以保存頁的訪問順序.當連續(xù)的基頁合并為巨頁后,該巨頁所對應的hash值采用所有基頁hash的均值表示.一方面,可以有效識別巨頁,識別巨頁利用標記位和hash值共同決定;另一方面,降低了hash值逐一比對的計算開銷.數(shù)據(jù)緩存與元數(shù)據(jù)緩存通過指紋索引有效聯(lián)系,當識別到重復數(shù)據(jù)塊后,指紋索引計數(shù)器開始累加,以統(tǒng)計相同數(shù)據(jù)塊出現(xiàn)的次數(shù).對于多次出現(xiàn)的相同數(shù)據(jù)塊,將其指向數(shù)據(jù)緩存中相應的唯一數(shù)據(jù)塊,達到去重目的. 緩存中所采用的是較為簡單的LRU頁面替換算法,將最近最久未使用的頁面替換出去.由于該實驗主要與傳統(tǒng)LRU磁盤緩存作對比,可比性較高,并且開銷較小,易于實現(xiàn).對于巨頁和基頁兩種不同的頁面信息,為了進一步提高緩存整體的去重率,使去重達到最好的效果,我們將其分別進行去重操作.當巨頁、基頁的拆分和重構(gòu)操作完成后,去重工作開始執(zhí)行.一方面,將冷巨頁進行拆分后再執(zhí)行去重,去重的粒度相對變小,能夠識別更小粒度的重復數(shù)據(jù)頁,提高去重率.另一方面,將變熱的基頁進行合并后再進行去重,避免了對每一個基頁的單獨操作,保證去重率的同時,減少了時間開銷. 我們使用CentOS系統(tǒng)的服務(wù)器作為實驗平臺,其內(nèi)核版本為Linux release 7.2.1511,處理器為Intel(R) Xeon(R) CPU E5-2403的4核CPU,主頻大小為1.80GHz,內(nèi)存為10GB,500GB大小的硬盤空間. 表2 實驗數(shù)據(jù)集特征 名稱工作集大小(GB)總I/O大小(GB)寫/讀比例唯一數(shù)據(jù)大小(GB)測試所用I/O數(shù)WebVM2.154.53.623.4185210Homes5.967.331.544.41961599Mail57.117418.1171.320382880 選用美國佛羅里達國際大學(FIU)收集的系統(tǒng)IO作為我們的測試數(shù)據(jù)集,表2列舉了這些Trace數(shù)據(jù)的特征.其中WebVM收集于管理學院在線郵件代理和在線課程網(wǎng)站,Homes來自研究工作小組的日?;顒?包括開發(fā)、測試、實驗、繪圖等操作),Mail則是從學院的電子郵件服務(wù)器收集得到.通過這些真實Trace記錄,利用程序模擬了基于混合頁磁盤緩存的工作過程.分別測試不同的磁盤緩存大小(如:32M,64M,128M,256M,512M)以及各種巨頁大小(如:8K,16K,32K,64K等)下緩存的讀寫命中情況、延遲時間等參數(shù).最終針對這些數(shù)據(jù)進行分析和處理,得到相應結(jié)論. 我們分別在三種不同類型的應用負載下測試了巨頁大小對緩存讀寫命中率的影響.圖5(a)給出了在不同磁盤緩存大小下(如:32M,64M,128M,256M,512M),各種巨頁大小(如:8K,16K,32K,64K,128K,256K)所對應的寫命中情況.對于實驗所采用數(shù)據(jù)集類型,其巨頁大小普遍偏小,在未達到MB級別情況下,命中率已經(jīng)能夠最大化.總的來說,隨著緩存大小逐漸增加,緩存命中率呈現(xiàn)遞增的趨勢,在512M的緩存大小時達到最大命中率.同時,隨著巨頁大小逐漸增加,緩存命中率呈現(xiàn)先增加后減小的趨勢,均會在某一個巨頁大小命中率達到最大值.此時的巨頁大小,就是程序自適應調(diào)節(jié)的最終結(jié)果,也是使命中率最大的最佳巨頁大小.例如,對于WebVM Trace數(shù)據(jù)集,其巨頁大小調(diào)節(jié)為16k;Mail Trace其巨頁大小為64K;Homes Trace巨頁大小為32K. 圖5(b)呈現(xiàn)的是在不同磁盤緩存大小下,各種巨頁大小相對應的讀命中情況.總的趨勢與寫命中類似,但由于所選用的數(shù)據(jù)集中讀請求相對寫請求少得多,因此讀命中率也相對較小.值得注意的是,對于同一個數(shù)據(jù)集,當寫命中達到最大時,讀命中并未達到最大,因為數(shù)據(jù)集中寫請求起到主導作用,我們選擇適應寫命中.例如,對于Mail Trace數(shù)據(jù)集,最佳巨頁大小任然為64K,此時讀命中雖然并非最大化,卻也最接近最大值. 命中率是衡量緩存優(yōu)劣的重要指標,在磁盤緩存中引入混合頁機制后有效提升了緩存的命中率.一方面,緩存命中率會隨著緩存大小逐漸遞增;另一方面,對于不同的巨頁大小命中率也具有一定規(guī)律.我們對于三種不同的工作負載(WebVM、Mail、Homes),分別在最佳巨頁大小的情況下,測試其讀寫命中率(如圖2所示),并將其與傳統(tǒng)只具有基頁的磁盤緩存進行對比分析. 圖2 不同巨頁大小讀寫命中率的變化情況Fig.2 Changes in the hit ratio of different huge page sizes 圖3 WebVM數(shù)據(jù)集,傳統(tǒng)頁與混合頁讀寫命中率對比Fig.3 Comparison of hit ratio between base and mix page(WebVM) 圖3表示的是對于WebVM數(shù)據(jù)集,混合頁模式與傳統(tǒng)磁盤緩存,在不同緩存大小下,其讀寫命中率對比情況.總的來說,混合頁模式的磁盤緩存命中率均比傳統(tǒng)磁盤提高許多,并隨著緩存大小的增加呈遞增趨勢.例如,圖3(a)中,其寫命中率最高可提升53.6%;圖3(b)中,其讀命中率最高可提升2.36倍.此外,也具有一定的特殊情況,例如對于寫命中率,當緩存容量增大至512M時,此時混合頁模式的磁盤緩存寫命中比傳統(tǒng)磁盤略低,主要是因為對于512M的緩存大小,此時的巨頁大小并非為最佳值,而是采用的近似值16K.而對于讀命中率,當緩存大小增大到256M時,此時混合頁模式的磁盤緩存讀命中率略低.原因主要在于,采用混合頁將連續(xù)基頁合并為巨頁后,合并的巨頁并未命中,反而導致整體的命中率降低.另一方面,WebVM數(shù)據(jù)集容量偏小,其中讀請求所占比例更小,導致合并后的巨頁難以命中,讀命中提升效果不明顯. 對于Mail Trace數(shù)據(jù)集,混合頁模式的磁盤緩存命中率的優(yōu)勢進一步凸顯.如圖4(a),對于傳統(tǒng)磁盤寫命中率極低的32M、64M、128M緩存大小,混合頁模式磁盤緩存其寫命中率提升了15.04至30.08倍.其主要原因在于,一方面,將基頁合并為巨頁后大量巨頁直接命中,而總頁數(shù)因為合并而減少,緩存命中率隨之提高.另一方面,重復數(shù)據(jù)刪除技術(shù)的使用進一步擴展了有效的緩存容量,使命中率進一步得到提升.而對于256M和512M的緩存大小,其寫命中率也能相應提升6.47倍和3.42倍.對于讀命中情況,如圖4(b).總的來說,讀命中率隨著緩存大小的增加,其變化幅度并不大,均維持在2.6倍至2.97倍之間. 圖4 Mail數(shù)據(jù)集,傳統(tǒng)頁與混合頁讀寫命中率對比Fig.4 Comparison of hit ratio between base and mix page(Mail) 對于Homes Trace數(shù)據(jù)集,其命中率的總體趨勢與上面兩種數(shù)據(jù)集類似,如圖5所示,其寫命中率提升了17.75%至24.12%.而對于讀命中來說,混合頁磁盤緩存的效果并不總是很好,然而這并不影響總體的命中率提升.一方面,對于Homes Trace數(shù)據(jù)集,其讀請求所占比例十分小,寫請求總數(shù)達到讀請求總數(shù)的31.5倍.另一方面,其讀命中率在0.01的數(shù)量級,可以忽略不計. 針對上述傳統(tǒng)磁盤緩存與混合頁磁盤緩存的對比分析,可以看到基于混合頁面的磁盤緩存去重策略能夠極大提升磁盤緩存的命中率.通過自適應調(diào)整巨頁的大小,使緩存達到最佳的頁面大小,從而最大化緩存命中率,使其寫命中率最大提升30.08倍,讀命中率最大提升2.97倍. 圖5 Homes數(shù)據(jù)集,傳統(tǒng)頁與混合頁讀寫命中率對比Fig.5 Comparison of hit ratio between base and mix page(Homes) 磁盤訪問延遲時間也是評價磁盤緩存設(shè)計優(yōu)劣的重要指標,通過對三種不同應用負載在128M緩存大小下延遲時間的測試,我們將基于混合頁面的磁盤緩存去重系統(tǒng)與傳統(tǒng)基于LRU替換算法的磁盤緩存進行了詳細的對比分析.磁盤訪問時間Taccess的計算方法如公式(1)所示: Taccess=Hcache·Tcache+(1-Hcache)·Tdisk (1) 其中Hcache表示磁盤緩存命中率,Tcache表示緩存的訪問時間,而Tdisk則表示磁盤的訪問時間.一般現(xiàn)代磁盤其緩存訪問時間在7至10ns之間,我們這里假設(shè)為10ns.那么對于訪問512字節(jié)(1個扇區(qū)),具有64位芯片的緩存數(shù)據(jù),其緩存訪問時間Tcache計算如公式(2)所示: (2) 對于磁盤訪問時間Tdisk,主要由尋道時間Tseek,盤片旋轉(zhuǎn)延遲時間Trotate和數(shù)據(jù)傳輸時間Ttransfer組成.其計算方法如公式(3)所示: Tdisk=Tseek+Trotate+Ttransfer (3) 其中盤片旋轉(zhuǎn)延遲時間Trotate計算方法如公式(4)所示: (4) 我們假設(shè)平均尋道時間Tseek為3.7ms,RPM值為15000,并且磁盤內(nèi)部傳輸速率為1129MB/s.則盤片旋轉(zhuǎn)延遲時間Trotate和數(shù)據(jù)傳輸時間Ttransfer計算如公式(5)和公式(6)所示: (5) (6) 因此,磁盤訪問時間Tdisk=3.7+2+3.63×10-3=5.7ms. 通過模擬實驗并由上述公式,我們計算了傳統(tǒng)只具有基頁的磁盤緩存以及混合頁磁盤的訪問時間,得到圖6所示圖形. 針對不同的工作負載(WebVM、Mail、Homes),基于混合頁機制的磁盤緩存均能節(jié)省大量的延遲時間.主要是因為磁盤緩存中引入混合頁機制后,通過對巨頁大小的自適應調(diào)整,使緩存頁面達到一個最佳值,從而使緩存命中率達到最大.由公式(1)可知,緩存命中率Hcache越大,相應的磁盤訪問時間Taccess則越小.如圖6所示,在緩存大小設(shè)置為128M時,對于WebVM數(shù)據(jù)集,混合頁磁盤緩存共節(jié)省延遲時間達25.61%;Mail數(shù)據(jù)集能夠節(jié)省訪問延遲21.86%;而對于Homes工作負載,則達到了31.72%. 圖6 傳統(tǒng)頁與混合頁訪問延遲對比Fig.6 Comparison of access time between base and mix page 本文提出了一種基于混合頁面的磁盤緩存去重策略,在基于LRU替換算法的傳統(tǒng)磁盤緩存中引入混合頁機制,通過自適應調(diào)整巨頁的大小,使緩存頁面大小達到最佳值,從而使緩存命中率最大化.同時,利用重復數(shù)據(jù)刪除技術(shù)對磁盤緩存進行去重操作,在緩存中只保留唯一數(shù)據(jù)塊,節(jié)省磁盤緩存,提高緩存利用率.實驗結(jié)果表明,對于多種工作負載,混合頁磁盤緩存寫命中率最大提升30.08倍,讀命中率最大提升2.97倍,訪問延遲最大節(jié)省31.72%.3.4 混合頁去重
4 實驗結(jié)果及分析
4.1 實驗環(huán)境
Table 2 Feature of experimental data set4.2 巨頁大小調(diào)整
4.3 命中率
4.4 訪問延遲
5 總 結(jié)