位元組快取方法總結

lxgeek發表於2015-08-17

  在位元組快取中我們需要考慮快取比,為了達到快取的效果,我們需要對資料包的內容進行切分。目前學術上的切分方法如下:

  上圖中的9種方法可以根據方法自身的特性分為三類。
第一類:位置分類法,此方法按固定大小將資料切分。其方法的優勢的計算開銷很小,但是對資料變化很敏感。
第二類:取樣法,MODP、WINN、MAXP、SAMPLEBYTE、DYNABYTE均屬於此類。由於計算指紋的時候是按位元組遞增取塊計算,因此
指紋的數量會很多,考慮到記憶體和磁碟的壓力,取樣法根據全域性條件、區域性條件、統計結果來取樣資料塊。
第三類:全域性快取,MRC和PACK屬於此類,此類方法按照一定的方法將資料塊切分,再對切分後的資料塊計算hash值並儲存。
剩下的FBC方法[6]的創新點是評估出使用頻率高的塊,以此來節省記憶體與磁碟的開銷。
 
1.FIXED
     按固定大小劃分資料的最大問題對資料修改十分敏感,一旦某一個位置的資料修改後,其後所有資料的hash值均發生了變化。
 
2.MODP 
     此方法由論文[1]於2000年提出。其系統架構如下:
MODP的實現:
     MODP是通過指紋來找到重複的資料。 
  1. 指紋通過Rabin指紋演算法計算。
  2. 對資料包計算了所有指紋之後,由於資料量巨大,我們需要取樣。取樣對指紋二進位制表示時最後幾位為0的指紋。
  3. 採用hash表來存放指紋,對相同的指紋採用FIFO的方式處理。如果查詢到相同的指紋,向兩邊擴散比較。
MODP的虛擬碼如下:
效果分析:
     可以通過虛擬碼中的引數p來控制取樣的數目,如果取樣的數目很少的話,就會效果很差,因為大量的資料沒有取樣。
如果取樣很多的話,那麼就會讓MODP接近於FIXED方法。而且我們以全域性的引數p來定義劃分的條件,因此有可能很多
區域並沒有取樣。
 
3.WINN
     此方法由論文[2]提出, 此方法可以保證在一定範圍的hash值中一定會取一個區域性最小或區域性最大的hash值。此方法的優勢
在於可以讓取樣均勻分佈,可用於解決MODP中的大範圍取樣失效。
 
4.MAXP
     在MODP和WINN中,我們計算了大量的指紋,但是很多指紋並沒有被取樣。MAX會選擇區域性資料內容的最大值而不是WINN的
區域性指紋的最大值,MAX選擇出最大值後在計算指紋。此方法由論文[3]提出。
 
5.SAMPLEBYTE 
     此方法的虛擬碼如下:
對於此方法[4]使用取樣的位元組來設定切割點,由上圖可知,取樣的自己存放於SMPLETABLE陣列。
在第6行,一旦確認需要取樣,就設定取樣點並將i滑動p/2位元組。 在離線方式下,陣列SMPLETABLE是
通過對MAXP的結果進行排序得到。在實驗中驗證,其方法效果並沒有很大改善,原因可能是:取樣出來
位元組和重複的部分並不一定有聯絡。
 
6.DYNABYTE
     由於SAMPLEBYTE存在SMPLETABLE陣列大小是固定和需要預先對資料進行訓練這兩個問題,論文[5]提出了
DYNABYTE方法,此方法類似於SAMPLEBYTE,但是可以自適應的動態對查詢表進行調整。
 
7.MRC
     塊的大小直接影響著快取比,磁碟效能和記憶體壓力。更小的塊可能達到更好的快取比,隨之而來的是增加記憶體
壓力和磁碟訪問量。更大的塊在使用記憶體和磁碟方面有優勢,但是快取比就低了,因此[9]提出了MRC方法。
如上圖,MRC方法以樹的方式對塊進行規劃,在磁碟中MPC將各層的資料均儲存,這樣實現的原因是:
  1. 磁碟價格因素
  2. 減少磁碟訪問量  和 記憶體壓力

上圖是MRC和其他方法做對比,SRC代表:single-resolution chunking。MRC-Small方法是指只儲存最小塊,以最小
塊來重建最大塊。MRC-Large方法是指只儲存最大塊並依賴索引資訊來構建最小塊。
     
 
參考文獻:
[1]《A Protocol-Independent Technique for Eliminating Redundant Network Traffic》October 2000 
[2]  《Winnowing: Local Algorithms for Document Fingerprinting》  2003
[3]《CONTENT-DEPENDENT CHUNKING FOR DIFFERENTIAL COMPRESSION, THE LOCAL MAXIMUM APPROACH》August 2007
[4]《EndRE: An End-System Redundancy Elimination Service for Enterprises》 2010 
[5]《DYNABYTE: A Dynamic Sampling Algorithm  for Redundant Content Detection》2011
[6] 《Frequency Based Chunking for Data De-Duplication》  Aug. 2010
[7] 《Wide-area Network Acceleration for the Developing World》 2009

相關文章