• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    緩存淘汰算法研究

    2018-02-28 09:38:04王永亮
    電子技術(shù)與軟件工程 2018年23期
    關(guān)鍵詞:海量隊列對象

    王永亮

    摘要

    在海量數(shù)據(jù)系統(tǒng)中,海量數(shù)據(jù)受緩存大小的限制會出現(xiàn)緩存滿的情況,淘汰數(shù)據(jù)的選擇就變得非常關(guān)鍵,會影響緩存未命中的次數(shù),從而影響整個系統(tǒng)的性能,因此需要選擇合適的緩存數(shù)據(jù)淘汰算法。本文通過對常用緩存淘汰算法的原理、適用場景和優(yōu)缺點進行分析對比研究,為緩存淘汰算法的選擇提供幫助。

    【關(guān)鍵詞】數(shù)據(jù)存儲 緩存淘汰算法

    1 引言

    在海量數(shù)據(jù)系統(tǒng)中,由于數(shù)據(jù)存儲成本的原因,大多數(shù)數(shù)據(jù)都是存儲在性能相對較差的介質(zhì)上,經(jīng)常需要訪問的數(shù)據(jù)存儲在性能較高的介質(zhì)上,作為海量數(shù)據(jù)的緩存,由于緩存大小的限制不能緩存所有的數(shù)據(jù),因此在數(shù)據(jù)訪問時會出現(xiàn)需要訪問的數(shù)據(jù)不在緩存中的現(xiàn)象即未命中,如果出現(xiàn)未命中此時需要去越過緩存去全量數(shù)據(jù)中去訪問,并將未命中的數(shù)據(jù)放入緩存中,由于緩存大小的限制,會出現(xiàn)緩存滿的情況,此時需要淘汰一些數(shù)據(jù),為新數(shù)據(jù)預留空間,最關(guān)鍵的就是要選擇合適的緩存數(shù)據(jù)淘汰算法。

    2 緩存淘汰算法分析

    由于緩存大小的限制,內(nèi)存緩存算法都是為了提高緩存數(shù)據(jù)的命中率,最理想的算法是每次都能精確的淘汰在近期不會訪問的數(shù)據(jù),在現(xiàn)實的系統(tǒng)中一般無法實現(xiàn);常用的緩存淘汰算法主要從對象訪問的時間和訪問頻率來進行考慮,產(chǎn)生了多種緩存淘汰算法,業(yè)務需要根據(jù)自己的實際情況選擇合適的緩存淘汰算法,本文對常用緩存淘汰算法的原理、適用場景和優(yōu)缺點進行了分析和研究。

    2.1 LRU

    LRU(least recently used)為最近最少使用算法,該算法會首先淘汰最近訪問時間離現(xiàn)在最久的對象,例如:緩存能緩存的對象總個數(shù)為4,訪問對象的順序為:ABCDDEC,LRI淘汰算法產(chǎn)生的結(jié)果過程如圖1所示。

    該算法適合最近訪問時間距離現(xiàn)在越近的對象,越容易被訪問到的場景。

    2.2 LFU

    LFU(Ieast frequently used)為最少頻率使用算法,該算法主要從對象的訪問頻率進行考慮,會保存對象的訪問頻率,在需要淘汰時,會首先淘汰訪問頻率最低的對象,例如:緩存能緩存的對象的總個數(shù)為4,當前在緩存中保存的對象及頻率為:A(5次)、B(3次)、C0次)、D(2次),則有新對象E需要插入,則首先淘汰訪問頻率最低的C對象。如圖2所示。

    單純使用LFU算法會帶來一些問題,如果某個對象在短時間內(nèi)大量訪問,會導致此對象的頻率數(shù)據(jù)非常大,即使此對象在以后很長時間都不會訪問,也不會導致此對象被淘汰;初次訪問的對象由于頻率數(shù)據(jù)比較小,從而很容易被淘汰,所以LFU算法經(jīng)常需要和其他算法一起使用。

    2.3 FIFO

    FIFO(first in first out)為先進先出淘汰算法,該算法根據(jù)對象的緩存次序進行緩存淘汰,如果緩存大小受限,需要淘汰對象,會首先淘汰當前最早緩存的對象。例如:緩存能緩存的對象的總個數(shù)為4,訪問對象的順序為:A、B、C、D、E,整個過程如圖3所示。

    2.4 LRU-K

    LRU-K為LRI算法的優(yōu)化,其中的K表示對象訪問了K(k>1,若K=1則可以認為是LRU)次,LRU-K算法包含兩個隊列:

    (1)對象歷史訪問信息隊列(可以是FIFO或者LRU隊列);

    (2)對象緩存隊列;

    當對象a初次訪問時會被放入到對象歷史訪問信息隊列中,在對象歷史訪問信息隊列中的對象會按照FIFO或者LRU算法進行淘汰;當對象a的訪問次數(shù)達到K次時,對象a會被緩存到對象緩存隊列,同時將對象a的信息從對象歷史訪問信息隊列中刪除;對象緩存隊列中的對象按照LRU算法進行淘汰。

    LRU-K算法能夠避免緩存污染,如果K值選取的較大雖能能提高緩存命中率,但是要淘汰歷史數(shù)據(jù)需要大量的數(shù)據(jù)訪問,適應性差;通常選取的K值為2。

    2.5 MRU

    MRU(MOSt recently used)為最近最多使用算法,該算法會首先淘汰最近訪問時間距離現(xiàn)在最短的對象,例如:緩存能緩存的對象總個數(shù)為4,訪問對象的順序為:ABCDDEC,MRI淘汰算法產(chǎn)生的結(jié)果過程如圖4所示。

    MRU淘汰算法適合于訪問時間距離現(xiàn)在越久的對象,越容易被訪問到的場景;例如:大數(shù)據(jù)量的文件或者數(shù)據(jù)的循環(huán)掃描或者隨機掃描場景。

    2.6 RR

    RR(random:replacement)為隨機淘汰算法,在緩存需要淘汰對象時,該算法會隨機選擇緩存的對象進行淘汰,而不考慮對象的當前和歷史信息,所以該算法實現(xiàn)簡單,比較適合隨機化訪問的場景。

    2.7 MQ

    MQ(multi queue)為多級隊列緩存淘汰算法,滿足以下特性:

    (1)對于給定的負載,緩存的數(shù)據(jù)的生命周期不少于某個固定時間;

    (2)數(shù)據(jù)淘汰的優(yōu)先級由數(shù)據(jù)的訪問頻率決定;

    (3)頻率局部性,訪問頻率高的數(shù)據(jù)隨著訪問頻率的降低會被淘汰;

    MQ包含m個LRU隊列(Q0,Q1…Qm-1)和1個FIFO隊列(Qout),在Q1中的緩存對象比Q2中的緩存對象具有更長的生存時間(i>j);Qout為歷史隊列,其中包含從LRI隊列中淘汰的緩存對象。

    當緩存對象O命中時,緩存對象放入Qk的隊列末尾(根據(jù)緩存隊列優(yōu)先級計算公式k=QueueNum(f),其中f為緩存對象O的范圍頻率),并且具有對應的生存時間;如果對緩存對象。的訪問時間間隔超過了對象。的生存時間,則對象O會從Qk隊列降級到Qk-1的隊列末尾,直至被淘汰;對象O被淘汰后,會將對象O的標示和訪問頻率放入歷史隊列Qout中的末尾;如果此時對象O被訪問,則重新根據(jù)對象O的訪問頻率放入對應的優(yōu)先級隊列中,并從Qout中刪除。

    MQ算法主要應用于二級緩存,能夠防止緩存污染;由于需要維護多個隊列,因此比LRU算法實現(xiàn)要復雜。

    2.8 ARC

    ARC(adaptive replacement cache)為自適應緩存淘汰算法,該算法根據(jù)對象訪問特性在LRU算法和LFU算法之間找到平衡。ARC算法緩存中包含四個隊列:

    (1)R隊列,基于LRU算法;

    (2)F隊列,基于LFU算法;

    (3)R隊列,R隊列的影子隊列,存儲從R隊列淘汰的對象的標示;

    (4)F隊列,F(xiàn)隊列的影子隊列,存儲從F隊列淘汰的對象的標示;

    如圖5所示。

    R隊列和F隊列的邊界會隨著對象訪問特性的變化而變化。對象a首次訪問時會被放入R隊列頭部,隨著新對象的加入,對象a會被推到R隊列的尾部,直至被淘汰出R隊列,進入R隊列的影子隊列R,R隊列保存對象的標示,如果對象a不被訪問并且隨著新元素的加入最后也會被從R隊列中淘汰。對象a在R隊列中,如果被再次訪問,則進入F隊列,如果被F隊列淘汰,則進入F隊列的影子隊列F隊列,直至被淘汰出F隊列。

    當影子隊列R中的元素被再次訪問的時候,說明R隊列長度不夠,需要增加R隊列的長度,隊列邊界B會往F隊列方向移動;當影子隊列F中的元素被再次訪問的時候,說明F隊列的長度不夠,需要增加F隊列的長度,隊列邊界B會往R隊列方向移動。

    ARC算法會根據(jù)對象的訪問特性,同時跟蹤對象訪問頻率、訪問時間以及兩者的訪問歷史。如果對象訪問偏向于LRU,算法會增加R隊列的長度,如果對象訪問偏向于LFU,算法會增加F隊列的長度,從而能夠達到自動適應對象的訪問特性。ARC算法比單獨的LRU和LFU表現(xiàn)出更好的適應性,但是實現(xiàn)稍微復雜。

    3 總結(jié)

    緩存淘汰算法在海量系統(tǒng)中非常重要,本文對常用的緩存淘汰算法進行了分析研究,分析了每種緩存淘汰算法的原理、適用場景及優(yōu)缺點,為緩存淘汰算法的選擇和使用具有指導和借鑒意義。

    參考文獻

    [1]a cache managermeng scheme forefficient content evict ion andreplication in cache networks,Thisarticle is published in IEEEAccess,Vol.5,no.1,pp.1962-1701,Dec.2017.DOI:10.1109/ACCESS.2017.2669344

    [2]ARC_A SELF-TUNING,LOW OVERHEADREPLACEMENT CACHE,USENIX File&Storage; Techno10Gies Conference(FAST),March 31,2003,SanFrancisco,CA.

    [3]the multi-queue replacement algorithmfor second level ubffercaches,Boston,Massachusetts,USA,June 25-30,2001.

    [4]錢培杰,武娟,高成英.視頻點播環(huán)境下的緩存算法研究[J].計算機科學,2015,6(6A).

    [5]魏維,羅時愛,劉鳳玉.視頻點播中視頻服務器節(jié)目替換算法研究[J].計算機工程與應用,2008,44(02):245-248.

    猜你喜歡
    海量隊列對象
    神秘來電
    睿士(2023年2期)2023-03-02 02:01:09
    隊列里的小秘密
    基于多隊列切換的SDN擁塞控制*
    軟件(2020年3期)2020-04-20 00:58:44
    海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
    當代陜西(2019年14期)2019-08-26 09:42:00
    在隊列里
    攻略對象的心思好難猜
    意林(2018年3期)2018-03-02 15:17:24
    豐田加速駛?cè)胱詣玉{駛隊列
    基于熵的快速掃描法的FNEA初始對象的生成方法
    一個圖形所蘊含的“海量”巧題
    區(qū)間對象族的可鎮(zhèn)定性分析
    陆良县| 全椒县| 延津县| 郁南县| 常熟市| 汉中市| 航空| 舒兰市| 鄄城县| 新沂市| 报价| 武威市| 祁东县| 乐至县| 普宁市| 会宁县| 新余市| 昌吉市| 尼玛县| 防城港市| 屯留县| 翁源县| 栾城县| 理塘县| 新巴尔虎左旗| 关岭| 宿州市| 原平市| 桓仁| 古田县| 辰溪县| 平乡县| 西丰县| 井冈山市| 平安县| 富川| 兴隆县| 清镇市| 上饶县| 淮滨县| 阿瓦提县|