基于歷史信息的多級(jí)緩存方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種基于歷史信息的多級(jí)緩存方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)服務(wù)的飛速發(fā)展,許多數(shù)據(jù)中屯、已經(jīng)建立起大型的分布式存儲(chǔ)系統(tǒng), 該些系統(tǒng)運(yùn)用了多級(jí)分層存儲(chǔ)系統(tǒng)來(lái)滿足I/O不斷增長(zhǎng)的高性能要求。在一個(gè)典型的分層 結(jié)構(gòu)中,高存儲(chǔ)級(jí)的存儲(chǔ)結(jié)構(gòu)作為低存儲(chǔ)級(jí)的緩存,從而形成了分布式多級(jí)緩存系統(tǒng)。該樣 的多級(jí)緩存能處理可能會(huì)根據(jù)工作負(fù)載的訪問(wèn)模式在不同的存儲(chǔ)級(jí)別間移動(dòng)的數(shù)據(jù)。為了 識(shí)別和處理該些數(shù)據(jù),提示是有效提高存儲(chǔ)系統(tǒng)性能的方法。
[0003]在早期關(guān)于協(xié)同緩存的研究中,提示化int)被用作對(duì)存儲(chǔ)系統(tǒng)進(jìn)行全局性的近 似評(píng)估。隨著多級(jí)緩存的技術(shù)發(fā)展,特別是專用緩存方案的進(jìn)展,提示不僅能展示全局性管 理數(shù)據(jù)塊的狀態(tài),還能展示存儲(chǔ)系統(tǒng)中一個(gè)具體數(shù)據(jù)塊的動(dòng)態(tài)信息。根據(jù)在多級(jí)系統(tǒng)中承 擔(dān)的不同功能,提示可W被分為=類
[0004]?降級(jí)提示;從高級(jí)存儲(chǔ)降級(jí)的數(shù)據(jù)帶有的標(biāo)識(shí)。每一個(gè)典型的降級(jí)提示只花費(fèi) 幾比特的空間。
[0005]?升級(jí)提示;從低級(jí)存儲(chǔ)升級(jí)的數(shù)據(jù)帶有的標(biāo)識(shí)。
[0006]?應(yīng)用提示;顯示數(shù)據(jù)從屬不同的應(yīng)用的標(biāo)識(shí)。一些應(yīng)用提示是靜態(tài)的,然而更高 級(jí)的動(dòng)態(tài)應(yīng)用提示,是基于不同的訪問(wèn)模式或I/O應(yīng)用完善定義的。
[0007]要在多級(jí)緩存中高效利用提示,一個(gè)很具挑戰(zhàn)性的問(wèn)題就是如何確定數(shù)據(jù)的使用 頻率,然后將高頻數(shù)據(jù)升級(jí)到高存儲(chǔ)級(jí)別,將低頻數(shù)據(jù)降級(jí)到低存儲(chǔ)級(jí)別。現(xiàn)有的提示所提 供的信息不足W有效預(yù)測(cè)數(shù)據(jù)使用頻率。降級(jí)提示攜帶來(lái)自高級(jí)存儲(chǔ)級(jí)別的歷史提示信 息,而升級(jí)提示攜帶來(lái)自低級(jí)存儲(chǔ)級(jí)別。兩類提示緩存記錄最近的提示操作,而應(yīng)用提示一 般是基于應(yīng)用的,難W總結(jié)一般規(guī)律。普遍來(lái)說(shuō),該些提示只是記錄一個(gè)塊最近的提示信 息,會(huì)遺失部分反映塊在存儲(chǔ)級(jí)別間移動(dòng)的重要提示信息。該部分信息實(shí)際上和數(shù)據(jù)使用 頻率有相關(guān)性。
[0008]另一個(gè)有挑戰(zhàn)性的問(wèn)題是如何對(duì)升級(jí)提示和降級(jí)提示進(jìn)行統(tǒng)一的管理。在W往的 研究中,升級(jí)和降級(jí)提示被分別地管理,然而單憑其中一種提示未必能準(zhǔn)確找出活躍的塊。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于提供一種基于歷史信息的多級(jí)緩存方法,能夠有效地對(duì)數(shù)據(jù)塊 進(jìn)行升級(jí)和降級(jí)處理,有效提升分布式系統(tǒng)的I/O性能。
[0010] 為解決上述問(wèn)題,本發(fā)明提供一種基于歷史信息的多級(jí)緩存方法,包括:
[0011] 根據(jù)數(shù)據(jù)塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息判斷是否啟動(dòng)緩存級(jí)別的升級(jí) 或降級(jí)策略;
[0012] 若判斷為啟動(dòng)緩存級(jí)別的升級(jí)或降級(jí)策略時(shí),對(duì)數(shù)據(jù)塊執(zhí)行緩存級(jí)別的升級(jí)或降 級(jí)策略。
[0013] 進(jìn)一步的,在上述方法中,數(shù)據(jù)塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息為一k步 提示值,k為一預(yù)設(shè)的正整數(shù),k步提示值為一個(gè)長(zhǎng)度為k的01串,第i位表示數(shù)據(jù)塊最近 第i次的緩存級(jí)別的升級(jí)或降級(jí)情況,當(dāng)為緩存級(jí)別的升級(jí)時(shí)k步提示值的k位置1,當(dāng)為 緩存級(jí)別的升級(jí)時(shí)k步提示值的k位置0。
[0014] 進(jìn)一步的,在上述方法中,所述數(shù)據(jù)塊的k步提示值的第k位的值根據(jù)該數(shù)據(jù)塊的 最近一次的降級(jí)提示或升級(jí)提示確定,其中,降級(jí)提示表示從相鄰的較高級(jí)Ly到降級(jí)到目 前的緩存級(jí)別Li,升級(jí)提示表示從相鄰的較低級(jí)Lw升級(jí)到目前的緩存級(jí)別L1。
[0015] 進(jìn)一步的,在上述方法中,根據(jù)數(shù)據(jù)塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息判斷 是否啟動(dòng)緩存級(jí)別的升級(jí)或降級(jí)策略中,
[0016] 當(dāng)數(shù)據(jù)塊的k步提示值過(guò)小時(shí),判斷為啟動(dòng)緩存級(jí)別的升級(jí)策略;
[0017] 當(dāng)數(shù)據(jù)塊的k步提示值過(guò)在時(shí),判斷為啟動(dòng)緩存級(jí)別的降級(jí)策略。
[0018] 進(jìn)一步的,在上述方法中,數(shù)據(jù)塊的k步提示值的初始值根據(jù)如下方式確定:
[0019] 當(dāng)數(shù)據(jù)塊在存儲(chǔ)設(shè)備中,則將該數(shù)據(jù)塊的k步提示值的每一位都設(shè)置為0 ;
[0020] 當(dāng)數(shù)據(jù)塊在某一緩存級(jí)別中,則所有次的降級(jí)提示或升級(jí)提示計(jì)算出該數(shù)據(jù)塊的 k步提示值,其中,若某次無(wú)降級(jí)提示或升級(jí)提示,則該k步提示值的對(duì)應(yīng)位設(shè)置為0。
[0021] 進(jìn)一步的,在上述方法中,對(duì)數(shù)據(jù)塊執(zhí)行緩存級(jí)別的降級(jí)策略包括:
[0022] 獲取某一個(gè)緩存級(jí)別L沖最小的k步提示值記作K:;
[002引在緩存級(jí)別L沖找到k步提示值為巧;的數(shù)據(jù)塊e;
[0024] 從數(shù)據(jù)塊e中選擇最接近LRU列表底部的數(shù)據(jù)塊e',并將其降級(jí)到緩存級(jí)別 Lw的LRU列表的頂部,并更新數(shù)據(jù)塊£'的k步提示值。
[0025] 進(jìn)一步的,在上述方法中,對(duì)數(shù)據(jù)塊執(zhí)行緩存級(jí)別的升級(jí)策略包括:
[0026] 對(duì)數(shù)據(jù)塊0的讀請(qǐng)求,如果在緩存級(jí)別L產(chǎn)Lh中均沒(méi)有找到數(shù)據(jù)塊0,直到在 緩存級(jí)別L沖找到數(shù)據(jù)塊0,則計(jì)算出緩存級(jí)別Lh中最小的k步提示值記作巧_1>。,,并將 對(duì)數(shù)據(jù)塊0的讀請(qǐng)求和巧_1,",發(fā)送到較低的緩存級(jí)別Li;
[0027] 根據(jù)算出緩存級(jí)別Li中對(duì)數(shù)據(jù)塊0執(zhí)行緩存級(jí)別的升級(jí)策略的條件是 否滿足,若滿足,則將數(shù)據(jù)塊0從緩存級(jí)別Li升級(jí)到Lh并更新數(shù)據(jù)塊0的!^步提示值, 而且讀請(qǐng)求也完成。
[002引進(jìn)一步的,在上述方法中,將數(shù)據(jù)塊0從緩存級(jí)別Li升級(jí)到Ly的步驟中,
[0029] 如果緩存級(jí)別Ly已滿,緩存級(jí)別Lh中的另一個(gè)數(shù)據(jù)塊會(huì)被執(zhí)行緩存級(jí)別的降 級(jí)策略而降級(jí)至緩存級(jí)別Li,為數(shù)據(jù)塊0騰出空間。
[0030] 進(jìn)一步的,在上述方法中,對(duì)數(shù)據(jù)塊0執(zhí)行緩存級(jí)別的升級(jí)策略的條件為滿足下 式:
[0031] 2"-1+巧含2'--1,其中,^'-的)表示緩存級(jí)別L沖的數(shù)據(jù)塊0的1^步 提不值。
[0032] 進(jìn)一步的,在上述方法中,更新數(shù)據(jù)塊的k步提示值包括:
[0033] 將該數(shù)據(jù)塊更新前的k步提示值右移一位,即空出k步提示值的第k位;
[0034] 根據(jù)該數(shù)據(jù)塊最近一次的降級(jí)提示或升級(jí)提示確定并補(bǔ)上該數(shù)據(jù)塊的k步提示 值的第k位的值。
[0035] 與現(xiàn)有技術(shù)相比,本發(fā)明使用歷史提示信息來(lái)處理數(shù)據(jù)塊,有效地對(duì)數(shù)據(jù)塊進(jìn)行 升級(jí)和降級(jí)處理,有效提升分布式系統(tǒng)的I/O性能。另外,本發(fā)明根據(jù)數(shù)據(jù)塊最近的k步升 級(jí)或降級(jí)操作,把數(shù)據(jù)塊從低級(jí)緩存升級(jí)到高級(jí)緩存,或從高級(jí)緩存降級(jí)到低級(jí)緩存,與現(xiàn) 有的緩存算相比,在不同I/O負(fù)載下,本發(fā)明達(dá)到了更好的性能。
【附圖說(shuō)明】
[0036]圖1是本發(fā)明一實(shí)施例的基于歷史信息的多級(jí)緩存方法的流程圖。
【具體實(shí)施方式】
[0037] 為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[003引如圖1所示,本發(fā)明提供一種基于歷史信息的多級(jí)緩存方法,包括:
[0039] 步驟S1,根據(jù)數(shù)據(jù)塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息判斷是否啟動(dòng)緩存級(jí)別 的升級(jí)或降級(jí)策略;
[0040] 步驟S2,若判斷為啟動(dòng)緩存級(jí)別的升級(jí)或降級(jí)策略時(shí),對(duì)數(shù)據(jù)塊執(zhí)行緩存級(jí)別的 升級(jí)或降級(jí)策略。本發(fā)明能根據(jù)緩存級(jí)別的升級(jí)或降級(jí)的歷史信息,做出是否對(duì)數(shù)據(jù)塊升 級(jí)或者降級(jí)的決定。我們把現(xiàn)在通行的兩種提示一一升級(jí)提示和降級(jí)提示結(jié)合起來(lái)W實(shí)現(xiàn) 專用性。盡管應(yīng)用提示有一定用處,但它們被限制于特定的應(yīng)用訪問(wèn)模式。在本發(fā)明中,我 們集中討論的是更一般化的升級(jí)和降級(jí)提示,W攜帶來(lái)自高緩存級(jí)和低緩存級(jí)數(shù)據(jù)塊的附 加f目息。
[0041] 本發(fā)明的基于歷史信息的多級(jí)緩存方法的一優(yōu)選的實(shí)施例中,步驟S1中的數(shù)據(jù) 塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息為一k步提示值,k為一預(yù)設(shè)的正整數(shù),k步提示值 為一個(gè)長(zhǎng)度為k的01串,亦可看作一個(gè)長(zhǎng)度為k的二進(jìn)制數(shù)值,第i位表示數(shù)據(jù)塊最近第 i次的緩存級(jí)別的升級(jí)或降級(jí)情況,當(dāng)為緩存級(jí)別的升級(jí)時(shí)k步提示值的k位置1,當(dāng)為緩 存級(jí)別的升級(jí)時(shí)k步提示值的k位置0。具體的,在目前的設(shè)計(jì)中,每一個(gè)數(shù)據(jù)塊在一次執(zhí) 行中可W升或降一級(jí)。因此初始時(shí)活躍的數(shù)據(jù)塊會(huì)從最低緩存級(jí)別(L。)逐步升到最高級(jí) 別江1)。為了記錄活躍數(shù)據(jù)塊在不同緩存級(jí)別間的移動(dòng),k步提示值(KHV)用來(lái)標(biāo)識(shí)一個(gè) 數(shù)據(jù)塊的緩存級(jí)別升級(jí)或降級(jí)情況,k步提示值為一個(gè)長(zhǎng)度為k的01串,亦可看作一個(gè)長(zhǎng) 度為k的二進(jìn)制數(shù)值,第i位表示數(shù)據(jù)塊最近第i次的緩存級(jí)別升級(jí)或降級(jí)情況。
[0042] 本發(fā)明的基于歷史信息的多級(jí)緩存方法的一優(yōu)選的實(shí)施例中,所述數(shù)據(jù)塊的k步 提示值的第k位的值根據(jù)該數(shù)據(jù)塊的最近一次的降級(jí)提示或升級(jí)提示確定,其中,降級(jí)提 示表示從相鄰的較高級(jí)Lh到降級(jí)到目前的緩存級(jí)別L1,升級(jí)提示表示從相鄰的較低級(jí)Lw 升級(jí)到目前的緩存級(jí)別Li。具體的,緩存模型包含了n級(jí)Li,L2……L。。Li為最高的緩存 級(jí)別,L。為最低的緩存級(jí)別,對(duì)于任意的緩存級(jí)別L1,降級(jí)提示記做町表示從相鄰的較高 級(jí)Lh到目前的緩存級(jí)別L1,而Pi代表從相鄰的較低級(jí)LW到目前的緩存級(jí)別Li的升級(jí)提 示。更活躍的數(shù)據(jù)塊會(huì)被放置在更高的緩存級(jí)別Li中。如果將本發(fā)明跟LRU-k算法做比 較,LRU-k記錄在單級(jí)緩存中塊最近k次被引用的時(shí)間,而本發(fā)明的算法記錄多級(jí)緩存中塊 最近k次移動(dòng),即升級(jí)或降級(jí)。
[0043] 本發(fā)明的基于歷史信息的多級(jí)緩存方法的一優(yōu)選的實(shí)施例中,步驟Sl,根據(jù)數(shù)據(jù) 塊的緩存級(jí)別的升級(jí)或降級(jí)的歷史信息判斷是否啟動(dòng)緩