記錄,從而能夠在實現(xiàn)低內(nèi)存開 銷的同時實現(xiàn)大數(shù)據(jù)量的熱點數(shù)據(jù)識別,有效提高了熱點數(shù)據(jù)識別準(zhǔn)確度及效率。
[0037] 2)本發(fā)明進(jìn)一步在將0位翻轉(zhuǎn)為1前W-定的概率將待翻轉(zhuǎn)為1的位的所有字節(jié) 清零,使不頻繁訪問數(shù)據(jù)的熱度逐步下降,最終在訪問歷史中消失,從而有效清除掉長時間 未被訪問的歷史數(shù)據(jù)。
[003引 3)本發(fā)明進(jìn)一步根據(jù)頁面的熱度動態(tài)調(diào)整熱度闊值,每當(dāng)一個頁面被訪問時,根 據(jù)訪問頁面的熱度h調(diào)整熱度闊值化reshold,使熱度闊值化reshold的值依據(jù)負(fù)載調(diào)整為 負(fù)載中所出現(xiàn)的頁面的熱度平均值,其中當(dāng)熱度h大于熱度闊值化reshold時,上調(diào)熱度闊 值化reshold的值;當(dāng)熱度h小于熱度闊值化reshold時,下調(diào)熱度闊值化reshold的值, 從而使得熱點數(shù)據(jù)的識別能夠自適應(yīng)于負(fù)載的變化,提高熱點數(shù)據(jù)識別的靈活性。
[0039] 4)本發(fā)明進(jìn)一步根據(jù)頁面的熱度動態(tài)調(diào)整熱度闊值,每當(dāng)一個頁面被識別為熱點 數(shù)據(jù)時,上調(diào)熱度闊值化reshold的值,通過不斷上調(diào)的熱度闊值化reshold使得識別出的 熱點數(shù)據(jù)是整個負(fù)載中最熱的數(shù)據(jù)。
【附圖說明】
[0040] 圖1是本實施例面向混合存儲系統(tǒng)的低內(nèi)存開銷熱點數(shù)據(jù)識別方法的實現(xiàn)流程 示意圖。
【具體實施方式】
[0041] W下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進(jìn)一步描述,但并不因此而 限制本發(fā)明的保護(hù)范圍。
[0042] 如圖1所示,本實施例面向混合存儲系統(tǒng)的低內(nèi)存開銷熱點數(shù)據(jù)識別方法,具體 實施步驟為:
[0043] 1)定義UBF及初始化;定義超大計數(shù)容量的布隆過濾器UBF,超大計數(shù)容量的布隆 過濾器UBF通過位數(shù)組W及映射各頁面至位數(shù)組的k個哈希函數(shù)記錄頁面的訪問次數(shù);初 始化位數(shù)組為0并設(shè)定各個哈希函數(shù);
[0044] 2)查詢頁面熱度;當(dāng)頁面X接收到被訪問請求時,通過位數(shù)組查詢頁面X的熱度, 頁面X的熱度為頁面X在位數(shù)組的對應(yīng)k個位中值為1的位數(shù);
[0045] 3)將頁面加入UBF;判斷頁面X的熱度是否小于預(yù)設(shè)的首次記錄闊值t,首次記錄 闊值t小于哈希函數(shù)的個數(shù)k,若為是,判定頁面X尚未記錄在UBF中,針對頁面X在位數(shù)組 的k個對應(yīng)位,通過將其中t個位由0翻轉(zhuǎn)為1記錄頁面X;否則判定頁面X已記錄在UBF 中,針對頁面X在位數(shù)組的k個對應(yīng)位,通過將其中一個值為0的位按第一預(yù)設(shè)概率翻轉(zhuǎn)為 1進(jìn)行頁面X的重復(fù)訪問計數(shù);
[0046] 4)熱點數(shù)據(jù)識別:比較頁面X的熱度與指定的熱度闊值的大小,若頁面X的熱度 大于熱度闊值,頁面X對應(yīng)的數(shù)據(jù)識別為熱點數(shù)據(jù),否則頁面X對應(yīng)的數(shù)據(jù)識別為冷數(shù)據(jù); 跳轉(zhuǎn)執(zhí)行步驟2)。
[0047] 本實施例中,設(shè)計實現(xiàn)一種能夠W很低的內(nèi)存開銷記錄訪問歷史的數(shù)據(jù)結(jié)構(gòu),該 數(shù)據(jù)結(jié)構(gòu)通過位數(shù)組中k個位記錄對應(yīng)頁面的訪問次數(shù),具有超大的計數(shù)容量,因而稱為 超大計數(shù)容量的布隆過濾器UBF(Ultra-countingBloomFilter)。通過維護(hù)一個超大計數(shù) 容量的布隆過濾器UBF就可實現(xiàn)超大范圍的頁面訪問歷史記錄,從而動態(tài)的識別出頻繁訪 問的熱點數(shù)據(jù),為混合存儲系統(tǒng)中的數(shù)據(jù)布局提供指導(dǎo)。
[0048] 本實施例中,步驟1)中初始化位數(shù)組的具體步驟為:
[0049] 1. 1)設(shè)定哈希函數(shù)的個數(shù)kW及需要記錄的訪問歷史長度n;
[0化0] 1. 2)根據(jù)設(shè)定的哈希函數(shù)的個數(shù)k、訪問歷史長度n計算位數(shù)組所需的存儲空間 大小,在內(nèi)存中為位數(shù)組申請一片對應(yīng)大小的存儲空間;
[0化1] 1. 3)將位數(shù)組對應(yīng)的存儲空間初始化為0。
[0052] 哈希函數(shù)的個數(shù)k、需要記錄的訪問歷史長度n具體可根據(jù)內(nèi)存資源、上層應(yīng)用程 序需求等實際應(yīng)用需求進(jìn)行設(shè)置,當(dāng)應(yīng)用負(fù)載中數(shù)據(jù)被訪問的次數(shù)較多時,則可設(shè)置較大 的k值W記錄更多的訪問次數(shù);在內(nèi)存資源充足的前提下,訪問歷史的長度n則設(shè)置越大越 好,n即為所記錄的訪問歷史中所包含的頁面數(shù)。
[005引本實施例中,位數(shù)組所需的存儲空間中與kXn成正比,即位數(shù)組所包含的位的數(shù) 目與kXn成正比,則根據(jù)哈希函數(shù)的個數(shù)k、需要記錄的訪問歷史長度n即可計算出UBF所 需的位數(shù)組的大小。在內(nèi)存中申請一塊內(nèi)存空間作為位數(shù)組,再將位數(shù)組中的所有位初始 化為0,假定位數(shù)組中位的數(shù)目為化Xn,則在內(nèi)存中申請一片化Xn/8字節(jié)的存儲空間,并 將位數(shù)組對應(yīng)的區(qū)域清零;同時初始化設(shè)定k個映射各頁面X的哈希函數(shù)hi (X),h2 (X),… ,hk(x),完成超大計數(shù)容量的布隆過濾器UBF的初始化。
[0化4] 本實施例中,步驟2)的具體步驟為;
[0化5] 2. 1)當(dāng)頁面X被訪問時,初始化計數(shù)器i和熱度h為0,跳轉(zhuǎn)執(zhí)行步驟2. 2);
[0化6] 2. 2)計算頁面X對應(yīng)的第i個哈希函數(shù)的值hi (X),檢測頁面X在位數(shù)組中對應(yīng) 第Mx)位的值,若檢對應(yīng)第hi(x)位的值為1,貝1J固巧專執(zhí)行步驟2.如;若檢巧UI^IJ對應(yīng)第hi(X)位的值為0,則跳轉(zhuǎn)執(zhí)行步驟2. 4);
[0化7] 2. 3)將熱度h加1,跳轉(zhuǎn)執(zhí)行步驟2. 4);
[0化引 2. 4)將計數(shù)器i加1,跳轉(zhuǎn)執(zhí)行步驟2. 2),直至計數(shù)器i的值等于哈希函數(shù)的個數(shù)k,將熱度h作為頁面X的熱度輸出,跳轉(zhuǎn)執(zhí)行步驟3)。
[0059] 頁面X在UBF的位數(shù)組中對應(yīng)k個化該k個位中值為1的位數(shù)即定義為頁面X 的熱度。則當(dāng)接收到上層應(yīng)用對頁面X的請求后,依次檢測頁面X在位數(shù)組中對應(yīng)的k個 位,統(tǒng)計出該k個位中值為1的數(shù)目即得到頁面X的熱度h,再將頁面X加入位數(shù)組中W記 錄當(dāng)前對頁面X的訪問。
[0060] 將頁面X加入UBF的位數(shù)組中存在兩種情況;第一種情況是頁面X還尚未記錄在 UBF的位數(shù)組中,此時是將頁面X首次加入到UBF中進(jìn)行首次記錄;第二種情況是頁面X已 經(jīng)被記錄在UBF的位數(shù)組中,此時是需要增加頁面X的重復(fù)訪問計數(shù)。本實施例中,步驟3) 具體通過當(dāng)前頁面的熱度hW及預(yù)設(shè)的首次記錄闊值t的比較確定執(zhí)行上述哪種情況,即 通過首次記錄闊值t判別一個頁面是否已記錄在UBF的位數(shù)組中,首次記錄闊值t具體的 設(shè)置可顯著小于k。
[0061] 當(dāng)頁面的熱度h小于首次記錄闊值t時,則執(zhí)行第一種情況,否則執(zhí)行第二種情 況。對于第一種情況,即頁面X在UBF中尚未記錄,則將位數(shù)組的k個對應(yīng)位中t個位由0 翻轉(zhuǎn)為1記錄頁面X,該樣,頁面X被加入后,其對應(yīng)的k個位中至少有t個為1;當(dāng)頁面X 被再次訪問時,頁面的熱度h不再小于t,則執(zhí)行第二種情況。對于第二種情況,即頁面X在 UBF中已記錄,此時僅需要增加重復(fù)訪問記錄,則在位數(shù)組的k個對應(yīng)位中選擇一個值為0 的位按第一預(yù)設(shè)概率翻轉(zhuǎn)為1W進(jìn)行重復(fù)訪問計數(shù),即記錄對頁面X的訪問次數(shù)。
[0062] 采用上述方法,本實施例只需t位信息就可表示一個頁面X是否記錄在UBF中,相 比于傳統(tǒng)的L即策略中需要為每個頁面維護(hù)一個整數(shù)計數(shù)器W記錄訪問次數(shù),且每個整數(shù) 計數(shù)器需占據(jù)數(shù)十位內(nèi)存空間,能夠有效降低內(nèi)存開銷。本實施例也僅需要維護(hù)一個UBF W實現(xiàn)頁面的各次訪問記錄,因而其內(nèi)存開銷也顯著低于需要維護(hù)多個BloomFilter的 MBFs方案。
[0063] 本實施例通過將k位中一個0位W-定概率翻轉(zhuǎn)為1來進(jìn)行重復(fù)訪問計數(shù),對頁 面X的各次訪問均被記錄在UBF的k個對應(yīng)位中。即便對頁面X的訪問次數(shù)呈指數(shù)增長時, 在UBF中與頁面X對應(yīng)的1位的個數(shù)也僅呈線性增長,使得通過線性增長的位信息即可記 錄指數(shù)增長的訪問次數(shù),具有超大計數(shù)范圍,從而在實現(xiàn)低內(nèi)存開銷的同時實現(xiàn)大數(shù)據(jù)量 的熱點數(shù)據(jù)識別。由于計數(shù)范圍的空前增長,也可w顯著提高熱點數(shù)據(jù)識別準(zhǔn)確度及效率。 而傳統(tǒng)的MBFs方案需要維護(hù)n個BloomFilter,且最多能記錄的頁面訪問次數(shù)僅為n,當(dāng) 頁面X的訪問次數(shù)超過n時,后續(xù)的訪問將不能記錄在MBFs中,從而導(dǎo)致熱點信息丟失。
[0064] 本實施例中,第一預(yù)設(shè)概率為1/2^,其中h為當(dāng)前頁面的熱度,t為次記錄闊值。 即當(dāng)對頁面X需要進(jìn)行重復(fù)訪問計數(shù)時,將頁面X在位數(shù)組的k個對應(yīng)位中的一個值為0 的位按1/2^的概率翻轉(zhuǎn)為1,從而對于特定頁面X,僅僅利用幾位信息即可記錄應(yīng)用程序 對頁面X的數(shù)百次訪問。
[00化]本實施例中,步驟3)中將一個0位翻轉(zhuǎn)為1前還包括針對一些1位進(jìn)行隨機清零 的步驟,具體步驟為;統(tǒng)計待翻轉(zhuǎn)為1的位所在字節(jié)中值為1的位的數(shù)目m,根據(jù)統(tǒng)計得到 的數(shù)目mW第二預(yù)設(shè)概率將待翻轉(zhuǎn)為1的位所在字節(jié)的各個位清零。對于那些曾經(jīng)出現(xiàn)在 訪問歷史中、但很久沒有被訪問的頁面,如果將其在位數(shù)組中對應(yīng)的"1"位慢慢地翻轉(zhuǎn)為 0,可W使其熱度逐步下降,最終會在訪問歷史中消失,有效清除掉長時間未被訪問而沒有 任何價值的早期訪問歷史數(shù)據(jù)。
[0066] 本實施例中,第二預(yù)設(shè)概率為l/8-m,其中m為待翻轉(zhuǎn)為1的位所在字節(jié)中值為1 的位的數(shù)目。即對于特定的一個位,將該位由0翻轉(zhuǎn)為1之前,先統(tǒng)計該位所在的字節(jié)中1 的個數(shù)m,再Wl/8-m的概率將該字節(jié)的所有位清零,然后執(zhí)行將該特定