本說(shuō)明書(shū)的實(shí)施例涉及存儲(chǔ),尤其涉及一種針對(duì)隨機(jī)小io的緩存清潔方法。
背景技術(shù):
1、隨機(jī)小io是一種涉及數(shù)據(jù)塊較小且以隨機(jī)順序進(jìn)行的讀寫(xiě)操作,為了減少讀寫(xiě)數(shù)據(jù)時(shí)對(duì)存儲(chǔ)設(shè)備的訪問(wèn)次數(shù),提高系統(tǒng)性能,通常通過(guò)能夠臨時(shí)存儲(chǔ)數(shù)據(jù)的緩存機(jī)制來(lái)提高系統(tǒng)io性能。但在隨機(jī)小io場(chǎng)景下,隨機(jī)小io讀寫(xiě)操作的隨機(jī)性較強(qiáng),很難有效預(yù)測(cè)和緩存未來(lái)的io請(qǐng)求,緩存的命中率低,緩存壓力較大;同時(shí)碎片化的數(shù)據(jù)使io請(qǐng)求的數(shù)量激增,容量相對(duì)較小的緩存很容易被耗盡,進(jìn)而對(duì)整個(gè)系統(tǒng)的io性能產(chǎn)生影響。因此需要一種高效的緩存清潔方法來(lái)及時(shí)清潔緩存節(jié)點(diǎn)中的臟數(shù)據(jù),避免緩存爆滿,實(shí)現(xiàn)系統(tǒng)io性能提升的效果。
技術(shù)實(shí)現(xiàn)思路
1、本說(shuō)明書(shū)的實(shí)施例提供了一種針對(duì)隨機(jī)小io的緩存清潔方法,旨在解決上述問(wèn)題以及其他潛在的問(wèn)題中的一個(gè)或多個(gè)。
2、為實(shí)現(xiàn)上述目的,提供以下技術(shù)方案:
3、根據(jù)本說(shuō)明書(shū)的第一方面,提供了一種針對(duì)隨機(jī)小io的緩存清潔方法,方法包括:
4、獲取若干區(qū)塊下的緩存節(jié)點(diǎn)的臟數(shù)據(jù)百分比;其中,若干所述區(qū)塊由后端設(shè)備劃分得到,所述區(qū)塊由若干區(qū)塊組分組管理,所述區(qū)塊組的數(shù)量小于所述區(qū)塊的數(shù)量;所述臟數(shù)據(jù)百分比為所述區(qū)塊中的臟數(shù)據(jù)量占該區(qū)塊總數(shù)據(jù)存儲(chǔ)量的百分比;
5、基于各個(gè)所述區(qū)塊的臟數(shù)據(jù)百分比將所述區(qū)塊分別移動(dòng)到對(duì)應(yīng)臟數(shù)據(jù)閾值范圍的所述區(qū)塊組下;其中,所述區(qū)塊的臟數(shù)據(jù)百分比處于管理該區(qū)塊的所述區(qū)塊組的臟數(shù)據(jù)閾值范圍內(nèi);
6、按照所述臟數(shù)據(jù)閾值范圍從高到低的順序遍歷所述區(qū)塊組,尋找可清潔的所述區(qū)塊進(jìn)行緩存清潔,清潔時(shí)先判斷尋找到的所述區(qū)塊下的緩存節(jié)點(diǎn)是否需要空洞填充,如果需要?jiǎng)t先進(jìn)行空洞填充后再開(kāi)始清潔過(guò)程。
7、本說(shuō)明書(shū)實(shí)施例中的針對(duì)隨機(jī)小io的緩存清潔方法,基于各區(qū)塊下緩存節(jié)點(diǎn)的臟數(shù)據(jù)量對(duì)區(qū)塊進(jìn)行組織排序,清潔時(shí)可以高效快速的找到臟數(shù)據(jù)量由高到低的相對(duì)連續(xù)的待清潔臟數(shù)據(jù),以減少清潔過(guò)程中io的尋址距離,減少磁盤(pán)尋道時(shí)間;同時(shí)在緩存節(jié)點(diǎn)需要空洞填充時(shí)進(jìn)行填充,減少io耗時(shí)避免磁盤(pán)小寫(xiě)問(wèn)題,緩存的清潔效率更高,緩存不易爆滿,保障整個(gè)系統(tǒng)的io性能。
8、在一些實(shí)施例中,按照所述臟數(shù)據(jù)閾值從高到低的順序遍歷所述區(qū)塊組,尋找可清潔的所述區(qū)塊進(jìn)行緩存清潔,包括:
9、按照所述臟數(shù)據(jù)閾值范圍從高到低的順序遍歷所述區(qū)塊組尋找可清潔的所述區(qū)塊;
10、在尋找得到的所述區(qū)塊中尋找待清潔的緩存節(jié)點(diǎn),當(dāng)所述待清潔的緩存節(jié)點(diǎn)的數(shù)量大于單次最大清潔數(shù)量時(shí),對(duì)所述待清潔的緩存節(jié)點(diǎn)的臟數(shù)據(jù)進(jìn)行清潔,清潔完成后繼續(xù)遍歷尋找其他可清潔的所述區(qū)塊,直到遍歷結(jié)束;其中,清潔后的所述區(qū)塊基于其新的臟數(shù)據(jù)百分比移動(dòng)到對(duì)應(yīng)的所述區(qū)塊組下;
11、當(dāng)所述待清潔的緩存節(jié)點(diǎn)的數(shù)量小于等于所述單次最大清潔數(shù)量時(shí),繼續(xù)遍歷尋找其他可清潔的所述區(qū)塊,重復(fù)上述清潔過(guò)程,直到遍歷結(jié)束。
12、在一些實(shí)施例中,遍歷結(jié)束后判斷是否存在所述待清潔的緩存節(jié)點(diǎn),如果存在則對(duì)該待清潔的緩存節(jié)點(diǎn)的臟數(shù)據(jù)進(jìn)行清潔,否則結(jié)束該次清潔過(guò)程。
13、在一些實(shí)施例中,所述遍歷和清潔過(guò)程定時(shí)開(kāi)啟。
14、在一些實(shí)施例中,判斷尋找到的所述區(qū)塊下的緩存節(jié)點(diǎn)是否需要空洞填充,包括:計(jì)算尋找到的所述區(qū)塊下緩存節(jié)點(diǎn)的空洞值和空洞數(shù)量,計(jì)算所述緩存節(jié)點(diǎn)空洞填充前后的io耗時(shí)時(shí)間,將空洞填充后io耗時(shí)時(shí)間更短時(shí)的io數(shù)量作為空洞填充閾值,當(dāng)所述緩存節(jié)點(diǎn)的io數(shù)量大于等于所述空洞填充閾值時(shí),該緩存節(jié)點(diǎn)需要空洞填充。
15、在一些實(shí)施例中,在n塊磁盤(pán)構(gòu)成的無(wú)冗余陣列結(jié)構(gòu)下,空洞填充前的io耗時(shí)時(shí)間s的公式如下:
16、
17、其中,表示平均尋道時(shí)間,表示n塊磁盤(pán)同步開(kāi)銷時(shí)間,表示平均延遲時(shí)間,表示數(shù)據(jù)傳輸時(shí)間。
18、在一些實(shí)施例中,在n+1塊磁盤(pán)構(gòu)成的raid5陣列結(jié)構(gòu)下,空洞填充前的io耗時(shí)時(shí)間的公式如下:
19、
20、
21、其中,表示空洞填充前的最小io耗時(shí)時(shí)間,即m個(gè)io最優(yōu)分布情況下的io耗時(shí)時(shí)間;表示空洞填充前的最大io耗時(shí)時(shí)間,即m個(gè)io最差分布情況下的io耗時(shí)時(shí)間;m表示io數(shù)量,表示4k字節(jié)數(shù)據(jù)傳輸時(shí)間,表示一次異或計(jì)算耗時(shí)。
22、在一些實(shí)施例中,空洞填充后的io耗時(shí)時(shí)間的公式如下:
23、
24、其中,表示空洞填充后1m大小io的耗時(shí)時(shí)間,表示平均尋道時(shí)間,表示n塊磁盤(pán)同步開(kāi)銷時(shí)間,表示平均延遲時(shí)間,表示字節(jié)數(shù)據(jù)傳輸時(shí)間,表示一次異或計(jì)算耗時(shí)。
25、在一些實(shí)施例中,所述空洞填充包括:將所述緩存節(jié)點(diǎn)的空洞空間內(nèi)的數(shù)據(jù)讀取到內(nèi)存。
1.一種針對(duì)隨機(jī)小io的緩存清潔方法,其特征在于,方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,按照所述臟數(shù)據(jù)閾值從高到低的順序遍歷所述區(qū)塊組,尋找可清潔的所述區(qū)塊進(jìn)行緩存清潔,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,遍歷結(jié)束后判斷是否存在所述待清潔的緩存節(jié)點(diǎn),如果存在則對(duì)該待清潔的緩存節(jié)點(diǎn)的臟數(shù)據(jù)進(jìn)行清潔,否則結(jié)束該次清潔過(guò)程。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述遍歷和清潔過(guò)程定時(shí)開(kāi)啟。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷尋找到的所述區(qū)塊下的緩存節(jié)點(diǎn)是否需要空洞填充,包括:計(jì)算尋找到的所述區(qū)塊下的緩存節(jié)點(diǎn)的空洞值和空洞數(shù)量,計(jì)算所述緩存節(jié)點(diǎn)空洞填充前后的io耗時(shí)時(shí)間,將空洞填充后io耗時(shí)時(shí)間更短時(shí)的io數(shù)量作為空洞填充閾值,當(dāng)所述緩存節(jié)點(diǎn)的io數(shù)量大于等于所述空洞填充閾值時(shí),該緩存節(jié)點(diǎn)需要空洞填充。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在n塊磁盤(pán)構(gòu)成的無(wú)冗余陣列結(jié)構(gòu)下,空洞填充前的io耗時(shí)時(shí)間s的公式如下:
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,在n+1塊磁盤(pán)構(gòu)成的raid5陣列結(jié)構(gòu)下,空洞填充前的io耗時(shí)時(shí)間的公式如下:
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,空洞填充后的io耗時(shí)時(shí)間的公式如下:
9.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述空洞填充包括:將所述緩存節(jié)點(diǎn)的空洞空間內(nèi)的數(shù)據(jù)讀取到內(nèi)存。