專利名稱:緩存調(diào)度方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲技術(shù),特別涉及一種緩存調(diào)度方法、以及一種緩存調(diào)度裝置。
背景技術(shù):
現(xiàn)有的視頻監(jiān)控系統(tǒng)會采用IP SAN(Storage Area Network,存儲局域網(wǎng)絡(luò))技術(shù)來實現(xiàn)數(shù)據(jù)的存儲。即,將攝像頭拍攝的視頻數(shù)據(jù)都存儲到IPSAN存儲設(shè)備中,當(dāng)用戶需要查看歷史錄像時再從IP SAN存儲設(shè)備中讀取錄像數(shù)據(jù)。采用IP SAN技術(shù)實現(xiàn)數(shù)據(jù)存儲的視頻監(jiān)控系統(tǒng)的一種典型組網(wǎng)方式如圖1所示, 包括EC (Encoder,視頻編碼器)、DC (Decoder,解碼器)、VC (Video Client,監(jiān)控客戶端)、 DM (Data Management,數(shù)據(jù)管理服務(wù)器)、VM (Video Management,視頻管理服務(wù)器)、以及IP SAN存儲設(shè)備。當(dāng)需要錄像存儲時,EC可以通過iSCSianternet Small Computer System hterface,小型計算機系統(tǒng)接口 )將數(shù)據(jù)寫入至IP SAN存儲設(shè)備中;當(dāng)需要錄像回放時, VC或DC可以向VM發(fā)出申請,再由VM調(diào)度DM讀取IPSAN存儲設(shè)備中的數(shù)據(jù)、并轉(zhuǎn)發(fā)給VC 或DC。其中,錄像存儲過程對存儲實時性的要求比較高、而EC內(nèi)部的緩存資源又十分有限,因而就需要IP SAN存儲設(shè)備具有較高的響應(yīng)速度,以避免EC需要寫入至IP SAN的數(shù)據(jù)發(fā)生丟包。但是,現(xiàn)有用于視頻監(jiān)控的IP SAN存儲設(shè)備中的RAID (Redundant Array of Independent Disk,獨立磁盤冗余陣列)通常會選用RAID5作為陣列類型,而且,多路EC通道共用一臺IP SAN存儲設(shè)備。這樣,就容易導(dǎo)致IP SAN存儲設(shè)備在存儲數(shù)據(jù)時產(chǎn)生RAID5 的小寫問題,從而容易導(dǎo)致IP SAN存儲設(shè)備的響應(yīng)速度慢。具體先參見如圖2,多路EC通道會同時向IP SAN存儲設(shè)備連續(xù)地發(fā)送包含有數(shù)據(jù)的寫命令,屬于不同路EC通道的寫命令會相互交錯地進入存儲控制器(Target)命令隊列中等待,然后再按照進入命令隊列(本文將“Target命令隊列”簡稱為“命令隊列”)的順序,分別屬于不同路EC通道的寫命令包含的數(shù)據(jù)(圖2中以虛線方塊表示數(shù)據(jù))會分別從命令隊列中被寫入至RAID5中。對于包含有多路EC通道的視頻監(jiān)控系統(tǒng)來說,IP SAN存儲設(shè)備的RAID5中會為每路EC通道劃分出對應(yīng)的一個LUN(Logical Unit Number,邏輯單元號),每路EC通道所對應(yīng)的一個LUN由RAID5中屬于該路EC通道的各條帶(Mrip)組成。因此,向RAID5的寫操作實際上就是分別針對每路EC通道的對應(yīng)LUN的一個條帶的寫操作。而相互交錯地進入命令隊列的各路EC通道的寫命令可以看作是離散分布的、而不是相對集中分布的,因此,每次針對一路EC通道的對應(yīng)LUN的一個條帶的寫操作只能寫入少量的數(shù)據(jù),從而導(dǎo)致對RAID5的小寫。由于RAID5的小寫會使IP SAN存儲設(shè)備產(chǎn)生很大的開銷,因而也就會影響IP SAN存儲設(shè)備的響應(yīng)速度。為了減小RAID5的小寫問題對IP SAN存儲設(shè)備的響應(yīng)速度的影響,現(xiàn)有技術(shù)中在 IP SAN存儲設(shè)備中增設(shè)了寫緩存。如圖3所示,多路EC通道會同時向IP SAN存儲設(shè)備連續(xù)地發(fā)送包含有數(shù)據(jù)的寫命令,屬于不同路EC通道的寫命令會相互交錯地進入命令隊列中等待,然后,各路EC通道的寫命令中的寫數(shù)據(jù)被移交(還包括地址類型的轉(zhuǎn)換等各種處理、但由于與本文無關(guān)因而在說明時均予以省略)至寫緩存內(nèi),以使隨寫命令離散分布的各路EC通道的數(shù)據(jù)在寫緩存中被整合為相對集中分布的狀態(tài);當(dāng)寫緩存的刷新時刻到來時,寫緩存中屬于每一路EC通道的數(shù)據(jù)均已積累至一定的數(shù)量,此時再將已積累至一定數(shù)量的屬于各路EC通道的數(shù)據(jù)(圖3中以方塊表示寫數(shù)據(jù))分別刷新至RAID5的對應(yīng)LUN 中,就能夠提高對應(yīng)LUN的一個條帶的一次寫操作可寫入的數(shù)據(jù)量,有效地避免RAID5的小寫情況發(fā)生。然而,隨著視頻監(jiān)控的不斷發(fā)展,用于監(jiān)控的EC通道的路數(shù)也在不斷增加,因而使得容量有限的寫緩存難以同時為多路EC通道提供足夠的空間實現(xiàn)數(shù)據(jù)積累。從而,每當(dāng)刷新時刻到來時,多數(shù)EC通道在寫緩存中所積累的數(shù)據(jù)量都不足以避免小寫。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種緩存調(diào)度方法、以及一種緩存調(diào)度裝置,能夠減少 RAID5的小寫情況的發(fā)生。本發(fā)明提供的一種緩存調(diào)度方法,該緩存調(diào)度方法應(yīng)用于包含有存儲控制器、 RAID5、以及寫緩存的存儲設(shè)備,所述存儲控制器的命令隊列中存放的包含有數(shù)據(jù)的寫命令來自各數(shù)據(jù)通道,所述寫緩存中存放的數(shù)據(jù)從所述命令隊列中移交而來、并等待刷新至 RAID5的屬于對應(yīng)數(shù)據(jù)通道的條帶,該緩存調(diào)度方法包括aO、在每次刷新時刻到來時,判斷分別屬于各數(shù)據(jù)通道的條帶在所述寫緩存中的
數(shù)據(jù)量;al、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量大于第一閾值時,允許對該條帶執(zhí)行所述刷新;其中,第一閾值大于等于1/2個條帶且小于1個條帶;a2、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量小于第二閾值時,禁止對該條帶執(zhí)行所述刷新;其中,第二閾值大于0且小于1/2個條帶;a3、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量處于第一閾值與第二閾值之間的區(qū)間內(nèi)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該數(shù)據(jù)通道的當(dāng)前條帶執(zhí)行所述刷新、如果當(dāng)前的刷新時刻是由于所述寫緩存達到上水位線而被觸發(fā)則允許對該數(shù)據(jù)通道的當(dāng)前條帶執(zhí)行所述刷新。該緩存調(diào)度方法進一步包括b0、在步驟aO判斷出的數(shù)據(jù)量大于第一閾值的條帶在所有條帶中所占的比例小于預(yù)定值時,分別針對各數(shù)據(jù)通道的條帶觸發(fā)執(zhí)行步驟bl ;bl、判斷當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與所述寫緩存中的數(shù)據(jù)的總量是否大于第三閾值;其中,第三閾值大于等于1/2個條帶且小于1個條帶、第
三閾值小于等于第一閾值;b2、在步驟bl判斷出當(dāng)前條帶的所述總量大于第三閾值時,調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新;b3、在步驟bl判斷出當(dāng)前條帶的所述總量未大于第三閾值時,如果所述命令隊列當(dāng)前已滿時,則調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新。每一條帶所屬的數(shù)據(jù)通道分別對應(yīng)RAID5中的一個LUN,每個LUN的地址可被循環(huán)使用;當(dāng)所述命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令時,步驟1^2和步驟b3針對對應(yīng)的當(dāng)前條帶所調(diào)取的數(shù)據(jù)僅限于寫地址為該LUN的尾地址的寫命令所包含的數(shù)據(jù)。該緩存調(diào)度方法進一步在所述比例小于預(yù)定值時,禁止所述命令隊列中的寫命令所包含的數(shù)據(jù)向所述寫緩存移交。該緩存調(diào)度方法進一步包括CO、監(jiān)測各數(shù)據(jù)通道是否有丟包信息;Cl、在步驟cO監(jiān)測到有數(shù)據(jù)通道的丟包信息時,判斷該數(shù)據(jù)通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致;c2、在步驟Cl判斷出該數(shù)據(jù)通道丟包不是由于網(wǎng)絡(luò)發(fā)生擁塞所致時,針對屬于該數(shù)據(jù)通道的條帶觸發(fā)步驟bl。本發(fā)明提供的一種緩存調(diào)度裝置,該緩存調(diào)度裝置應(yīng)用于包含有存儲控制器、 RAID5、以及寫緩存的存儲設(shè)備,所述存儲控制器的命令隊列中存放的包含有數(shù)據(jù)的寫命令來自各數(shù)據(jù)通道,所述寫緩存中存放的數(shù)據(jù)從所述命令隊列中移交而來、并等待刷新至 RAID5的屬于對應(yīng)數(shù)據(jù)通道的條帶,該緩存調(diào)度裝置包括刷新控制判決模塊,用于在每次刷新時刻到來時,判斷分別屬于各數(shù)據(jù)通道的條帶在所述寫緩存中的數(shù)據(jù)量;刷新控制執(zhí)行模塊,用于在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量大于第一閾值時,允許對該條帶執(zhí)行所述刷新;在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量小于第二閾值時,禁止對該條帶執(zhí)行所述刷新;在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量處于第一閾值與第二閾值之間的區(qū)間內(nèi)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該條帶執(zhí)行所述刷新、如果當(dāng)前的刷新時刻是由于所述寫緩存達到上水位線而被觸發(fā)則允許對該條帶執(zhí)行所述刷新;其中, 第一閾值大于等于1/2個條帶且小于1個條帶,第二閾值大于0且小于1/2個條帶。該緩存調(diào)度裝置進一步包括隊列交互觸發(fā)模塊,用于在刷新控制判決模塊判斷出的數(shù)據(jù)量大于第一閾值的條帶在所有條帶中所占的比例小于預(yù)定值時,分別針對各數(shù)據(jù)通道的條帶觸發(fā)隊列交互判決模塊;隊列交互判決模塊,用于判斷當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與所述寫緩存中的數(shù)據(jù)的總量是否大于第三閾值;其中,第三閾值大于等于1/2個條帶且小于1個條帶、第三閾值小于等于第一閾值;隊列交互執(zhí)行模塊,用于在隊列交互判決模塊判斷出當(dāng)前條帶的所述總量大于第三閾值時,調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新;在隊列交互判決模塊判斷出當(dāng)前條帶的所述總量未大于第三閾值時,如果所述命令隊列當(dāng)前已滿時,則調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新。每一條帶所屬的數(shù)據(jù)通道分別對應(yīng)RAID5中的一個LUN,每一 LUN的地址可被循環(huán)使用;當(dāng)所述命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令時,隊列交互執(zhí)行模塊針對對應(yīng)的當(dāng)前條帶所調(diào)取的數(shù)據(jù)僅限于寫地址為該LUN的尾地址的寫命令所包含的數(shù)據(jù)。隊列交互觸發(fā)模塊進一步在所述比例小于預(yù)定值時禁止所述命令隊列中的寫命令所包含的數(shù)據(jù)向所述寫緩存移交。該緩存調(diào)度裝置進一步包括通道丟包監(jiān)測模塊,用于監(jiān)測各數(shù)據(jù)通道是否有丟包信息;丟包處理判決模塊,用于在通道丟包監(jiān)測模塊監(jiān)測到有數(shù)據(jù)通道的丟包信息時, 判斷該數(shù)據(jù)通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致;丟包處理執(zhí)行模塊,用于在丟包處理判決模塊判斷出該數(shù)據(jù)通道丟包不是由于網(wǎng)絡(luò)發(fā)生擁塞所致時,針對屬于該數(shù)據(jù)通道的條帶觸發(fā)隊列交互判決模塊。由上述技術(shù)方案可見,本發(fā)明在每次刷新時刻到時,只允許對較大數(shù)據(jù)量的條帶執(zhí)行刷新、并禁止對小數(shù)據(jù)量的條帶執(zhí)行刷新。由于寫緩存在每次較大數(shù)據(jù)量的一部分條帶的刷新后,能夠立即為小數(shù)據(jù)量的另一部分條帶提供數(shù)據(jù)積累的空閑空間,因此,小數(shù)據(jù)量的另一部條帶能夠在后續(xù)刷新時刻到來之前盡快地積累至大數(shù)量、并被刷新,如此反復(fù), 即可實現(xiàn)各條帶交替地使用有限的寫緩存積累數(shù)據(jù),并以此來避免小數(shù)據(jù)量刷新所導(dǎo)致的小寫情況。更優(yōu)地,當(dāng)條帶數(shù)量過多(例如實現(xiàn)錄像存儲的EC數(shù)量突增)而導(dǎo)致各條帶的數(shù)據(jù)均無法達到可被刷新的數(shù)據(jù)量而滯留在寫緩存內(nèi)時,本發(fā)明可以從命令隊列中調(diào)取尚未移交至寫緩存的數(shù)據(jù)、并使調(diào)取的數(shù)據(jù)被提前與寫緩存中屬于同一條帶的數(shù)據(jù)合并下刷, 即,利用從命令隊列中調(diào)取的數(shù)據(jù)來補充寫緩存中的條帶數(shù)據(jù)量、并以補充后的數(shù)據(jù)量執(zhí)行刷新,從而,能夠在避免小數(shù)據(jù)量刷新的同時盡快清空寫緩存中被滯留數(shù)據(jù)所占用的空間。進一步地,當(dāng)出現(xiàn)丟包的情況時,只要丟包不是由于網(wǎng)絡(luò)擁塞所導(dǎo)致,即表示丟包是由于存儲設(shè)備的性能不足所致,對此,可以有針對性地利用命令隊列的數(shù)據(jù)補充來加快對相應(yīng)條帶的刷新。
圖1為現(xiàn)有技術(shù)中采用IP SAN技術(shù)實現(xiàn)數(shù)據(jù)存儲的視頻監(jiān)控系統(tǒng)的一種典型組網(wǎng)方式的示意圖;圖2為現(xiàn)有技術(shù)中的一種IP SAN存儲設(shè)備的數(shù)據(jù)存儲過程的示意圖;圖3為現(xiàn)有技術(shù)中設(shè)置有寫緩存的另一種IP SAN存儲設(shè)備的數(shù)據(jù)存儲過程的示意圖;圖4為本發(fā)明實施例中緩存調(diào)度方法所采用的刷新控制過程的一優(yōu)選流程示意圖;圖5為本發(fā)明實施例中緩存調(diào)度方法所采用的隊列交互過程的一優(yōu)選流程示意圖;圖6為本發(fā)明實施例中緩存調(diào)度方法所采用的丟包處理過程的一優(yōu)選流程示意圖;圖7a至圖7c為本發(fā)明實施例中緩存調(diào)度裝置的優(yōu)選結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。對于寫緩存的容量> EC通道的路數(shù)X條帶大小的情況,采用現(xiàn)有方式即可避免小寫情況的發(fā)生,因此,本實施例主要還是針對寫緩存(由于本實施例主要應(yīng)用于IP SAN 存儲設(shè)備,因而本實施例中所提及的“寫緩存”均是指IP SAN存儲設(shè)備中的寫緩存)的容量不足以為多路EC通道提供足夠空間的情況,即寫緩存的容量< EC通道的路數(shù)X條帶大小。其中,對于只包含一個RAID5的IP SAN存儲設(shè)備來說,所有路EC通道對應(yīng)的LUN 均屬于同一個RAID5,相應(yīng)地,各路EC通道的條帶大小相同。而對于包含多于一個RAID5 的IP SAN存儲設(shè)備來說,各路EC通道對應(yīng)的LUN可能分屬于不同RAID5。這樣,由于不同 RAID5的配置可能會不同,因而對應(yīng)LUN分屬于不同RAID5的各路EC通道的條帶大小也就有可能會不同,此時,寫緩存的容量<EC通道的路數(shù)X條帶大小可以表示為寫緩存的容量 < EC通道的路數(shù)X最大的條帶大小。為了在寫緩存的容量不足以為多路EC通道提供足夠空間的情況下減少小寫情況的發(fā)生,本實施例要通過對刷新的控制來盡可能避免的是小數(shù)據(jù)量的刷新。為此,本實施例在每次刷新時刻到時,需要先判斷各路EC通道的條帶在寫緩存中的數(shù)據(jù)量是否足夠避免小寫,只有較大數(shù)據(jù)量的條帶才允許被執(zhí)行刷新、而小數(shù)據(jù)量的條帶則禁止被執(zhí)行刷新,而不是像現(xiàn)有技術(shù)那樣即便條帶在寫緩存中的數(shù)據(jù)量很小時也仍然刷新。由于寫緩存在每次較大數(shù)據(jù)量的一部分條帶的刷新后,能夠立即為小數(shù)據(jù)量的另一部分條帶提供數(shù)據(jù)積累的空閑空間,因此,小數(shù)據(jù)量的另一部條帶能夠在后續(xù)刷新時刻到來之前盡快地積累至大數(shù)量、并被刷新。如此反復(fù)地執(zhí)行一部分條帶的刷新、另一部分條帶的積累,即可實現(xiàn)各條帶交替地使用有限的寫緩存積累數(shù)據(jù),并以此來避免小數(shù)據(jù)量刷新所導(dǎo)致的小寫情況。圖4為本發(fā)明實施例中緩存調(diào)度方法所采用的刷新控制過程的一優(yōu)選流程示意圖。如圖4所示,本實施例中的緩存調(diào)度方法所采用的刷新控制過程在每次刷新時刻到來時,可以針對每一 EC的條帶執(zhí)行如下的步驟步驟401,判斷該條帶在寫緩存中的數(shù)據(jù)量是否大于A,如果是則執(zhí)行步驟402,否則執(zhí)行步驟403。其中,A的取值大于等于1/2個條帶且小于1個條帶,即A大于等于1/2 個條帶、且小于1個條帶,例如,A可以取2/3個條帶。步驟402,對該條帶的刷新不屬于小寫,因此允許針對該條帶執(zhí)行刷新,然后結(jié)束本次流程、并等待下一次刷新時刻的到來。步驟403,判斷該條帶在寫緩存中的數(shù)據(jù)量是否小于C,如果是則執(zhí)行步驟404,否則執(zhí)行步驟405。其中,C的取值大于0且小于1/2個條帶,即A大于等于1/2個條帶、且小于1個條帶,例如,C可以取1/3個條帶。
步驟404,對該條帶的刷新屬于小寫,因此禁止針對該條帶執(zhí)行刷新,然后結(jié)束本次流程、并等待下一次刷新時刻的到來。步驟405,判斷當(dāng)前刷新時刻是否是由于寫緩存達到上水位線所致,如果是則執(zhí)行步驟406,否則(例如當(dāng)前的刷新時刻是由于定時間隔所致)執(zhí)行步驟407。步驟406,即便該條帶當(dāng)前可刷新的數(shù)據(jù)量較少,但寫緩存中已無空閑空間可使該條帶的數(shù)據(jù)量繼續(xù)積累,因而允許針對該條帶執(zhí)行刷新,然后結(jié)束本次流程、并等待下一次刷新時刻的到來。步驟407,寫緩存中的空閑空間還足以使該條帶的數(shù)據(jù)量繼續(xù)積累,因而暫時禁止對該條帶執(zhí)行刷新,然后結(jié)束本次流程、并等待下一次刷新時刻的到來。至此,針對一個條帶的一種優(yōu)選刷新控制流程結(jié)束。上述流程僅僅是一種優(yōu)選的實現(xiàn)方式,實際應(yīng)用中,上述涉及判斷的各步驟之間的先后順序可以任意調(diào)整、多個條帶也可以共用一個流程來實現(xiàn)上述的若干判斷,只要滿足如下的刷新控制原理即可任意調(diào)整刷新判斷流程的具體實現(xiàn)aO、在每次刷新時刻到來(可依據(jù)監(jiān)測刷新時刻的觸發(fā)條件來識別、例如定時間隔到達或?qū)懢彺孢_到上水位線)時,判斷分別屬于各路EC通道的條帶在寫緩存中的數(shù)據(jù)量;al、在aO判斷出有條帶在寫緩存中的數(shù)據(jù)量達到A時,允許對該條帶執(zhí)行刷新;a2、在aO判斷出有條帶在寫緩存中的數(shù)據(jù)量小于C時,禁止對該條帶執(zhí)行刷新;a3、在aO判斷出有條帶在寫緩存中的數(shù)據(jù)量處于A與C之間的區(qū)間內(nèi)(即小于等于A、且大于等于C)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該條帶執(zhí)行刷新、以使該條帶在寫緩存中的數(shù)據(jù)量可以繼續(xù)積累,而如果當(dāng)前的刷新時刻是由于寫緩存達到上水位線而被觸發(fā)則允許對該條帶執(zhí)行刷新、以避免由于寫緩存沒有空閑空間而導(dǎo)致丟包??梢?,利用刷新控制能夠在一定程度上避免小數(shù)據(jù)量刷新所導(dǎo)致的小寫情況。但是,當(dāng)條帶數(shù)量過多時,寫緩存中為各條帶提供的用于數(shù)據(jù)積累的空間不足使所有條帶均能夠積累至允許被執(zhí)行刷新的數(shù)據(jù)量,從而造成寫緩存中的大量條帶備禁止執(zhí)行刷新,進而出現(xiàn)大量條帶的數(shù)據(jù)量在寫緩存中滯留,此時,刷新控制的效果就會受到影響。因此,為了在條帶數(shù)量過多時能夠及時清除寫緩存中滯留的數(shù)據(jù),本實施例可以通過與命令隊列的交互,適當(dāng)?shù)貜拿铌犃兄姓{(diào)取尚未移交至寫緩存的數(shù)據(jù)、并使調(diào)取的數(shù)據(jù)被提前與寫緩存中屬于同一條帶的數(shù)據(jù)合并下刷,即,利用從命令隊列中調(diào)取的數(shù)據(jù)來補充寫緩存中的條帶數(shù)據(jù)量、并以補充后的數(shù)據(jù)量執(zhí)行刷新,從而,能夠在避免小數(shù)據(jù)量刷新的同時清空寫緩存中被滯留數(shù)據(jù)所占用的空間,以使各條帶能夠基于前述的刷新控制下交替地在寫緩存中積累數(shù)據(jù)。具體說,當(dāng)寫緩存中出現(xiàn)大量數(shù)據(jù)滯留時,多數(shù)條帶在寫緩存中的數(shù)據(jù)顯然無法被刷新。即,此時在寫緩存中的數(shù)據(jù)量大于A的條帶在所有條帶中所占的比例會很小,例如 1 5、1 10。因此,本實施例可以在每次刷新時刻之后,統(tǒng)計在該次刷新時刻執(zhí)行刷新控制時判斷出的數(shù)據(jù)量大于A的條帶在所有條帶中所占的比例,當(dāng)統(tǒng)計的比例小于預(yù)定值時再分別針對各路EC通道(即LUN)的條帶觸發(fā)隊列交互過程。圖5為本發(fā)明實施例中緩存調(diào)度方法所采用的隊列交互過程的一優(yōu)選流程示意圖。如圖5所示,本實施例中的緩存調(diào)度方法所采用的隊列交互過程,在統(tǒng)計的比例小于預(yù)定值時分別針對每一 EC通道(即LUN)的條帶觸發(fā)如下流程從步驟501開始執(zhí)行步驟501,判斷當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與當(dāng)前條帶在寫緩存中的數(shù)據(jù)的總量是否大于B,如果是則執(zhí)行步驟502,否則執(zhí)行步驟503。其中,B的取值大于等于1/2個條帶且小于1個條帶,即B大于等于1/2個條帶、 且小于1個條帶。而且,B與A同樣是作為允許刷新的數(shù)據(jù)量標(biāo)準。雖然B與A的取值范圍相同、即B小于等于A,但由于本流程被觸發(fā)是由于寫緩存中已發(fā)生數(shù)據(jù)滯留,因此,也可以為了盡快清空寫緩存而設(shè)置B小于A,即,適當(dāng)降低允許刷新的數(shù)據(jù)量標(biāo)準。步驟502,調(diào)取當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新,然后結(jié)束針對當(dāng)前條帶的流程。其中,由于本流程不是在刷新時刻到來時執(zhí)行的,因此,在本流程中所執(zhí)行的刷新不屬于刷新時刻到來時的正常刷新、而是可以看作是一種強制刷新。另需要說明的是,每一路EC通道對應(yīng)的LUN的地址可被循環(huán)使用,即上層應(yīng)用可以對LUN循環(huán)寫入。因此,可能會出現(xiàn)命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令。此時,寫地址為該LUN的尾地址的寫命令中所包含的可能是該 LUN最后一個條帶的結(jié)尾處的數(shù)據(jù),而寫地址為該LUN的首地址的寫命令中所包含的則可能是該LUN第一個條帶的起始處的數(shù)據(jù)。也就是說,雖然多個寫命令包含的數(shù)據(jù)屬于同一 LUN,但卻屬于同一 LUN內(nèi)的不同條帶,因此,本步驟中僅調(diào)取寫地址為對應(yīng)LUN的尾地址的寫命令所包含的數(shù)據(jù),而不調(diào)取同時存在于命令隊列中的寫地址為對應(yīng)LUN的首地址的寫命令包含的數(shù)據(jù)。例如,當(dāng)前條帶命令隊列中的寫命令的寫地址按順為0Xfff00、0Xfff80、 0x00080,0x00100...,本步驟僅調(diào)取寫地址為OxfffOO、Oxfff80兩個寫命令中的數(shù)據(jù)、并與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)一起強制刷新。步驟503,判斷命令隊列當(dāng)前是否已滿,如果是,則執(zhí)行步驟504,否則結(jié)束針對當(dāng)前條帶的流程。在本步驟中,可能存在兩種情況一種情況是,所有EC通道對應(yīng)的LUN在命令隊列中共用唯一的一個隊列,此時,判斷命令隊列當(dāng)前是否已滿就是指這唯一的一個隊列當(dāng)前是否已滿。 另一種情況是,每個EC通道對應(yīng)的LUN在命令隊列中分別有一個獨立的對應(yīng)子隊列,即,存在與LUN數(shù)量(即EC通道路數(shù))相同、且一一對應(yīng)的若干子隊列,此時,判斷命令隊列當(dāng)前是否已滿則是指對應(yīng)的子隊列當(dāng)前是否已滿。步驟504,雖然當(dāng)前條帶在命令隊列和寫緩存中的數(shù)據(jù)總量未能大于B,但由于命令隊列此時已滿,因而仍調(diào)取當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新,然后結(jié)束針對當(dāng)前條帶的流程。本步驟與步驟502的具體實現(xiàn)方式可以相同,即,同樣在當(dāng)前條帶在命令隊列中同時存在寫地址分別為對應(yīng)的LUN的尾地址和首地址的多條寫命令時,僅調(diào)取寫地址為對應(yīng)的LUN的尾地址的寫命令所包含的數(shù)據(jù)。至此,針對當(dāng)前條帶的隊列交互流程結(jié)束。針對任意條帶的上述流程均是在刷新時刻之后判斷出統(tǒng)計的比例小于預(yù)定值時被觸發(fā)執(zhí)行的,因此,隊列交互過程可以看作是在刷新控制過程間歇時的一種輔助過程。
而且,針對各路EC通道(即LUN)的條帶所分別執(zhí)行的上述如圖5所示流程,可以是同時執(zhí)行的,也可以是順序執(zhí)行的。在前一種同時執(zhí)行的情況下,所需要的開銷會比較大,因此,優(yōu)選地選用順序執(zhí)行的后一種情況。基于如圖5所示的流程可見,經(jīng)過隊列交互流程的處理后,寫緩存中能夠立即出現(xiàn)大量可供數(shù)據(jù)積累的空閑空間。當(dāng)隊列交互流程處理后的空閑空間能夠使寫緩存中出現(xiàn)足夠比例的條帶數(shù)據(jù)量大于A時,即可停止隊列交互、并等待刷新時刻到來時執(zhí)行刷新控制;即便針對若干條帶執(zhí)行了隊列交互流程處理后的空閑空間,仍不足以在下一次刷新時刻到來時使寫緩存中出現(xiàn)足夠比例的條帶數(shù)據(jù)量大于A,也可以在下一次刷新時刻之后繼續(xù)執(zhí)行隊列交互流程。另外,在針對任意EC通道對應(yīng)的LUN的條帶執(zhí)行上述流程時,均需要在步驟501 判斷當(dāng)前條帶在命令隊列和寫緩存的數(shù)據(jù)總量是否大于B,而該判斷過程主要通過分別查詢命令隊列和寫緩存中的數(shù)據(jù)量、然后求和。因此,較佳地應(yīng)在此過程中禁止命令隊列中的寫命令所包含的數(shù)據(jù)向?qū)懢彺娴恼R平?,以確保步驟501的判斷結(jié)果的準確性。除了以上所述的刷新控制和隊列交互過程之外,本實施例的緩存調(diào)度方法還可以針對發(fā)生丟包的任意EC通道進行高優(yōu)先的緊急處理。圖6為本發(fā)明實施例中緩存調(diào)度方法所采用的丟包處理過程的一優(yōu)選流程示意圖。如圖6所示,本實施例中的緩存調(diào)度方法所采用的丟包處理過程包括如下步驟步驟601,監(jiān)測各EC通道是否有丟包信息,在監(jiān)測到有丟包信息后觸發(fā)步驟601。關(guān)于本步驟中的丟包信息如何產(chǎn)生、如何傳遞、以及如何監(jiān)測,均為本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn),因此本文不再予以贅述。步驟602,EC通道的丟包通常是由兩種情況導(dǎo)致,一種則是由于網(wǎng)絡(luò)擁塞而導(dǎo)致數(shù)據(jù)無法到達IP SAN存儲設(shè)備,另一種是IP SAN存儲設(shè)備由于未能及時完成數(shù)據(jù)刷新而無法返回成功響應(yīng),顯然對于前一種情況無法由IP SAN存儲設(shè)備解決、應(yīng)當(dāng)予以排除,因此,判斷該EC通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致,如果是則結(jié)束本流程,否則針對該 EC通道對應(yīng)的LUN的條帶觸發(fā)如圖5所示流程中的步驟501。本步驟中,判斷丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致的具體實現(xiàn)方式可以多種多樣。而本實施例還提供了一種較佳方式,該方式可以利用數(shù)據(jù)報文中的擁塞標(biāo)記來判斷。具體說在網(wǎng)絡(luò)發(fā)生擁塞時,網(wǎng)絡(luò)中的交換設(shè)備會在承載寫命令的數(shù)據(jù)報文中設(shè)置擁塞標(biāo)記, 因此,本步驟中可以依據(jù)來自任意EC通道的承載寫命令的數(shù)據(jù)報文中是否被網(wǎng)絡(luò)中的交換設(shè)備設(shè)置有擁塞標(biāo)記,判斷該EC通道的丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞而網(wǎng)絡(luò)發(fā)生擁塞所致。至此,一次丟包處理過程的流程結(jié)束。實際應(yīng)用中,步驟601可以是實時執(zhí)行的步驟,無論步驟602是否被觸發(fā)、也無論步驟602的判斷結(jié)果如何,步驟601均可以保持不間斷地執(zhí)行。以上,是對本實施例中的緩存調(diào)度方法的詳細說明。雖然以上說明均是結(jié)合了 IP SAN存儲設(shè)備及其應(yīng)用的視頻監(jiān)控場景,但除了 IP SAN存儲設(shè)備及其應(yīng)用的視頻監(jiān)控場景之外,本實施例中的緩存調(diào)度方法同樣還能夠適用于其它包含有RAID5的存儲設(shè)備,或者, 與視頻監(jiān)控同樣具有多路與EC通道類似的其它數(shù)據(jù)通道、不同路數(shù)據(jù)通道的數(shù)據(jù)分區(qū)域存儲、以及每路數(shù)據(jù)通道的數(shù)據(jù)連續(xù)性特點的其他應(yīng)用場景。
實際應(yīng)用中,該緩存調(diào)度方法可以利用計算機程序予以實現(xiàn),因此,本實施例還對應(yīng)該緩存調(diào)度方法提供了相應(yīng)的緩存調(diào)度裝置。本實施例中提供的一種緩存調(diào)度裝置如圖7a所示,該裝置主要可應(yīng)用于包含有存儲控制器、RAID5、以及寫緩存的存儲設(shè)備(例如IP SAN存儲設(shè)備),存儲控制器內(nèi)的命令隊列中的寫命令所包含的數(shù)據(jù)先被移交至寫緩存中緩存后、再從所述寫緩存被刷新至 RAID5中。參見圖7a,該裝置包括刷新控制判決模塊711,用于在每次刷新時刻到來(可依據(jù)監(jiān)測刷新時刻的觸發(fā)條件來識別、例如定時間隔到達或?qū)懢彺孢_到上水位線)時,判斷分別屬于各數(shù)據(jù)通道的條帶在寫緩存中的數(shù)據(jù)量。刷新控制執(zhí)行模塊712,用于在刷新控制判決模塊711判斷出有條帶在寫緩存中的數(shù)據(jù)量大于A時,允許對該條帶執(zhí)行刷新;在刷新控制判決模塊711判斷出有條帶在寫緩存中的數(shù)據(jù)量小于C時,禁止對該條帶執(zhí)行刷新;在刷新控制判決模塊711判斷出有條帶在寫緩存中的數(shù)據(jù)量處于A與C之間的區(qū)間內(nèi)(即小于等于A、且大于等于C)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該條帶執(zhí)行刷新、如果當(dāng)前的刷新時刻是由于寫緩存達到上水位線而被觸發(fā)則允許對該條帶執(zhí)行刷新。實際應(yīng)用中,刷新控制執(zhí)行模塊712可依據(jù)監(jiān)測刷新時刻的觸發(fā)條件來來判斷當(dāng)前的刷新時刻到來的原因,或者由刷新控制判決模塊711監(jiān)測刷新時刻的觸發(fā)條件并通告刷新控制執(zhí)行模塊712。其中,A和C 的取值如方法部分所述??梢?,如圖7a所示的緩存調(diào)度裝置可利用刷新控制來僅允許大數(shù)據(jù)量的刷新、而限制小數(shù)據(jù)量的刷新,并使得寫緩存在每次較大數(shù)據(jù)量的一部分條帶的刷新后能夠立即為小數(shù)據(jù)量的另一部分條帶提供數(shù)據(jù)積累的空閑空間,因此,小數(shù)據(jù)量的另一部條帶能夠在后續(xù)刷新時刻到來之前盡快地積累至允許被刷新的大數(shù)量。如此反復(fù)地執(zhí)行一部分條帶的刷新、另一部分條帶的積累,即可實現(xiàn)各條帶交替地使用有限的寫緩存積累數(shù)據(jù),并以此來避免小數(shù)據(jù)量刷新所導(dǎo)致的小寫情況。但是,在條帶數(shù)量過多而導(dǎo)致寫緩存空間不足以被所有條帶交替地積累數(shù)據(jù)時, 容易出現(xiàn)寫緩存中的大量數(shù)據(jù)滯留,此時,如圖7a所示緩存調(diào)度裝置的刷新控制效果就會受到影響。為此,本實施例還提供了如圖7b所示的另一種緩存調(diào)度裝置。如圖7b所示的另一種緩存調(diào)度裝置是基于如圖7a所示裝置的基礎(chǔ)上,進一步增加了如下結(jié)構(gòu)隊列交互觸發(fā)模塊721,用于統(tǒng)計刷新控制判決模塊711每次判斷出的在寫緩存中的數(shù)據(jù)量大于A的條帶在所有條帶中所占的比例,并在該比例小于預(yù)定值(例如1 5、 1 10等)時分別針對各數(shù)據(jù)通道的條帶觸發(fā)隊列交互判決模塊722。隊列交互判決模塊722,用于判斷當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與寫緩存中的數(shù)據(jù)的總量是否大于B。實際應(yīng)用中,為了確保隊列交互判決模塊722的判斷結(jié)果的準確性,較佳地應(yīng)由隊列交互觸發(fā)模塊721在其統(tǒng)計的比例小于預(yù)定值時禁止命令隊列中的寫命令所包含的數(shù)據(jù)向?qū)懢彺嬲R平弧j犃薪换?zhí)行模塊723,用于在隊列交互判決模塊722判斷出當(dāng)前條帶的所述總量大于B時,調(diào)取當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新;在隊列交互判決模塊722判斷出當(dāng)前條帶的所述總量未大于B時,如果命令隊列當(dāng)前已滿時,則調(diào)取當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新,如果命令隊列當(dāng)前未滿則不做處理。其中,B的取值如方法部分所述。S卩,在當(dāng)前條帶的所述總量未大于B時,隊列交互執(zhí)行模塊723僅在命令隊列當(dāng)前已滿時,調(diào)取當(dāng)前條帶在命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新。其中,隊列交互執(zhí)行模塊723的觸發(fā)不是由于刷新時刻的到來,因此,隊列交互執(zhí)行模塊723所執(zhí)行的刷新不屬于刷新時刻到來時的正常刷新、而是可以看作是一種強制刷新。而且,當(dāng)出現(xiàn)當(dāng)前條帶在命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令時,隊列交互執(zhí)行模塊723所調(diào)取的數(shù)據(jù),僅限于寫地址為對應(yīng)LUN的尾地址的寫命令所包含的數(shù)據(jù)。另外,對于命令隊列當(dāng)前是否已滿的條件存在兩種情況如果所有數(shù)據(jù)通道對應(yīng)的LUN在命令隊列中共用唯一的一個隊列,則判斷命令隊列當(dāng)前是否已滿就是指這唯一的一個隊列當(dāng)前是否已滿;而如果每個數(shù)據(jù)通道對應(yīng)的LUN在命令隊列中分別有一個獨立的對應(yīng)子隊列,則判斷命令隊列當(dāng)前是否已滿則是指對應(yīng)的子隊列當(dāng)前是否已滿。如上可見,如圖7b所示的緩存調(diào)度裝置可以通過隊列交互的處理,使寫緩存中立即出現(xiàn)大量可供數(shù)據(jù)積累的空閑空間。當(dāng)隊列交互處理后的空閑空間能夠使寫緩存中出現(xiàn)足夠比例的條帶數(shù)據(jù)量大于A時,隊列交互觸發(fā)模塊721即可取消對隊列交互判決模塊722 的觸發(fā)、以使隊列交互判決模塊722停止工作,相應(yīng)地,隨著隊列交互判決模塊722停止工作,隊列交互執(zhí)行模塊也就不會再被觸發(fā)并停止工作。實際應(yīng)用中,隊列交互判決模塊722、以及隊列交互執(zhí)行模塊723針對各路數(shù)據(jù)通道(即LUN)的條帶所分別執(zhí)行的處理過程可以是同時執(zhí)行的,也可以是順序執(zhí)行的。在前一種同時執(zhí)行的情況下,需要設(shè)置與數(shù)據(jù)通道數(shù)量相等的多套隊列交互判決模塊722、以及隊列交互執(zhí)行模塊723,此時的開銷會比較大,因此,優(yōu)選地選用順序執(zhí)行的后一種情況,此時只需要一套隊列交互判決模塊722、隊列交互執(zhí)行模塊723。除了以上的如圖7a和圖7b所示的兩種緩存調(diào)度裝置之外,本實施例還提供了又一種如圖7c所示的緩存調(diào)度裝置。如圖7c所示的緩存調(diào)度裝置以如圖7b所示裝置為基礎(chǔ),進一步增加了如下結(jié)構(gòu)通道丟包監(jiān)測模塊741,用于監(jiān)測各數(shù)據(jù)通道是否有丟包信息。丟包處理判決模塊742,用于在通道丟包監(jiān)測模塊741監(jiān)測到有數(shù)據(jù)通道的丟包信息時,判斷該數(shù)據(jù)通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致。實際應(yīng)用中,丟包處理判決模塊742可以依據(jù)來自任意數(shù)據(jù)通道的用于承載寫命令的數(shù)據(jù)報文中是否被網(wǎng)絡(luò)中的交換設(shè)備設(shè)置有擁塞標(biāo)記,判斷出該數(shù)據(jù)通道的丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞而網(wǎng)絡(luò)發(fā)生擁塞所致。丟包處理執(zhí)行模塊743,用于在丟包處理判決模塊742判斷出該數(shù)據(jù)通道丟包不是由于網(wǎng)絡(luò)發(fā)生擁塞所致時,針對該數(shù)據(jù)通道對應(yīng)的LUN的條帶觸發(fā)隊列交互判決模塊 722??梢?,本實施例中如圖7c所示的緩存調(diào)度裝置可以進一步針對發(fā)生丟包的任意數(shù)據(jù)通道進行高優(yōu)先的緊急處理。
14
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種緩存調(diào)度方法,該緩存調(diào)度方法應(yīng)用于包含有存儲控制器、RAID5、以及寫緩存的存儲設(shè)備,所述存儲控制器的命令隊列中存放的包含有數(shù)據(jù)的寫命令來自各數(shù)據(jù)通道, 所述寫緩存中存放的數(shù)據(jù)從所述命令隊列中移交而來、并等待刷新至RAID5的屬于對應(yīng)數(shù)據(jù)通道的條帶,其特征在于,該緩存調(diào)度方法包括aO、在每次刷新時刻到來時,判斷分別屬于各數(shù)據(jù)通道的條帶在所述寫緩存中的數(shù)據(jù)量;al、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量大于第一閾值時,允許對該條帶執(zhí)行所述刷新;其中,第一閾值大于等于1/2個條帶且小于1個條帶;a2、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量小于第二閾值時,禁止對該條帶執(zhí)行所述刷新;其中,第二閾值大于0且小于1/2個條帶;a3、在步驟aO判斷出有條帶在所述寫緩存中的數(shù)據(jù)量處于第一閾值與第二閾值之間的區(qū)間內(nèi)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該數(shù)據(jù)通道的當(dāng)前條帶執(zhí)行所述刷新、如果當(dāng)前的刷新時刻是由于所述寫緩存達到上水位線而被觸發(fā)則允許對該數(shù)據(jù)通道的當(dāng)前條帶執(zhí)行所述刷新。
2.如權(quán)利要求1所述的緩存調(diào)度方法,其特征在于,該緩存調(diào)度方法進一步包括 b0、在步驟aO判斷出的數(shù)據(jù)量大于第一閾值的條帶在所有條帶中所占的比例小于預(yù)定值時,分別針對各數(shù)據(jù)通道的條帶觸發(fā)執(zhí)行步驟bl ;bl、判斷當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與所述寫緩存中的數(shù)據(jù)的總量是否大于第三閾值;其中,第三閾值大于等于1/2個條帶且小于1個條帶、第三閾值小于等于第一閾值;b2、在步驟bl判斷出當(dāng)前條帶的所述總量大于第三閾值時,調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新;b3、在步驟bl判斷出當(dāng)前條帶的所述總量未大于第三閾值時,如果所述命令隊列當(dāng)前已滿時,則調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新。
3.如權(quán)利要求2所述的緩存調(diào)度方法,其特征在于,每一條帶所屬的數(shù)據(jù)通道分別對應(yīng)RAID5中的一個LUN,每個LUN的地址可被循環(huán)使用;當(dāng)所述命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令時,步驟1^2和步驟b3針對對應(yīng)的當(dāng)前條帶所調(diào)取的數(shù)據(jù)僅限于寫地址為該LUN的尾地址的寫命令所包含的數(shù)據(jù)。
4.如權(quán)利要求2或3所述的緩存調(diào)度方法,其特征在于,該緩存調(diào)度方法進一步在所述比例小于預(yù)定值時,禁止所述命令隊列中的寫命令所包含的數(shù)據(jù)向所述寫緩存移交。
5.如權(quán)利要求2或3所述的緩存調(diào)度方法,其特征在于,該緩存調(diào)度方法進一步包括 cO、監(jiān)測各數(shù)據(jù)通道是否有丟包信息;Cl、在步驟cO監(jiān)測到有數(shù)據(jù)通道的丟包信息時,判斷該數(shù)據(jù)通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致;c2、在步驟cl判斷出該數(shù)據(jù)通道丟包不是由于網(wǎng)絡(luò)發(fā)生擁塞所致時,針對屬于該數(shù)據(jù)通道的條帶觸發(fā)步驟bl。
6.一種緩存調(diào)度裝置,該緩存調(diào)度裝置應(yīng)用于包含有存儲控制器、RAID5、以及寫緩存的存儲設(shè)備,所述存儲控制器的命令隊列中存放的包含有數(shù)據(jù)的寫命令來自各數(shù)據(jù)通道, 所述寫緩存中存放的數(shù)據(jù)從所述命令隊列中移交而來、并等待刷新至RAID5的屬于對應(yīng)數(shù)據(jù)通道的條帶,其特征在于,該緩存調(diào)度裝置包括刷新控制判決模塊,用于在每次刷新時刻到來時,判斷分別屬于各數(shù)據(jù)通道的條帶在所述寫緩存中的數(shù)據(jù)量;刷新控制執(zhí)行模塊,用于在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量大于第一閾值時,允許對該條帶執(zhí)行所述刷新;在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量小于第二閾值時,禁止對該條帶執(zhí)行所述刷新;在刷新控制判決模塊判斷出有條帶在所述寫緩存中的數(shù)據(jù)量處于第一閾值與第二閾值之間的區(qū)間內(nèi)時,如果當(dāng)前的刷新時刻是由于定時間隔到達而被觸發(fā)則禁止對該條帶執(zhí)行所述刷新、如果當(dāng)前的刷新時刻是由于所述寫緩存達到上水位線而被觸發(fā)則允許對該條帶執(zhí)行所述刷新;其中,第一閾值大于等于1/2個條帶且小于1個條帶,第二閾值大于0且小于1/2個條帶。
7.如權(quán)利要求6所述的緩存調(diào)度裝置,其特征在于,該緩存調(diào)度裝置進一步包括隊列交互觸發(fā)模塊,用于在刷新控制判決模塊判斷出的數(shù)據(jù)量大于第一閾值的條帶在所有條帶中所占的比例小于預(yù)定值時,分別針對各數(shù)據(jù)通道的條帶觸發(fā)隊列交互判決模塊;隊列交互判決模塊,用于判斷當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)與所述寫緩存中的數(shù)據(jù)的總量是否大于第三閾值;其中,第三閾值大于等于1/2個條帶且小于1個條帶、第三閾值小于等于第一閾值;隊列交互執(zhí)行模塊,用于在隊列交互判決模塊判斷出當(dāng)前條帶的所述總量大于第三閾值時,調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新;在隊列交互判決模塊判斷出當(dāng)前條帶的所述總量未大于第三閾值時,如果所述命令隊列當(dāng)前已滿時,則調(diào)取當(dāng)前條帶在所述命令隊列中對應(yīng)的寫命令所包含的數(shù)據(jù)、并將所調(diào)取的數(shù)據(jù)與所述寫緩存中屬于當(dāng)前條帶的數(shù)據(jù)同時刷新。
8.如權(quán)利要求7所述的緩存調(diào)度裝置,其特征在于,每一條帶所屬的數(shù)據(jù)通道分別對應(yīng)RAID5中的一個LUN,每一 LUN的地址可被循環(huán)使用;當(dāng)所述命令隊列中同時存在寫地址分別為同一 LUN的尾地址和首地址的多條寫命令時,隊列交互執(zhí)行模塊針對對應(yīng)的當(dāng)前條帶所調(diào)取的數(shù)據(jù)僅限于寫地址為該LUN的尾地址的寫命令所包含的數(shù)據(jù)。
9.如權(quán)利要求7或8所述的緩存調(diào)度裝置,其特征在于,隊列交互觸發(fā)模塊進一步在所述比例小于預(yù)定值時禁止所述命令隊列中的寫命令所包含的數(shù)據(jù)向所述寫緩存移交。
10.如權(quán)利要求7或8所述的緩存調(diào)度裝置,其特征在于,該緩存調(diào)度裝置進一步包括通道丟包監(jiān)測模塊,用于監(jiān)測各數(shù)據(jù)通道是否有丟包信息;丟包處理判決模塊,用于在通道丟包監(jiān)測模塊監(jiān)測到有數(shù)據(jù)通道的丟包信息時,判斷該數(shù)據(jù)通道丟包是否是由于網(wǎng)絡(luò)發(fā)生擁塞所致;丟包處理執(zhí)行模塊,用于在丟包處理判決模塊判斷出該數(shù)據(jù)通道丟包不是由于網(wǎng)絡(luò)發(fā)生擁塞所致時,針對屬于該數(shù)據(jù)通道的條帶觸發(fā)隊列交互判決模塊。
全文摘要
本發(fā)明公開了一種緩存調(diào)度方法和裝置。本發(fā)明在每次刷新時刻到時,只允許對較大數(shù)據(jù)量的條帶執(zhí)行刷新、并禁止對小數(shù)據(jù)量的條帶執(zhí)行刷新,以此來避免小數(shù)據(jù)量刷新所導(dǎo)致的小寫情況。更優(yōu)地,當(dāng)條帶數(shù)量過多而導(dǎo)致各條帶的數(shù)據(jù)均無法達到可被刷新的數(shù)據(jù)量而滯留在寫緩存內(nèi)時,本發(fā)明可以利用從命令隊列中調(diào)取的數(shù)據(jù)來補充寫緩存中的條帶數(shù)據(jù)量、并以補充后的數(shù)據(jù)量執(zhí)行刷新,從而,能夠在避免小數(shù)據(jù)量刷新的同時盡快清空寫緩存中被滯留數(shù)據(jù)所占用的空間。進一步地,當(dāng)出現(xiàn)丟包的情況時,本發(fā)明可以有針對性地利用命令隊列的數(shù)據(jù)補充來加快對相應(yīng)條帶的刷新。
文檔編號H04N5/76GK102223510SQ20111014983
公開日2011年10月19日 申請日期2011年6月3日 優(yōu)先權(quán)日2011年6月3日
發(fā)明者周迪, 陳乾業(yè) 申請人:杭州華三通信技術(shù)有限公司