本發(fā)明屬于計算機數(shù)據(jù)存儲領域,更具體地,涉及一種基于分類預測的緩存選擇方法和系統(tǒng)。
背景技術:
最近基于閃存的固態(tài)硬盤(ssd)被廣泛部署為緩存設備,以提高緩存系統(tǒng)性能。基于閃存的固態(tài)硬盤ssd主要是nand閃存類型的,它的讀寫功能是基于區(qū)塊擦除和寫入來實現(xiàn)。相比于傳統(tǒng)的機械硬盤,基于閃存的固態(tài)硬盤具有更低的能耗、更快的速度、更強的抗震性、更高的穩(wěn)定性等優(yōu)點,因此這種類型的基于閃存的固態(tài)硬盤能應用在各種環(huán)境中。
針對固態(tài)盤的緩存管理算法在過去幾十年中得到了很好的研究,但因為其存在以下的問題,導致其不能直接被用來管理ssd:首先,傳統(tǒng)緩存策略在進入dram之前不要對數(shù)據(jù)進行過濾,允許任何數(shù)據(jù)進入ssd,這種積極的數(shù)據(jù)更新策略導致對ssd的寫入操作太多,并使其快速磨損,這最終導致企業(yè)應用使用ssd的高成本;其次,這種允許任何數(shù)據(jù)進入緩存的策略也導致了一部分熱數(shù)據(jù)被淘汰出去,這會導致緩存利用率下降。
技術實現(xiàn)要素:
針對現(xiàn)有技術的以上缺陷或改進需求,本發(fā)明提供了一種基于分類預測的緩存選擇方法和系統(tǒng),其目的在于,解決現(xiàn)有緩存管理策略中由于對ssd盤的寫入操作太多,從而會快速磨損ssd盤并增加ssd盤的使用成本,以及由于使得一部分熱數(shù)據(jù)被淘汰而導致緩存利用率下降的技術問題。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于分類預測的緩存選擇方法,包括以下步驟:
(1)接收來自用戶的訪問請求,并根據(jù)該訪問請求判斷訪問請求對應的請求對象是否已經(jīng)被緩存,若已經(jīng)被緩存,則使用緩存替換算法對該訪問請求對應的請求對象進行處理,并繼續(xù)接收來自用戶的下一個訪問請求,然后重復執(zhí)行本步驟,否則轉(zhuǎn)入步驟(2);
(2)從底層存儲系統(tǒng)讀取該請求對象的數(shù)據(jù)塊,并確定緩存中是否還有足夠的空間存儲該請求對象的數(shù)據(jù)塊,若有則使用緩存替換算法將請求對象放入緩存中,接收來自用戶的下一個訪問請求,然后返回步驟(1),否則轉(zhuǎn)入步驟(3);
(3)查詢請求對象是否不存在于歷史信息列表中,若是則轉(zhuǎn)入步驟(4),否則轉(zhuǎn)入步驟(5)。
(4)根據(jù)訪問對象并使用以下公式計算分類預測函數(shù)f,判斷分類預測函數(shù)的值是否大于0,若是則將訪問對象的元數(shù)據(jù)加入歷史信息列表中,接受來自用戶的下一條訪問請求,并返回步驟(1),否則轉(zhuǎn)入步驟(6):
其中{a1,a2,...,am}為對象特征集合,m表示對象特征的個數(shù),y1表示“只訪問一次”類別,y2表示“訪問大于一次”類別,p(aj|y1)表示“只訪問一次”類別的訪問對象中對象特征為aj的概率,p(aj|y2)表示“訪問大于一次”類別的訪問對象中對象特征為aj的概率,p(y1)表示“只訪問一次”類別出現(xiàn)的概率,p(y2)表示“訪問大于一次”類別出現(xiàn)的概率,且p(y1)+p(y2)=1;
(5)將訪問對象從歷史信息列表中移除,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),然后轉(zhuǎn)入步驟(6);
(6)使用緩存替換算法將請求對象放入緩存中,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),并接收來自用戶的下一個訪問請求,返回步驟(1)。
優(yōu)選地,步驟(2)中使用的緩存替換算法與步驟(1)中使用的緩存替換算法相同。
優(yōu)選地,歷史信息列表是在初始化階段創(chuàng)建的先進先出結(jié)構鏈表。
優(yōu)選地,以訪問對象的訪問日志為樣本,執(zhí)行opt算法過程中得到淘汰對象時,查看該淘汰對象的訪問次數(shù),若訪問次數(shù)為1,則該淘汰對象屬于“只訪問一次”的類別,否則該淘汰對象屬于“訪問大于一次”的類別。
優(yōu)選地,對象特征集合{a1,a2,...,am}的構造方式具體為:為訪問對象的訪問日志中的每一個對象特征對應地繪制對象特征分布圖,該圖中的橫軸為該對象特征值,縱軸為“只訪問一次”類型中等于該對象特征值的對象個數(shù),計算得到的所有對象特征分布圖的方差,并對這些方差按照從大到小的順序進行排列,將前m個方差對應的對象特征作為對象特征集合。
優(yōu)選地,步驟(5)中調(diào)整“只訪問一次”類別的出現(xiàn)概率p(y1)的過程包括:
(5-1)初始化調(diào)整因子p'(y1)和調(diào)整個數(shù)count均等于0;
(5-2)設置訪問對象i的分類預測函數(shù)f值為0,并根據(jù)f值得到pi(y1);
(5-3)判斷是否有p(y1)>pi(y1),如果是則設置調(diào)整因子p′(y1)=p′(y1)+pi(y1),調(diào)整個數(shù)count=count+1,然后轉(zhuǎn)入步驟(5-4),否則過程結(jié)束;
(5-4)
優(yōu)選地,步驟(6)中調(diào)整“只訪問一次”類別的出現(xiàn)概率p(y1)的過程包括:
(6-1)設置使用緩存替換算法淘汰的對象k的分類預測函數(shù)f值為0,并根據(jù)f值得到pk(y1);
(6-2)判斷是否有p(y1)<pk(y1),如果是則設置調(diào)整因子p′(y1)=p′(y1)+pk(y1),調(diào)整個數(shù)count=count+1,然后轉(zhuǎn)入步驟(6-3),否則過程結(jié)束;
(6-3)
按照本發(fā)明的另一方面,提供了一種基于分類預測的緩存選擇系統(tǒng),包括:
第一模塊,用于接收來自用戶的訪問請求,并根據(jù)該訪問請求判斷訪問請求對應的請求對象是否已經(jīng)被緩存,若已經(jīng)被緩存,則使用緩存替換算法對該訪問請求對應的請求對象進行處理,并繼續(xù)接收來自用戶的下一個訪問請求,然后重復執(zhí)行本步驟,否則轉(zhuǎn)入第二模塊;
第二模塊,用于從底層存儲系統(tǒng)讀取該請求對象的數(shù)據(jù)塊,并確定緩存中是否還有足夠的空間存儲該請求對象的數(shù)據(jù)塊,若有則使用緩存替換算法將請求對象放入緩存中,接收來自用戶的下一個訪問請求,然后返回第一模塊,否則轉(zhuǎn)入第三模塊;
第三模塊,用于查詢請求對象是否不存在于歷史信息列表中,若是則轉(zhuǎn)入第四模塊,否則轉(zhuǎn)入第五模塊;
第四模塊,用于根據(jù)訪問對象并使用以下公式計算分類預測函數(shù)f,判斷分類預測函數(shù)的值是否大于0,若是則將訪問對象的元數(shù)據(jù)加入歷史信息列表中,接受來自用戶的下一條訪問請求,并返回第一模塊,否則轉(zhuǎn)入第六模塊:
其中{a1,a2,...,am}為對象特征集合,m表示對象特征的個數(shù),y1表示“只訪問一次”類別,y2表示“訪問大于一次”類別,p(aj|y1)表示“只訪問一次”類別的訪問對象中對象特征為aj的概率,p(aj|y2)表示“訪問大于一次”類別的訪問對象中對象特征為aj的概率,p(y1)表示“只訪問一次”類別出現(xiàn)的概率,p(y2)表示“訪問大于一次”類別出現(xiàn)的概率,且p(y1)+p(y2)=1;
第五模塊,用于將訪問對象從歷史信息列表中移除,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),然后轉(zhuǎn)入第六模塊;
第六模塊,用于使用緩存替換算法將請求對象放入緩存中,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),并接收來自用戶的下一個訪問請求,返回第一模塊。
總體而言,通過本發(fā)明所構思的以上技術方案與現(xiàn)有技術相比,能夠取得下列有益效果:
1、由于采用了步驟(3)到步驟(6),能夠避免“只訪問一次”的數(shù)據(jù)進入緩存,從而提高了緩存的有效容量,從而能夠解決現(xiàn)有緩存管理策略中由于對ssd盤的寫入操作太多,而快速磨損ssd盤并增加ssd盤的使用成本的技術問題,以及由于使得一部分熱數(shù)據(jù)被淘汰,而導致緩存利用率下降的技術問題:
2、由于本發(fā)明并不是把所有訪問的數(shù)據(jù)都移入緩存,大大避免了無效寫入,直接減少ssd盤的寫入次數(shù),由于固態(tài)盤的壽命與它所經(jīng)歷的寫的次數(shù)成反比,因此本發(fā)明能夠延長固態(tài)盤的壽命。
3、本發(fā)明不會影響算法時間復雜度:由于預測函數(shù)f為離線確定,并且在動態(tài)調(diào)整參數(shù)時,可以與緩存替換并行,因此不影響算法時間復雜度。
附圖說明
圖1是本發(fā)明基于分類預測的緩存選擇策略的實現(xiàn)架構圖。
圖2是本發(fā)明基于分類預測的緩存選擇方法的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
緩存選擇策略是延長ssd壽命的有效策略。其主要思想是用來決策當讀取緩存發(fā)生讀缺失時,是否需要將新對象移入緩存。傳統(tǒng)的緩存策略并不存在“選擇”的問題。然而,隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)訪問模式的變化,私有數(shù)據(jù)越來越多,短時間內(nèi)出現(xiàn)大量僅被訪問一次的數(shù)據(jù),這些無效數(shù)據(jù)的寫入不僅降低了緩存效率,也縮短了ssd的壽命。
如圖1所示,基于分類預測的緩存選擇策略的實現(xiàn)架構主要包含三個部分:緩存、歷史信息列表及緩存分類預測器,其中,緩存還包含了緩存信息表。需要說明的是,本策略并不涉及后端具體的存儲系統(tǒng),主要實現(xiàn)在用戶請求與后端存儲中間的緩存層面。
圖1所示系統(tǒng)的工作流程包括以下步驟:
(1)由客戶端發(fā)起請求,緩存接收用戶的請求,檢查緩存中是否緩存該對象;
(2)如果緩存命中,將對象內(nèi)容傳送到客戶端,過程結(jié)束,否則轉(zhuǎn)步驟(3);
(3)緩存向后端存儲系統(tǒng)發(fā)起請求,后端存儲系統(tǒng)將對象信息與內(nèi)容傳送到分類預測器。分類預測器結(jié)合歷史信息列表做出判斷,若不需要緩存,將信息記錄到歷史信息列表、并將對象內(nèi)容通過緩存?zhèn)魉偷娇蛻舳?,結(jié)束;否則轉(zhuǎn)步驟(4);
(4)通過緩存替換算法,移除緩存中的對象,騰出緩存空間來緩存用戶請求的對象,緩存對緩存分類器負反饋并將對象內(nèi)容傳送到客戶端。
從系統(tǒng)工作流程可以看出,相較于傳統(tǒng)的緩存工作流程,我們増加了對對象是否可以進入緩存進行分類預測,從而減少“只訪問一次”的對象進入緩存的概率。此外,緩存分類預測器是基于離線的分類策略,雖然在精度上略有損失,并不能完全分類正確,但可以在不增加緩存請求時間的情況下增大緩存利用率。
如圖2所示,本發(fā)明基于分類預測的緩存選擇方法包括以下步驟:
(1)接收來自用戶的訪問請求,并根據(jù)該訪問請求判斷訪問請求對應的請求對象是否已經(jīng)被緩存,若已經(jīng)被緩存,則使用緩存替換算法對該訪問請求對應的請求對象進行處理,并繼續(xù)接收來自用戶的下一個訪問請求,然后重復執(zhí)行本步驟,否則轉(zhuǎn)入步驟(2);
具體而言,本步驟中使用的緩存替換算法可以是諸如,近期最少使用(leastrecentlyused,簡稱lru)緩存替換算法、最近最不常用(leastfrequentlyused,lfu)緩存替換算法等。
(2)從底層存儲系統(tǒng)讀取該請求對象的數(shù)據(jù)塊,并確定緩存中是否還有足夠的空間存儲該請求對象的數(shù)據(jù)塊,若有則使用緩存替換算法將請求對象放入緩存中,接收來自用戶的下一個訪問請求,然后返回步驟(1),否則轉(zhuǎn)入步驟(3);
具體而言,本步驟中使用的緩存替換算法與步驟(1)中所使用的緩存替換算法完全相同。
(3)查詢請求對象是否不存在于歷史信息列表中,若是則轉(zhuǎn)入步驟(4),否則轉(zhuǎn)入步驟(5)。
本步驟的優(yōu)點在于,使用歷史信息列表,使得短時間內(nèi)被連續(xù)訪問的請求對象不經(jīng)過預測而直接進入緩存,從而減少了請求對象的類型被誤判的可能性。
具體而言,歷史信息列表是在初始化階段創(chuàng)建的先進先出(firstinfirstout,簡稱fifo)結(jié)構鏈表。
(4)根據(jù)訪問對象并使用以下公式計算分類預測函數(shù)f,判斷分類預測函數(shù)的值是否大于0,若是則將訪問對象的元數(shù)據(jù)加入歷史信息列表中,接受來自用戶的下一條訪問請求,并返回步驟(1),否則轉(zhuǎn)入步驟(6):
其中{a1,a2,...,am}為對象特征集合,m表示對象特征的個數(shù),y1表示“只訪問一次”類別,y2表示“訪問大于一次”類別,p(aj|y1)表示“只訪問一次”類別的訪問對象中對象特征為aj的概率,p(aj|y2)表示“訪問大于一次”類別的訪問對象中對象特征為aj的概率,p(y1)表示“只訪問一次”類別出現(xiàn)的概率,p(y2)表示“訪問大于一次”類別出現(xiàn)的概率,且p(y1)+p(y2)=1;
在本發(fā)明中,以訪問對象的訪問日志為樣本,執(zhí)行最優(yōu)替換算法(optimalreplacement,簡稱opt)過程中得到淘汰對象時,查看該淘汰對象的訪問次數(shù),若訪問次數(shù)為1,則該淘汰對象屬于“只訪問一次”的類別,否則該淘汰對象屬于“訪問大于一次”的類別。
對象特征集合{a1,a2,...,am}的構造方式具體為:為訪問對象的訪問日志中的每一個對象特征對應地繪制對象特征分布圖,該圖中的橫軸為該對象特征值,縱軸為“只訪問一次”類型中等于該對象特征值的對象個數(shù),計算得到的所有對象特征分布圖的方差,并對這些方差按照從大到小的順序進行排列,將前m個方差對應的對象特征作為對象特征集合,其中m的取值是由訪問對象的特征決定,例如,如果訪問對象是圖片,則a1為圖片大小,a2為圖片類型,a3為圖片的訪問時間,此時m=3。
本步驟的優(yōu)點在于,過濾掉屬于“只訪問一次”類別的訪問對象,從而減少ssd盤的無效寫入。
(5)將訪問對象從歷史信息列表中移除,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),轉(zhuǎn)入步驟(6);
具體而言,調(diào)整“只訪問一次”的p(y1)策略是:
(5-1)初始化調(diào)整因子p'(y1)和調(diào)整個數(shù)count均等于0;
(5-2)設置訪問對象i的分類預測函數(shù)f值為0,根據(jù)上式(1)得到pi(y1);
(5-3)判斷是否有p(y1)>pi(y1),如果是則設置調(diào)整因子p′(y1)=p′(y1)+pi(y1),調(diào)整個數(shù)count=count+1,然后轉(zhuǎn)入步驟(5-4),否則過程結(jié)束;
(5-4)
(6)使用緩存替換算法將請求對象放入緩存中,并調(diào)整“只訪問一次”類別出現(xiàn)的概率p(y1),并接收來自用戶的下一個訪問請求,返回步驟(1);
具體而言,調(diào)整“只訪問一次”的p(y1)策略是:
(6-1)設置使用緩存替換算法淘汰的對象k的分類預測函數(shù)f值為0,根據(jù)上式(1)得到pk(y1);
(6-2)判斷是否有p(y1)<pk(y1),如果是則設置調(diào)整因子p′(y1)=p′(y1)+pk(y1),調(diào)整個數(shù)count=count+1,然后轉(zhuǎn)入步驟(6-3),否則過程結(jié)束;
(6-3)
本步驟的優(yōu)點在于,實時調(diào)整“只訪問一次”的概率,即預測函數(shù)根據(jù)緩存實時情況動態(tài)調(diào)整,更有效地利用緩存空間。
本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。