緩衝淘汰演算法之LFU

來源:互聯網
上載者:User
1. LFU類1.1. LFU1.1.1. 原理

LFU(Least Frequently Used)演算法根據資料的曆史訪問頻率來淘汰資料,其核心思想是“如果資料過去被訪問多次,那麼將來被訪問的頻率也更高”。

1.1.2. 實現

LFU的每個資料區塊都有一個引用計數,所有資料區塊按照引用計數排序,具有相同引用計數的資料區塊則按照時間排序。

具體實現如下:

 

1. 新加入資料插入到隊列尾部(因為引用計數為1);

2. 隊列中的資料被訪問後,引用計數增加,隊列重新排序;

3. 當需要淘汰資料時,將已經排序的列表最後的資料區塊刪除。

1.1.3. 分析

l 命中率

一般情況下,LFU效率要優於LRU,且能夠避免周期性或者偶發性的操作導致快取命中率下降的問題。但LFU需要記錄資料的曆史訪問記錄,一旦資料訪問模式改變,LFU需要更長時間來適用新的訪問模式,即:LFU存在曆史資料影響將來資料的“緩衝汙染”效用。

l 複雜度

需要維護一個隊列記錄所有資料的訪問記錄,每個資料都需要維護引用計數。

l 代價

需要記錄所有資料的訪問記錄,記憶體消耗較高;需要基於引用計數排序,效能消耗較高。

 

1.2. LFU*1.2.1. 原理

基於LFU的改進演算法,其核心思想是“只淘汰訪問過一次的資料”。

1.2.2. 實現

LFU*資料緩衝實現和LFU一樣,不同的地方在於淘汰資料時,LFU*只淘汰引用計數為1的資料,且如果所有引用計數為1的資料大小之和都沒有新加入的資料那麼大,則不淘汰資料,新的資料也不緩衝。

1.2.3. 分析

l 命中率

和LFU類似,但由於其不淘汰引用計數大於1的資料,則一旦訪問模式改變,LFU*無法緩衝新的資料,因此這個演算法的應用情境比較有限。

l 複雜度

需要維護一個隊列,記錄引用計數為1的資料。

l 代價

相比LFU要低很多,不需要維護所有資料的曆史訪問記錄,只需要維護引用次數為1的資料,也不需要排序。

1.3. LFU-Aging1.3.1. 原理

基於LFU的改進演算法,其核心思想是“除了訪問次數外,還要考慮訪問時間”。這樣做的主要原因是解決LFU緩衝汙染的問題。

1.3.2. 實現

雖然LFU-Aging考慮時間因素,但其演算法並不直接記錄資料的訪問時間,而是通過平均引用計數來標識時間。

LFU-Aging在LFU的基礎上,增加了一個最大平均引用計數。噹噹前緩衝中的資料“引用計數平均值”達到或者超過“最大平均引用計數”時,則將所有資料的引用計數都減少。減少的方法有多種,可以直接減為原來的一半,也可以減去固定的值等。

1.3.3. 分析

l 命中率

LFU-Aging的效率和LFU類似,當訪問模式改變時,LFU-Aging能夠更快的適用新的資料訪問模式,效率要高。

l 複雜度

在LFU的基礎上增加平均引用次數判斷和處理。

l 代價

和LFU類似,當平均引用次數超過指定閾值(Aging)後,需要遍曆訪問列表。

 

1.4. LFU*-Aging1.4.1. 原理

LFU*和LFU-Aging的合成體。

1.4.2. 實現

略。

1.4.3. 分析

l 命中率

和LFU-Aging類似。

l 複雜度

比LFU-Aging簡單一些,不需要基於引用計數排序。

l 代價

比LFU-Aging少一些,不需要基於引用計數排序。

1.5. Window-LFU1.5.1. 原理

Windows-LFU是LFU的一個改進版,差別在於Window-LFU並不記錄所有資料的訪問曆史,而只是記錄過去一段時間內的訪問曆史,這就是Window的由來,基於這個原因,傳統的LFU又被稱為“Perfect-LFU”。

1.5.2. 實現

與LFU的實現基本相同,差別在於不需要記錄所有資料的曆史訪問資料,而只記錄過去一段時間內的訪問曆史。具體實現如下:

 

1)記錄了過去W個訪問記錄;

2)需要淘汰時,將W個訪問記錄按照LFU規則排序淘汰

 

舉例如下:

假設曆史訪問記錄長度設為9,緩衝大小為3,圖中不同顏色代錶針對不同資料區塊的訪問,同一顏色代錶針對同一資料的多次訪問。

範例1:黃色訪問3次,藍色和橘色都是兩次,橘色更新,因此緩衝黃色、橘色、藍色三個資料區塊

範例2:綠色訪問3次,藍色兩次,暗紅兩次,藍色更新,因此緩衝綠色、藍色、暗紅三個資料區塊

 

1.5.3. 分析

l 命中率

Window-LFU的命中率和LFU類似,但Window-LFU會根據資料的訪問模式而變化,能夠更快的適應新的資料訪問模式,”緩衝汙染“問題不嚴重。

l 複雜度

需要維護一個隊列,記錄資料的訪問流曆史;需要排序。

l 代價

Window-LFU只記錄一部分的訪問記錄,不需要記錄所有的資料訪問曆史,因此記憶體消耗和排序消耗都比LFU要低。

1.6. LFU類演算法對比

由於不同的訪問模型導致命中率變化較大,此處對比僅基於理論定性分析,不做定量分析。

對比點

對比

命中率

Window-LFU/LFU-Aging > LFU*-Aging > LFU > LFU*

複雜度

LFU-Aging > LFU>  LFU*-Aging  >Window-LFU > LFU*

代價

LFU-Aging > LFU > Window-LFU > LFU*-Aging  > LFU*

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.