本發(fā)明屬于固態(tài)硬盤數(shù)據(jù)存儲技術(shù)領(lǐng)域,尤其涉及一種融合多種機器學(xué)習(xí)算法的固態(tài)硬盤熱數(shù)據(jù)識別方法。
背景技術(shù):
近年來,隨著固態(tài)硬盤SSD(Solid State Disk,SSD)設(shè)計技術(shù)的不斷進步,相比傳統(tǒng)的機械硬盤,SSD顯示出具有讀寫速度快、功耗低、體積小、防震抗摔、便于攜帶等方面的優(yōu)勢,它已經(jīng)在許多領(lǐng)域開始替代傳統(tǒng)機械硬盤。
閃存具有三大特性:1)按頁(page)、塊(block)、平面(plane)的結(jié)構(gòu)進行組織;提供讀、寫和擦除3種操作;頁是讀/寫的最小單位;塊是擦除的最小單位。2)閃存擦除后只能寫一次,即所謂的寫前擦除,這造成閃存不能原地更新,否則會帶來巨大的開銷。3)閃存每個存儲單元的編程/擦除(P/E)次數(shù)有限,超過擦除次數(shù)后該存儲單元存儲數(shù)據(jù)不再可靠。隱藏閃存上述特性,使得這些不方便的特性對用戶而言透明,在SSD的設(shè)計中,一般要提供一個中間軟件轉(zhuǎn)換層實現(xiàn)對閃存的管理,稱為閃存轉(zhuǎn)換層FTL(Flash Translation Layer)。
FTL一般由地址映射、垃圾回收和磨損均衡三個模塊組成。地址映射負責(zé)將來自文件系統(tǒng)的邏輯地址轉(zhuǎn)換為閃存中的物理地址;垃圾回收負責(zé)將回收塊中的有效數(shù)據(jù)復(fù)制到新的物理塊中,將回收塊擦除后重新利用;磨損均衡負責(zé)保證每個塊的磨損速率盡量一致,防止部分塊因磨損過快而提前損壞。
為實現(xiàn)高效的垃圾回收,避免在垃圾回收過程中復(fù)制過多的有效數(shù)據(jù),F(xiàn)TL需要有效地把頻繁更新的數(shù)據(jù)(即熱數(shù)據(jù))和非頻繁更新的數(shù)據(jù)(即冷數(shù)據(jù))分開,即熱數(shù)據(jù)識別。在閃存的數(shù)據(jù)管理中,一方面,熱數(shù)據(jù)識別技術(shù)可以將識別出來的熱數(shù)據(jù)聚集到同一個塊中來提高垃圾回收效率,減少垃圾回收的開銷;另一方面,熱數(shù)據(jù)識別技術(shù)可以將熱數(shù)據(jù)分配到擦除次數(shù)較少的塊中,防止某些塊因為頻繁擦除而磨損過快,改善閃存的磨損均衡。因此,熱數(shù)據(jù)識別對提高SSD的性能非常關(guān)鍵。
然而,目前現(xiàn)存的SSD熱數(shù)據(jù)識別方法存在下面兩個方面的問題:
(1)內(nèi)存開銷大。目前大部分的熱數(shù)據(jù)識別機制均是采用識別NAND閃存中熱數(shù)據(jù)頁的思想,這些機制的核心原理就是給每個頁增添一個頁訪問計數(shù)器,在一定時間段內(nèi)記錄與NAND閃存頁相對應(yīng)的邏輯頁地址的讀寫操作次數(shù)。如果讀寫操作次數(shù)大于設(shè)定的閾值,則該頁被判定為熱頁,否則,則判定為冷頁。為每個頁設(shè)置了一個計數(shù)器,這樣方式需要消耗大量的內(nèi)存空間,對內(nèi)存空間有限的固態(tài)硬盤來說,這種方式顯然是不太適用的。
(2)準(zhǔn)確度低。常用的固態(tài)硬盤的冷熱數(shù)據(jù)識別機制包括基于請求大小、訪問模式、最近最少使用、布農(nóng)濾波等方法。這些方法考慮因素比較單一,沒能綜合考慮負載的局部性特征,熱數(shù)據(jù)識別的準(zhǔn)確度不高。此外,布農(nóng)濾波方法還存在假陽性問題,即將不屬于不在集合內(nèi)的數(shù)據(jù)錯誤判定為在集合內(nèi)。
技術(shù)實現(xiàn)要素:
本發(fā)明公開了一種融合多種機器學(xué)習(xí)算法的固態(tài)硬盤熱數(shù)據(jù)識別方法,以克服現(xiàn)有方法的上述缺陷。該方法能在較小的內(nèi)存開銷前提下,提高冷熱數(shù)據(jù)識別率。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案包括以下步驟:
步驟1、使用K-means聚類(K=2,即2均值聚類)根據(jù)當(dāng)前負載大小進行分類;利用K-means聚類算法根據(jù)當(dāng)前請求的負載大小對數(shù)據(jù)進行分類,分為C1(小請求類)和C2(大請求類)兩類,若當(dāng)前請求大小屬于C1,則判定當(dāng)前請求為熱數(shù)據(jù);反之為冷數(shù)據(jù)。
步驟2、使用K近鄰分類算法根據(jù)當(dāng)前請求的邏輯地址進行分類。
由K-means聚類方法得到兩個已知類別屬性的兩類樣本C1和C2,然后根據(jù)K近鄰分類算法,從C1和C2中取K個與當(dāng)前待分類的請求的邏輯頁號(LPN)最接近的請求,然后根據(jù)K個請求的LPN中大多數(shù)LPN所屬的類別來判定當(dāng)前LPN所屬的類別。如果K個LPN中大多數(shù)屬于C1,則當(dāng)前LPN屬于C1(熱數(shù)據(jù));否則,屬于C2(冷數(shù)據(jù))。
步驟3、對比步驟1和步驟2的兩種分類方式對當(dāng)前請求的冷熱性的分類結(jié)果。
如果K-means聚類和K近鄰分類兩種方式對當(dāng)前請求的類別的分類結(jié)果一致,則識別過程結(jié)束;如果不一致,則執(zhí)行步驟4。
步驟4、采用最近鄰原則對分類結(jié)果進行修正。
從K個最近鄰的LPN中找到與當(dāng)前LPN的距離dist最小的LPN,以該LPN所屬的類別來作為當(dāng)前請求的類別。
本發(fā)明的有益效果在于:
本發(fā)明提出的融合多種機器學(xué)習(xí)算法的熱數(shù)據(jù)識別方法,僅需保存有限的數(shù)據(jù)信息,內(nèi)存開銷低,非常有利于實際的運用。同時,與現(xiàn)有熱數(shù)據(jù)識別方法比較,還能提高熱數(shù)據(jù)識別準(zhǔn)確率,而且能夠適應(yīng)不同的負載。
附圖說明
圖1:融合多種機器學(xué)習(xí)算法的熱數(shù)據(jù)識別方法示意圖。
圖2:根據(jù)請求大小采用2均值聚類算法進行冷熱數(shù)據(jù)識別示意圖。
圖3:根據(jù)請求的邏輯地址采用K近鄰分類算法進行冷熱數(shù)據(jù)識別示意圖。
具體實施方式
下面結(jié)合附圖通過具體實例對本發(fā)明作進一步的詳細說明。以請求序列的冷熱識別為例,示例詳細描述了本發(fā)明方法識別熱數(shù)據(jù)的流程。示例中,為了方便闡述作如下設(shè)置:
固態(tài)硬盤轉(zhuǎn)換層(FTL)接收到的請求R格式為(type,LPN,size),設(shè)K近鄰分類方法中K的值取5,且已經(jīng)訪問過的10個請求已經(jīng)被分為熱數(shù)據(jù)C1和冷數(shù)據(jù)C2兩類:C1:{(w,12,1),(w,35,4),(w,41,2),(w,41,5),(r,12,4)},基于請求大小的聚類中心為3.2;C2:{(w,20,7),(r,38,9),(w,14,12),(r,53,8),(r,30,10)},聚類中心為9.2。即將訪問的請求順序為:r1(w,42,7),r2(w,24,3),r3(w,41,7),r4(r,29,11)。
實施例1:
當(dāng)請求r1(r,42,7)到來時,操作過程如圖1所示:
步驟1.使用K-means聚類(K=2,即2均值聚類)根據(jù)當(dāng)前負載大小進行分類。K-means根據(jù)負載大小進行冷熱數(shù)據(jù)識別,示意圖如圖2所示,r1的請求大小為7,離C2的聚類中心近,由K-means聚類算法判別為C2類。K-means算法的具體流程如下:
步驟1.1:初始化2個聚類中心(m1,m2);
步驟1.2:對每個請求ri,根據(jù)請求大小找到離它最近的聚類中心,將其分配到該類中;
步驟1.3:重新計算C1和C2的聚類中心,i=1,2;
步驟1.4:計算聚類誤差平方和準(zhǔn)則函數(shù),
步驟1.5:直到f值收斂,則輸出C1、C2和m1、m2,算法結(jié)束;否則,重復(fù)步驟1.2和步驟1.3,直到f收斂。
步驟2.使用K近鄰分類對當(dāng)前負載邏輯地址進行分類,如圖3所示。根據(jù)r1的LPN采用K近鄰分類算法從C1和C2中找到的5個最近鄰LPN為:41、41、38、35、53,因為5個最近鄰有3個為C1類,判定R1為C1類。K近鄰分類算法的具體流程如下:
步驟2.1:初始化K值;
步驟2.2:計算當(dāng)前LPN與C1、C2中每個樣本的LPN之間的距離dist。樣本間的“近鄰”使用歐式距離測量,設(shè)兩個樣本的邏輯地址LPN分別為x和x’,則x與x’之間的歐式距離定義為:dist(x,x')=|x-x'|;
步驟2.3:重復(fù)步驟2.2直到計算完當(dāng)前LPN與所有樣本間的距離dist;
步驟2.4:對所有的dist進行升序排列,選出前K個最近鄰的樣本;
步驟2.5:統(tǒng)計K個最近鄰樣本中每個類別出現(xiàn)的次數(shù);
步驟2.6:選擇出現(xiàn)頻率最大的類別作為當(dāng)前請求的類別。
步驟3.對比兩種分類方式對當(dāng)前請求的冷熱性的判定結(jié)果。有上述判定結(jié)果可以發(fā)現(xiàn),兩種方式的判定結(jié)果產(chǎn)生了矛盾,因此,我們需要對判定結(jié)果進行修正,執(zhí)行步驟4。
步驟4.采用最近鄰原則對分類結(jié)果進行修正。根據(jù)最近鄰原則,選取最近鄰LPN=41做參考,因為LPN=41屬于C1類,因此,最終判定R1為C1類,并更新C1類的LPN為{12,35,41,41,12,42},聚類中心更新為3.83。
實施例2:
當(dāng)請求R2(w,24,3)到來時,根據(jù)圖1中步驟1,R2的請求大小為3,離C1的聚類中心近,由K-means聚類算法判別為C1類;根據(jù)圖1中步驟2,對請求R2的LPN采用K近鄰分類算法從C1和C2中找到的5個最近鄰LPN為:20、30、14、35、12,因為5個最近鄰中有3個是屬于C2類,判定R2為C2類。由圖1的步驟3可知,此時判定結(jié)果也產(chǎn)生了矛盾。因此,執(zhí)行步驟4,選取最近鄰LPN=20做參考,因為LPN=20屬于C2類,因此,最終判定R2為C2類,并更新C2類實體,為了簡便,后面我們僅表示類中的LPN的值,更新為{20,38,14,53,30},聚類中心為8.16。
實施例3:
當(dāng)請求R3(w,41,7)到來時,根據(jù)圖1中步驟1,R3的請求大小為7,離C2的聚類中心近,由K-means判定為C2類根據(jù)圖1中步驟2,對請求R3的LPN采用K近鄰分類算法從C1和C2中找到的5個最近鄰LPN為:41、41、42、38、35,因為5個最近鄰中有4個是屬于C1類,判定R3為C1類;根據(jù)圖1中步驟3,此時判定結(jié)果也產(chǎn)生了矛盾。因此,執(zhí)行步驟4,我們選取最近鄰LPN=41做參考,因為LPN=41屬于C1類,因此,最終判定R3為C1類,更新C1類的LPN為{12,35,41,41,41,12,42,24},聚類中心為4.12。
實施例4:
當(dāng)請求R4(r,29,11)到來時,根據(jù)圖1中步驟1,R4的請求大小為11,離C2的聚類中心近,由K-means聚類算法判別為C2類;根據(jù)圖1中步驟2,對請求R4的LPN采用K近鄰分類算法從C1和C2中找到的5個最近鄰LPN為:30、24、35、20、38,因為5個最近鄰中有3個是屬于C2類,判定R4為C2類。根據(jù)圖1中步驟3,兩種方法判定結(jié)果一致,R4確實屬于C2類,更新C2類的LPN為{20,38,14,53,30,29},聚類中心為8.57。