本發(fā)明涉及存儲技術(shù)領(lǐng)域,特別是涉及一種固態(tài)硬盤數(shù)據(jù)遷移的方法及裝置。
背景技術(shù):
隨著計算機(jī)技術(shù)的飛速發(fā)展和數(shù)字化時代的到來,在日常生活、科學(xué)研究以及公司業(yè)務(wù)中頻繁使用數(shù)字化和網(wǎng)絡(luò)化技術(shù),使得數(shù)據(jù)呈現(xiàn)爆炸式增長,而數(shù)據(jù)的產(chǎn)生往往是需要承載或記錄的,這就迫使存儲技術(shù)快速發(fā)展以容納快速增長的數(shù)據(jù)。
HDD(Hard Disk Drive,機(jī)械硬盤),即硬盤驅(qū)動器。最基本的電腦存儲器,電腦硬盤C盤、D盤為磁盤分區(qū)都屬于硬盤驅(qū)動器。但是機(jī)械硬盤由于存儲和讀寫跨度慢、延遲較大、啟動慢、產(chǎn)生大量的磁盤碎片、噪音大、容易發(fā)生機(jī)械故障、工作溫度范圍(5-55℃)較窄和抗震動效果極差,漸漸的滿足不了現(xiàn)代計算機(jī)的高要求。SSD(Solid State Drives,固態(tài)硬盤),也叫固盤,應(yīng)運(yùn)而生。
SSD是用固態(tài)電子存儲芯片陣列制成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態(tài)硬盤在接口的規(guī)范和定義、功能及使用方法上與普通硬盤的完全相同,在產(chǎn)品外形和尺寸上也完全與普通硬盤一致。固態(tài)硬盤的存儲介質(zhì)分為兩種,一種是采用閃存(FLASH芯片)作為存儲介質(zhì),另外一種是采用DRAM作為存儲介質(zhì)。由于其穩(wěn)定的性能而且有效的克服了上述機(jī)械硬盤的缺點(diǎn),SSD的應(yīng)用越來越廣。
但是由于SSD的價格比HDD要高很多,目前存儲系統(tǒng)應(yīng)用較多的是HDD與SSD混合的存儲陣列,SSD在混合存儲陣列中被用作緩存(Cache)。SSD緩存中存放的是熱點(diǎn)數(shù)據(jù)的副本,當(dāng)業(yè)務(wù)發(fā)生改變時,也就是當(dāng)前的熱點(diǎn)數(shù)據(jù)發(fā)生變化時,需要將當(dāng)前新的熱點(diǎn)數(shù)據(jù)遷移到SSD緩存中,而將之前的舊熱點(diǎn)數(shù)據(jù)遷移出去,這樣SSD Cache才能提供較好的加速效果。
對于熱點(diǎn)數(shù)據(jù)切換的方法,現(xiàn)有技術(shù)為基于LRU最近最少使用頁面置換算法(Least Recently Used),即首先淘汰最長時間未被使用的頁面;和基于LFU最近最不常用頁面置換算法(Least Frequently Used),即淘汰一定時期內(nèi)被訪問次數(shù)最少的頁面?;谶@兩種算法在熱點(diǎn)進(jìn)行切換時,由于該兩種算法無法識別熱點(diǎn)數(shù)據(jù)是否發(fā)生了切換,只能按照算法的要求對數(shù)據(jù)進(jìn)行換進(jìn)換出,這就導(dǎo)致了熱點(diǎn)數(shù)據(jù)替換不及時且替換時間太長。在切換過程中,若熱點(diǎn)數(shù)據(jù)無法快速進(jìn)入緩存,則會導(dǎo)致整個SSD Cache的加速效果較差,系統(tǒng)的訪問響應(yīng)時間較長,訪問率較低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的是提供一種固態(tài)硬盤的數(shù)據(jù)遷移的方法及裝置,在熱點(diǎn)數(shù)據(jù)發(fā)生變化時,提供良好的加速效果,提高了系統(tǒng)響應(yīng)時間和訪問率。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
本發(fā)明實施例一方面提供了一種固態(tài)硬盤的數(shù)據(jù)遷移的方法,包括:
在緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池分別建立緩存隊列和預(yù)緩存隊列,所述緩存隊列包括緩存數(shù)據(jù)塊的訪問熱度信息,所述預(yù)緩存隊列包括未緩存數(shù)據(jù)塊的訪問熱度信息;所述數(shù)據(jù)塊對應(yīng)的對象位于隊列的級別隨著訪問熱度的增加而提升;
計算當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)的緩存命中率;
根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度,更新所述緩存隊列以及所述預(yù)緩存隊列;
當(dāng)所述預(yù)緩存隊列中所述對象的當(dāng)前級別達(dá)到預(yù)設(shè)級別時,將所述對象遷入所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊寫入緩存。
優(yōu)選的,在所述根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度,更新所述緩存隊列以及所述預(yù)緩存隊列之后還包括:
當(dāng)所述緩存隊列中所述對象的當(dāng)前級別達(dá)到第二預(yù)設(shè)級別時,將所述對象遷出所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊從所述緩存中擦除。
優(yōu)選的,所述根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度為:
當(dāng)所述緩存命中率位于第一預(yù)設(shè)值與第二預(yù)設(shè)值之間時,所述提升跨度為預(yù)設(shè)第一跨度值,所述第一預(yù)設(shè)值小于所述第二預(yù)設(shè)值;
當(dāng)所述緩存命中率大于所述第二預(yù)設(shè)值時,所述提升跨度為小于所述預(yù)設(shè)第一跨度值的數(shù)值;
當(dāng)所述緩存命中率小于所述第一預(yù)設(shè)值時,所述提升跨度為大于所述預(yù)設(shè)第一跨度值的數(shù)值。
優(yōu)選的,在所述緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池建立緩存隊列和預(yù)緩存隊列之前,還包括:
獲取所述對象的配置信息,所述配置信息為以下任意一項或任意組合:
物理塊標(biāo)識參數(shù)、訪問次數(shù)參數(shù)以及臟塊參數(shù);
其中,所述物理塊標(biāo)識參數(shù)為所述對象對應(yīng)的緩存的數(shù)據(jù)塊在機(jī)械硬盤的物理塊號;所述訪問次數(shù)參數(shù)為所述緩存數(shù)據(jù)塊被命中的次數(shù);所述臟塊參數(shù)為未被寫入內(nèi)存或所述緩存的修改過的數(shù)據(jù)塊。
優(yōu)選的,所述計算當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)的緩存命中率為:
判斷當(dāng)前訪問數(shù)據(jù)塊是否為所述緩存數(shù)據(jù);
當(dāng)判定所述當(dāng)前訪問數(shù)據(jù)塊為所述緩存數(shù)據(jù)時,則利用命中所述當(dāng)前訪問數(shù)據(jù)塊的次數(shù)與總訪問次數(shù)的比率計算所述緩存命中率。
優(yōu)選的,所述判斷當(dāng)前數(shù)據(jù)塊是否為所述緩存數(shù)據(jù)為:
創(chuàng)建哈希鏈表,所述哈希鏈表的哈希鍵值對應(yīng)所述對象的所述物理塊標(biāo)識參數(shù);
獲取所述當(dāng)前數(shù)據(jù)塊的物理塊號,并計算所述哈希鍵值;
根據(jù)所述哈希鍵值在所述哈希鏈表中匹配哈希桶;
當(dāng)判定所述哈希桶中存在與所述當(dāng)前數(shù)據(jù)塊的物理塊號相等的所述物理塊標(biāo)識參數(shù)時,根據(jù)所述物理塊標(biāo)識參數(shù)確定對應(yīng)的所述對象;
當(dāng)所述對象與所述緩存數(shù)據(jù)塊相對應(yīng)時,則判定所述當(dāng)前數(shù)據(jù)塊為所述緩存數(shù)據(jù)。
本發(fā)明實施例另一方面提供了一種固態(tài)硬盤的數(shù)據(jù)遷移的裝置,包括:
建立模塊,用于在緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池分別建立緩存隊列和預(yù)緩存隊列,所述緩存隊列包括緩存數(shù)據(jù)塊的訪問熱度信息,所述預(yù)緩存隊列包括未緩存數(shù)據(jù)塊的訪問熱度信息;所述數(shù)據(jù)塊對應(yīng)的對象位于隊列的級別隨著訪問熱度的增加而提升;
計算模塊,用于計算當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)的緩存命中率;
更新模塊,用于根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度,更新所述緩存隊列以及所述預(yù)緩存隊列;
遷入模塊,用于當(dāng)所述預(yù)緩存隊列中所述對象的當(dāng)前級別達(dá)到預(yù)設(shè)級別時,將所述對象遷入所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊寫入緩存。
優(yōu)選的,還包括:
遷出模塊,用于當(dāng)所述緩存隊列中所述對象的當(dāng)前級別達(dá)到第二預(yù)設(shè)級別時,將所述對象遷出所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊從所述緩存中擦除。
優(yōu)選的,所述根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度為:
當(dāng)所述緩存命中率位于第一預(yù)設(shè)值與第二預(yù)設(shè)值之間時,所述提升跨度為預(yù)設(shè)第一跨度值,所述第一預(yù)設(shè)值小于所述第二預(yù)設(shè)值;
當(dāng)所述緩存命中率大于所述第二預(yù)設(shè)值時,所述提升跨度為小于所述預(yù)設(shè)第一跨度值的數(shù)值;
當(dāng)所述緩存命中率小于所述第一預(yù)設(shè)值時,所述提升跨度為大于所述預(yù)設(shè)第一跨度值的數(shù)值。
優(yōu)選的,所述計算模塊包括:
判斷單元,用于判斷當(dāng)前訪問數(shù)據(jù)塊是否為所述緩存數(shù)據(jù);
計算單元,用于當(dāng)判定所述當(dāng)前訪問數(shù)據(jù)塊為所述緩存數(shù)據(jù)時,則利用命中所述當(dāng)前訪問數(shù)據(jù)塊的次數(shù)與總訪問次數(shù)的比率計算所述緩存命中率。
本發(fā)明實施例提供了一種固態(tài)硬盤數(shù)據(jù)遷移的方法,通過建立緩存隊列和預(yù)緩存隊列,根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;根據(jù)緩存數(shù)據(jù)的緩存命中率調(diào)整各所述對象級別的提升跨度,然后更新預(yù)緩存隊列;判斷更新后的預(yù)緩存隊列中各所述對象的當(dāng)前級別是否達(dá)到預(yù)設(shè)級別,當(dāng)所述對象的當(dāng)前級別達(dá)到預(yù)設(shè)級別后,將其對應(yīng)的數(shù)據(jù)塊寫入緩存中。
本發(fā)明的優(yōu)點(diǎn)在于根據(jù)緩存數(shù)據(jù)的緩存命中率調(diào)整各所述對象級別的提升跨度,緩存命中率反映了當(dāng)時緩存數(shù)據(jù)的訪問熱度,當(dāng)緩存命中率較低時,當(dāng)前緩存的數(shù)據(jù)不為熱點(diǎn)數(shù)據(jù),將提升跨度調(diào)整升高,加快預(yù)緩存隊列中對象級別的升高,當(dāng)預(yù)緩存隊列中的對象的級別達(dá)到預(yù)設(shè)級別時,便將所述對象對應(yīng)的數(shù)據(jù)塊寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,快速識別切換后的熱點(diǎn)數(shù)據(jù),從而快速的將當(dāng)前的熱點(diǎn)數(shù)據(jù)寫入緩存,進(jìn)而提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率。
此外,本發(fā)明實施例還針對固態(tài)硬盤數(shù)據(jù)遷移的方法提供了相應(yīng)的實現(xiàn)裝置,進(jìn)一步使得所述方法更具有實用性,所述裝置具有相應(yīng)的優(yōu)點(diǎn)。
附圖說明
為了更清楚的說明本發(fā)明實施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的示例性應(yīng)用場景的框架示意圖;
圖2為本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移方法的流程示意圖;
圖3為本發(fā)明實施例提供的緩存數(shù)據(jù)池與預(yù)緩存數(shù)據(jù)池的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的預(yù)緩存隊列和緩存隊列的原理示意圖;
圖5為本發(fā)明實施例提供的哈希鏈表的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的調(diào)整隊列提升跨度的流程示意圖;
圖7為本發(fā)明實施例提供的另一種固態(tài)硬盤數(shù)據(jù)遷移方法的流程示意圖;
圖8為本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移裝置的結(jié)構(gòu)圖;
圖9為本發(fā)明實施例提供的另一種固態(tài)硬盤數(shù)據(jù)遷移裝置的結(jié)構(gòu)圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實施方式對本發(fā)明作進(jìn)一步的詳細(xì)說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”“第四”等是用于區(qū)別不同的對象,而不是用于描述特定的順序。此外術(shù)語“包括”和“具有”以及他們?nèi)魏巫冃?,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可包括沒有列出的步驟或單元。
本申請的發(fā)明人經(jīng)過研究發(fā)現(xiàn),現(xiàn)有技術(shù)無法識別熱點(diǎn)數(shù)據(jù)的是否發(fā)生了切換,只能按照算法要求對數(shù)據(jù)進(jìn)行換進(jìn)換出,這就導(dǎo)致了熱點(diǎn)數(shù)據(jù)替換時間太長,在切換過程中,熱點(diǎn)數(shù)據(jù)無法快速進(jìn)入緩存,導(dǎo)致整個SSD Cache的加速效果較差,系統(tǒng)的訪問響應(yīng)時間較長,訪問率較低。鑒于此,本申請通過根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;根據(jù)緩存數(shù)據(jù)的緩存命中率調(diào)整各所述對象級別的提升跨度,然后更新預(yù)緩存隊列;判斷更新后的預(yù)緩存隊列中各所述對象的當(dāng)前級別是否達(dá)到預(yù)設(shè)級別,當(dāng)當(dāng)前級別達(dá)到預(yù)設(shè)級別后,將其對應(yīng)的數(shù)據(jù)塊寫入緩存中。通過及時更新緩存命中率調(diào)整提升跨度,實現(xiàn)了快速的識別切換后的熱點(diǎn)數(shù)據(jù),從而加快熱點(diǎn)數(shù)據(jù)寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率。
基于上述本發(fā)明實施例的技術(shù)方案,本申請實施例的應(yīng)用場景之一,可以通過客戶端101與用戶之間的交互來實現(xiàn)。如圖1所示,在這一應(yīng)用場景中,客戶端101使用SSD與HDD混合的存儲陣列,用戶訪問客戶端101。用戶訪問次數(shù)較多的數(shù)據(jù)塊為了便于用戶讀寫,將其放入SSD緩存中暫時存儲,當(dāng)用戶進(jìn)行下一次訪問時直接從緩存中讀取。當(dāng)用戶訪問內(nèi)容發(fā)生變化時,緩存沒有存儲相應(yīng)的數(shù)據(jù)塊,那么用戶訪問時響應(yīng)時間就會變長,客戶端101通過建立緩存隊列和預(yù)緩存隊列,根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;通過及時更新緩存命中率調(diào)整緩存隊列和預(yù)緩存隊列提升跨度,這樣就可快速識別當(dāng)前訪問的數(shù)據(jù)(熱點(diǎn)數(shù)據(jù)),將熱點(diǎn)數(shù)據(jù)塊寫入緩存中,提高了訪問率,有效的縮短了響應(yīng)時間。其中,訪問信息可以是通過客戶端101與服務(wù)器102之間進(jìn)行交互來進(jìn)行訪問服務(wù)器上的信息,或者,是用于直接訪問客戶端101自身的信息,本申請實施例對此不做限定。
需要注意的是,上述應(yīng)用場景僅是為了便于理解本申請的思想和原理而示出,本申請的實施方式在此方面不受任何限制。相反,本申請的實施方式可以應(yīng)用于適用的任何場景。
在介紹了本發(fā)明實施例的技術(shù)方案后,下面詳細(xì)的說明本申請的各種非限制性實施方式。
實施例一:
首先參見圖2,圖2為本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移的方法的流程示意圖,本發(fā)明實施例可包括以下內(nèi)容:
S201:在緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池分別建立緩存隊列和預(yù)緩存隊列,所述緩存隊列包括緩存數(shù)據(jù)塊的訪問熱度信息,所述預(yù)緩存隊列包括未緩存數(shù)據(jù)塊的訪問熱度信息;所述數(shù)據(jù)塊對應(yīng)的對象位于隊列的級別隨著訪問熱度的增加而提升。
緩存數(shù)據(jù)池(cache_pool)和預(yù)緩存數(shù)據(jù)池(pre_cache_pool)的結(jié)構(gòu)如圖3所示,兩個池中的數(shù)據(jù)可通過兩段連續(xù)的內(nèi)存進(jìn)行保存,這兩段內(nèi)存可按照對象(entry)大小為單位進(jìn)行等大的劃分并編號,兩個池中entry的個數(shù)相同。entry的參數(shù)可包括以下任意一項或任意組合:
表參數(shù)list、哈希表參數(shù)hlist、物理塊標(biāo)識參數(shù)oblock、訪問次數(shù)參數(shù)hit_count以及臟塊參數(shù)dirty;
其中,oblock為entry對應(yīng)的SSD設(shè)備緩存的數(shù)據(jù)塊在HDD設(shè)備上的物理塊號,這樣entry的編號與oblock構(gòu)成了SSD物理塊與HHD物理塊之間緩存關(guān)系的空間映射關(guān)系;所述訪問次數(shù)參數(shù)為緩存數(shù)據(jù)塊被命中的次數(shù),反映了entry對應(yīng)的數(shù)據(jù)塊的熱度,在緩存數(shù)據(jù)塊被命中后加1;臟數(shù)據(jù)表示源數(shù)據(jù)已被修改,但還未寫入內(nèi)存或緩存。
緩存數(shù)據(jù)池中的entry是對SSD設(shè)備物理塊的抽象,entry的個數(shù)與SSD設(shè)備中物理塊的個數(shù)相同并與其一一對應(yīng),例如entry0對應(yīng)SSD設(shè)備中塊號為0的物理塊。而預(yù)緩存數(shù)據(jù)池中的entry為未被緩存的數(shù)據(jù)塊的熱度信息。
初始化時,SSD設(shè)備的物理塊沒有緩存數(shù)據(jù),把數(shù)據(jù)池中entry放在一個空閑鏈表中,當(dāng)HDD的數(shù)據(jù)塊需要緩存到SSD中時,從空閑鏈表中獲取一個空閑entry,相對應(yīng)的SSD物理塊上寫入數(shù)據(jù)。
可采用多級隊列mq(multi quene)算法在所述緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池分別建立緩存隊列(cache_queue)和預(yù)緩存隊列(pre_cache_queue),mq算法不僅可用于維護(hù)SSD設(shè)備中的緩存數(shù)據(jù)塊的熱度信息,還可以維護(hù)該設(shè)備中未緩存的數(shù)據(jù)塊的熱度信息,mq算法將這些熱度信息放置在多級隊列中,如圖4所示,級別越高的隊列,對應(yīng)著的數(shù)據(jù)塊的訪問熱度越大,例如,mq算法建立了2個16級的隊列,一個為緩存隊列,一個為預(yù)緩存隊列,第16級為該隊列的最高級,對應(yīng)著熱度最大的數(shù)據(jù)塊。
S202:計算當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)的緩存命中率。
在計算緩存命中率之前,應(yīng)該先去判斷當(dāng)前訪問數(shù)據(jù)塊是否為所述緩存數(shù)據(jù);當(dāng)判定所述當(dāng)前數(shù)據(jù)塊為所述緩存數(shù)據(jù)時,則利用命中所述當(dāng)前訪問數(shù)據(jù)塊的次數(shù)與總訪問次數(shù)的比率計算所述緩存命中率。
判斷當(dāng)前數(shù)據(jù)塊是否為所述緩存數(shù)據(jù)塊具體為:
如圖5所示,創(chuàng)建哈希鏈表,所述哈希鏈表的哈希鍵值對應(yīng)所述對象的所述物理塊標(biāo)識參數(shù);
獲取所述當(dāng)前數(shù)據(jù)塊的物理塊號,并計算所述哈希鍵值;
根據(jù)所述哈希鍵值在所述哈希鏈表中匹配哈希桶;
當(dāng)判定所述哈希桶中存在與所述當(dāng)前數(shù)據(jù)塊的物理塊號相等的所述物理塊標(biāo)識參數(shù)時,根據(jù)所述物理塊標(biāo)識參數(shù)確定對應(yīng)的所述對象;
當(dāng)所述對象與所述緩存數(shù)據(jù)塊相對應(yīng)時,則判定所述當(dāng)前數(shù)據(jù)塊為所述緩存數(shù)據(jù)塊。
緩存命中率為命中緩存的次數(shù)與總訪問次數(shù)的占比,即當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)被訪問的次數(shù)與總次數(shù)的比率,反映了當(dāng)前緩存的數(shù)據(jù)的熱度信息,進(jìn)一步可反映訪問時的響應(yīng)時間以及訪問率,也就是反映了當(dāng)前硬件的性能狀況。所述緩存命中率與性能表現(xiàn)成正比,故緩存命中率可用來衡量性能表現(xiàn)情況。
根據(jù)緩存命中率的大小,可設(shè)置三個范圍,即:
所述第一預(yù)設(shè)范圍為0-20%;
所述第二預(yù)設(shè)范圍為20%-50%;
所述第三預(yù)設(shè)范圍為50%-100%。
當(dāng)所述緩存命中率在第一預(yù)設(shè)范圍時,表示性能差,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度較低,已經(jīng)不是最新的訪問熱點(diǎn)數(shù)據(jù)了;
當(dāng)所述緩存命中率在第二預(yù)設(shè)范圍時,表示性能中等,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度一般,不是最新的訪問熱點(diǎn)數(shù)據(jù)了,但也數(shù)據(jù)熱點(diǎn)數(shù)據(jù);
當(dāng)所述緩存命中率在第三預(yù)設(shè)范圍時,表示性能優(yōu)異,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度高,是最新的訪問熱點(diǎn)數(shù)據(jù)。
需要說明的是,上述所述三級范圍僅僅為一個優(yōu)選的方案,在實際操作中并不受此限定;響應(yīng)的范圍對應(yīng)的值也是優(yōu)選的方案,在實際操作中,本領(lǐng)域技術(shù)人員可根據(jù)實際情況進(jìn)行自定義。
S203:根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象的當(dāng)前級別的提升跨度,更新所述緩存隊列以及所述預(yù)緩存隊列。
給所述緩存隊列和預(yù)緩存隊列設(shè)置對象級別的提升跨度,即在所述對象隨著當(dāng)前熱度在多級隊列中進(jìn)行排序時的級別跨度。例如,設(shè)置當(dāng)前隊列中級別跨度為1,當(dāng)判斷對象的熱度發(fā)生變化后,假設(shè)當(dāng)前該對象處于6級,則當(dāng)前熱度發(fā)生變化后,如果熱度增加則可提升到7級;如果熱度降低,則降低到5級。當(dāng)然,上述例子是為了更好的理解本申請方案,實際中并不受限于此。
根據(jù)所述緩存命中率(性能表現(xiàn)情況)調(diào)整提升跨度時,如圖6所示,可為:
當(dāng)所述緩存命中率位于第一預(yù)設(shè)值與第二預(yù)設(shè)值之間時,所述提升跨度為預(yù)設(shè)第一跨度值,所述第一預(yù)設(shè)值小于所述第二預(yù)設(shè)值;
當(dāng)所述緩存命中率大于所述第二預(yù)設(shè)值時,所述提升跨度為小于所述預(yù)設(shè)第一跨度值的數(shù)值;
當(dāng)所述緩存命中率小于所述第一預(yù)設(shè)值時,所述提升跨度為大于所述預(yù)設(shè)第一跨度值的數(shù)值。
根據(jù)所述緩存命中率調(diào)整提升跨度,舉例子來說,例如:
所述第一預(yù)設(shè)范圍為0-20%,所述預(yù)緩存隊列以及緩存隊列的提升跨度增大;
所述第二預(yù)設(shè)范圍為20%-50%,所述預(yù)緩存隊列以及緩存隊列的提升跨度不變;
所述第三預(yù)設(shè)范圍為50%-100%,所述預(yù)緩存隊列以及緩存隊列的提升跨度減小。
當(dāng)所述緩存命中率在第一預(yù)設(shè)范圍時,表示性能差,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度較低,已經(jīng)不是最新的訪問熱點(diǎn)數(shù)據(jù)了,故應(yīng)該加快提升跨度,使得預(yù)緩存隊列以及緩存隊列的所述對象在排序時快速跨級,從而加快熱點(diǎn)數(shù)據(jù)寫入緩存和非熱點(diǎn)數(shù)據(jù)的遷出緩存;
當(dāng)所述緩存命中率在第二預(yù)設(shè)范圍時,表示性能中等,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度一般,不是最新的訪問熱點(diǎn)數(shù)據(jù)了,但也數(shù)據(jù)熱點(diǎn)數(shù)據(jù),故保持當(dāng)前的跨度,使得預(yù)緩存隊列以及緩存隊列的所述對象在排序時保持穩(wěn)定的狀態(tài);
當(dāng)所述緩存命中率在第三預(yù)設(shè)范圍時,表示性能好,即當(dāng)前緩存數(shù)據(jù)塊的訪問熱度高,是最新的訪問熱點(diǎn)數(shù)據(jù),故應(yīng)該降低提升跨度,使得預(yù)緩存隊列以及緩存隊列的所述對象在排序時級別跨度較小,使得熱點(diǎn)數(shù)據(jù)長時間保存在緩存中,避免非熱點(diǎn)數(shù)據(jù)寫入緩存。
需要說明的是,在上述三級范圍內(nèi)對提升跨度的進(jìn)行調(diào)整僅僅為一個優(yōu)選的方案,在實際操作中并不受此限定;響應(yīng)的范圍對應(yīng)的值也是優(yōu)選的方案,在實際操作中,本領(lǐng)域技術(shù)人員可根據(jù)實際情況進(jìn)行自定義。
需要說明的是,在具體實施過程中,S201中的熱度信息是不斷變化的,為了保證及時對隊列進(jìn)行更新,快速識別當(dāng)前的熱點(diǎn)數(shù)據(jù),對于緩存命中率的計算和相對的調(diào)整提升跨度可實時進(jìn)行,當(dāng)然,優(yōu)選的可周期性進(jìn)行。例如,設(shè)定固定時間如5ms,在5ms到達(dá)后,便對緩存命中率進(jìn)行一次計算,相應(yīng)的對提升跨度進(jìn)行一次調(diào)整,并將隊列進(jìn)行更新。
S204:當(dāng)所述預(yù)緩存隊列中所述對象的當(dāng)前級別達(dá)到預(yù)設(shè)級別時,將所述對象遷入所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊寫入緩存。
更新后的預(yù)緩存隊列中各所述對象處于新的級別,可與預(yù)設(shè)的閾值相比較,如果超過預(yù)設(shè)級別,則說明當(dāng)前預(yù)緩存隊列中的對象對應(yīng)的數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),將該對象移入緩存隊列中,對應(yīng)著數(shù)據(jù)塊寫入緩存中。舉例來說,如圖4所示假設(shè)預(yù)緩存隊列中對象entry級別為14,更新后的級別為15,而預(yù)設(shè)級別為15,即當(dāng)預(yù)緩存隊列中的對象處于15級及以上時,將該對象遷入緩存隊列,而該對象遷入后,根據(jù)與緩存隊列中的對象熱度信息相比,將其排列在級別為2的隊列中。當(dāng)然,該例子為更好的理解本申請的技術(shù)方案,實際操作中并不受限于此。
由上可知,本發(fā)明實施例提供了一種固態(tài)硬盤數(shù)據(jù)遷移的方法,通過建立緩存隊列和預(yù)緩存隊列,根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;根據(jù)緩存數(shù)據(jù)的緩存命中率調(diào)整各所述對象級別的提升跨度,然后更新預(yù)緩存隊列;判斷更新后的預(yù)緩存隊列中各所述對象的當(dāng)前級別是否達(dá)到預(yù)設(shè)級別,當(dāng)當(dāng)前級別達(dá)到閾值后,將其對應(yīng)的數(shù)據(jù)塊寫入緩存中。通過及時更新緩存命中率調(diào)整提升跨度,實現(xiàn)了快速的識別切換后的熱點(diǎn)數(shù)據(jù),從而加快熱點(diǎn)數(shù)據(jù)寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率。
考慮在實際操作過程中,為了更方便的使用該方法,基于上述實施例做了部分改進(jìn)。
實施例二:
參見圖7,圖7為本發(fā)明實施例提供的另一種固態(tài)硬盤數(shù)據(jù)遷移的方法的流程示意圖,具體的可包括以下內(nèi)容:
S701-S704:具體的與實施例一的S201-S204所描述一致,此處不再贅述。
S705:當(dāng)所述緩存隊列中所述對象的當(dāng)前級別達(dá)到第二預(yù)設(shè)級別時,將所述對象遷出所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊從所述緩存中擦除。
具體的,更新后的緩存隊列中各所述對象處于新的級別,可與預(yù)設(shè)的級別相比較,如果低于預(yù)設(shè)級別,則說明當(dāng)前緩存隊列中的對象對應(yīng)的數(shù)據(jù)不為熱點(diǎn)數(shù)據(jù),將該對象移出緩存隊列中,對應(yīng)著數(shù)據(jù)塊從緩存中擦除。舉例來說,假設(shè)緩存隊列中對象entry級別為3,更新后的級別為2,而預(yù)設(shè)級別為2,即當(dāng)緩存隊列中的對象處于2級及以下時,將該對象對應(yīng)的數(shù)據(jù)不是熱點(diǎn)數(shù)據(jù),應(yīng)該遷出緩存隊列,進(jìn)一步的,將其對應(yīng)的數(shù)據(jù)塊從緩存中擦除。當(dāng)然,該例子為更好的理解本申請的技術(shù)方案,實際操作中并不受限于此。
由上可知,本發(fā)明實施例基于實施例一,通過建立緩存隊列和預(yù)緩存隊列,根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;通過及時更新緩存命中率調(diào)整緩存隊列和預(yù)緩存隊列提升跨度,實現(xiàn)了快速的識別切換后的熱點(diǎn)數(shù)據(jù),從而加快熱點(diǎn)數(shù)據(jù)寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率;而且還將緩存中不是熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)塊擦除,增大緩存的剩余空間,一定程度上有利于提升運(yùn)算速度,而且,通過及時擦除非熱點(diǎn)數(shù)據(jù),可以有效的遷入熱點(diǎn)數(shù)據(jù),在緩存空間占用率高的時候便可不浪費(fèi)時間去進(jìn)行清理緩存,節(jié)省時間和人力。
本發(fā)明實施例還針對固態(tài)硬盤數(shù)據(jù)遷移的方法提供了相應(yīng)的實現(xiàn)裝置,進(jìn)一步使得所述方法更具有實用性。下面對本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移的裝置進(jìn)行介紹,下文描述的固態(tài)硬盤數(shù)據(jù)遷移的裝置與上文描述的固態(tài)硬盤數(shù)據(jù)遷移的方法可相互對應(yīng)參照。
實施例三:
參見圖8,圖8為本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移裝置的結(jié)構(gòu)圖,該裝置可包括:
建立模塊801,用于在緩存數(shù)據(jù)池和預(yù)緩存數(shù)據(jù)池分別建立緩存隊列和預(yù)緩存隊列,所述緩存隊列包括緩存數(shù)據(jù)塊的訪問熱度信息,所述預(yù)緩存隊列包括未緩存數(shù)據(jù)塊的訪問熱度信息;所述數(shù)據(jù)塊對應(yīng)的對象位于隊列的級別隨著訪問熱度的增加而提升。
計算模塊802,用于計算當(dāng)前固態(tài)硬盤中緩存數(shù)據(jù)的緩存命中率。
所述計算模塊包括:
判斷單元8021,用于判斷當(dāng)前訪問數(shù)據(jù)塊是否為所述緩存數(shù)據(jù);
計算單元8022,用于當(dāng)判定所述當(dāng)前訪問數(shù)據(jù)塊為所述緩存數(shù)據(jù)時,則利用命中所述當(dāng)前訪問數(shù)據(jù)塊的次數(shù)與總訪問次數(shù)的比率計算所述緩存命中率。
所述判斷單元進(jìn)一步包括:
創(chuàng)建子單元80211,用于創(chuàng)建哈希鏈表,所述哈希鏈表的哈希鍵值對應(yīng)所述對象的所述物理塊標(biāo)識參數(shù);
獲取子單元80212,用于獲取所述當(dāng)前數(shù)據(jù)塊的物理塊號,并計算所述哈希鍵值;
第一確定子單元80213,用于根據(jù)所述哈希鍵值在所述哈希鏈表中匹配哈希桶;
第二確定子單元80214,用于當(dāng)判定所述哈希桶中存在與所述當(dāng)前數(shù)據(jù)塊的物理塊號相等的所述物理塊標(biāo)識參數(shù)時,根據(jù)所述物理塊標(biāo)識參數(shù)確定對應(yīng)的所述對象;
判斷子單元80215,用于當(dāng)所述對象與所述緩存數(shù)據(jù)塊相對應(yīng)時,則判定所述當(dāng)前數(shù)據(jù)塊為所述緩存數(shù)據(jù)塊。
更新模塊803,用于根據(jù)所述緩存命中率確定所述緩存隊列以及所述預(yù)緩存隊列中各所述對象級別的提升跨度,更新所述緩存隊列以及所述預(yù)緩存隊列。
遷入模塊804,用于當(dāng)所述預(yù)緩存隊列中所述對象的當(dāng)前級別達(dá)到預(yù)設(shè)級別時,將所述對象遷入所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊寫入緩存。
本發(fā)明實施例所述一種固態(tài)硬盤數(shù)據(jù)遷移裝置的各功能模塊的功能可根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可以參照上述方法實施例的相關(guān)描述,此處不再贅述。
由上可知,本發(fā)明實施例提供了一種固態(tài)硬盤數(shù)據(jù)遷移的裝置,通過建立緩存隊列和預(yù)緩存隊列,根據(jù)數(shù)據(jù)塊訪問熱度的高低將其對應(yīng)的對象排列于相應(yīng)的隊列中;根據(jù)緩存數(shù)據(jù)的緩存命中率調(diào)整各所述對象級別的提升跨度,然后更新預(yù)緩存隊列;判斷更新后的預(yù)緩存隊列中各所述對象的當(dāng)前級別是否達(dá)到預(yù)設(shè)級別,當(dāng)當(dāng)前級別達(dá)到預(yù)設(shè)級別后,將其對應(yīng)的數(shù)據(jù)塊寫入緩存中。通過及時更新緩存命中率調(diào)整提升跨度,實現(xiàn)了快速的識別了切換后的熱點(diǎn)數(shù)據(jù),從而加快熱點(diǎn)數(shù)據(jù)寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率。
實施例四:
此外,在實際操作中,考慮到應(yīng)用時操作方便,請參見圖9,圖9為本發(fā)明實施例提供的一種固態(tài)硬盤數(shù)據(jù)遷移裝置的結(jié)構(gòu)圖。
在實施例三基本功能模塊的基礎(chǔ)上,還可以包括:
遷出模塊905,用于當(dāng)所述緩存隊列中所述對象的當(dāng)前級別達(dá)到第二預(yù)設(shè)級別時,將所述對象遷出所述緩存隊列,并將其對應(yīng)的所述數(shù)據(jù)塊從所述緩存中擦除。
本發(fā)明實施例所述一種固態(tài)硬盤數(shù)據(jù)遷移裝置的各功能模塊的功能可根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可以參照上述方法實施例的相關(guān)描述,此處不再贅述。此外,相同功能模塊的說明請參照實施例三,此處不再贅述。
本發(fā)明實施例在實施例三的基礎(chǔ)上,不僅可實現(xiàn)了快速的識別切換后的熱點(diǎn)數(shù)據(jù),從而加快熱點(diǎn)數(shù)據(jù)寫入緩存,這樣就保證了在熱點(diǎn)數(shù)據(jù)發(fā)生變化后,提高固態(tài)硬盤緩存的加速效果,提升系統(tǒng)的響應(yīng)時間以及訪問率;而且還將緩存中不是熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)塊擦除,增大緩存的剩余空間,一定程度上有利于提升運(yùn)算速度,而且,通過及時擦除非熱點(diǎn)數(shù)據(jù),可以有效的遷入熱點(diǎn)數(shù)據(jù),在緩存空間占用率高的時候便可不浪費(fèi)時間去進(jìn)行清理緩存,節(jié)省時間和人力。
本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點(diǎn)說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的一種固態(tài)硬盤數(shù)據(jù)遷移方法以及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。