詹 玲,吳 畏,王 方,朱承浩,萬繼光
1(文華學院 信息學部計算機系,武漢 430074)
2(中國艦船研究設計中心,武漢 430064)
3(華中科技大學 武漢光電國家實驗室,武漢 430074)
在信息產業高速發展的當今,數據存儲業面臨著巨大挑戰.面對每天爆炸式增長的海量數據,傳統的本地存儲系統已經成為影響信息技術進一步發展的重要因素.尤其是在數據存儲系統中大量應用的機械磁盤,其讀寫性能增長速度遠遠落后于處理器、內存以及網絡帶寬的增長速度.在過去十年中,CPU的性能提升了8-10倍,DRAM速度提升7-9倍,網絡速度提升100倍,總線速度增長20倍,而磁盤速度卻僅僅增長了1.2倍[1].磁盤已經成為存儲系統的性能瓶頸,制約了信息系統的快速發展.
為了提高存儲系統的性能,基于NAND閃存的SSD被廣泛的應用到存儲系統中.SSD具有讀取速度快、延時小、能耗低、可靠性高等特點,在企業數據中心中,使用包含有SSD的服務器正變得越來越普遍.
SSD有著很多的優點,但是由于其價格較高,且空間容量相對較小,一直無法完全替換磁盤存儲設備.所以為了利用SSD高效I/O的特性,一般采用SSD與磁盤相結合使用的方法,利用SSD作為磁盤的緩存,來提升系統的性能.
由于SSD的物理特性,在SSD中無法直接完成覆蓋寫操作.只能先擦后寫、異地更新,即將原來的舊數據通過修改映射,移入SSD保留空間并置為無效,再在新的位置寫入新的數據,保留區的數據在垃圾回收時被擦除.這一特性導致了SSD的寫性能要差于讀性能.本文將利用SSD這個特性來對RAID系統進行性能優化.
1988年,美國加州大學伯克利分校的Patterson等人[2]提出了RAID概念,RAID 的定義為"價格便宜且具有容錯能力的磁盤陣列"(Redundant Arrays of Inexpensive Disks).RAID能提高存儲系統的性能和可靠性主要是利用I/O的并行處理和冗余技術,在真實的應用環境中,一般都使用冗余磁盤陣列來提高系統的可靠性.RAID5/6是目前在存儲系統中應用最為廣泛的RAID級別.
RAID雖然應用廣泛,但其在小寫過程中性能較差.尤其在RAID5/6中,小寫性能問題更加突出.針對小寫過程,RAID采用的是讀-修改-寫(Read-Modify-Write, RMW)模式,此過程需要讀取原來的數據塊和該數據塊的校驗值,與新的數據進行XOR操作后,將計算結果再寫入RAID中相應位置,頻繁磁盤I/O導致系統寫性能的急劇下降.因此,RAID5/6等校驗陣列的小寫性能優化,一直是學術界和企業界研究的重點.
本文將重點研究SSD在RAID5/6存儲系統中做緩存時,如何采用一些新的技術來提高系統的性能.特別是專門針對SSD的物理特性,提出了一些用于RAID5/6儲系統小寫性能優化的方法.
針對RAID5/6等校驗陣列的小寫性能優化,學術界和企業界提出過很多優化小寫性能的方法.
AutoRAID[3]是HP公司提出的一種針對在線事務處理OLTP的高性能和高可靠的磁盤陣列系統.AutoRAID根據RAID不同級別的優缺點,在磁盤陣列控制器集中實現了兩級存儲,RAID1和RAID5;在上層存儲中采用RAID1來保存熱點數據,為訪問頻繁的數據提供最佳的讀寫性能和鏡像容錯功能;在下層存儲中使用RAID5來保存冷數據,為那些不被經常訪問的數據提供較大的存儲空間,并且具有比較高的存儲的可靠性和空間利用率.
另一種提高校驗磁盤陣列小寫性能的方法是緩存技術.在利用SSD緩存來優化RAID小寫性能方面,Eunjae Lee[4]設計了一種名為LeavO的SSD緩存來解決RAID小寫問題.LeavO在SSD緩存中保存寫數據的最新版本和舊版本,這樣在將寫數據寫回到RAID中時,就可以從SSD緩存中讀取最新數據和舊數據來計算新校驗值,從而避免了從磁盤中讀舊數據帶來的磁盤操作,提高RAID小寫性能.
由于SSD的先擦除再寫的特性,所以必需有一個好的垃圾回收算法對這些無效塊進行擦除操作.Chiang[5]等人提出一種名為Cost Age Time(CAT)的SSD垃圾回收算法.該算法通過考慮SSD中無效頁的比例來減少開銷.同時,CAT算法還設計考慮了損耗均衡.算法根據公式(1)來計算塊的權值,對權值小的塊進行回收:
(1)
其中,u表示SSD塊中有效頁所占的比例,age是自從最近一次更新到當前的時間,CT 表示塊的擦除次數.
CAT算法選擇有效頁占例低,最近更新時間長,擦除次數較少的塊進行垃圾回收.這類塊因其有效頁所占比例低,需要遷移的有效頁少,且age值大,CT值小,說明該塊長時間未被使用,可以較好地保證SSD內部的損耗均衡.
傳統的基于DRAM緩存淘汰算法主要有LRU、LFU、ARC[6]、LIRS[7]、MC2[8]等.它們主要考慮的是數據訪問的時間局部性和空間局部性,沒有針對SSD的特性做出專門的設計.所以針對SSD緩存,一些新的緩存算法被相繼提出:
CFLRU[9]是Park等提出了一種專門針對閃存的頁級緩存算法.其主要思路是因為臟數據頁的替換代價要高于干凈頁,因而在緩存替換時盡可能選擇干凈頁來淘汰,而將臟頁留在緩存中,從而減少臟頁在寫回時對閃存的寫操作.CFLRU將LRU隊列分成兩個部分,分別為工作區和干凈頁優先替換區.干凈頁優先替換區位于LRU隊列尾部,淘汰時優先淘汰干凈頁,在沒有干凈頁的情況下,則淘汰LRU隊列末尾的數據頁.干凈頁優先淘汰區的大小值w對算法性能影響很大,如果w=0,CFLRU退化為LRU策略;如果w過大,則會影響緩存命中率.
BPLRU[10]是Kim等人在FAB算法基礎上提出的一種緩存算法.它也將來自同一數據塊的數據頁看做一個整體,按照塊中頁的數量排序,優先淘汰頁數量較多的塊.與FAB不同的是,在淘汰時,BPLRU會從flash中讀取相關的數據頁,將要淘汰的數據塊填滿,從而保證每次對閃存的寫都是整塊寫,這樣既能提高閃存的寫入速度,也能減少垃圾回收時的數據遷移量,提高了垃圾回收性能.
前言中說明了RAID和SSD的寫過程.那么在SSD緩存的系統中,能否利用SSD保留區中的無效數據來減少RAID小寫過程中的磁盤I/O次數?本文利用這些無效數據來參與RAID的校驗計算,借此減少磁盤I/O,提升系統的性能.
由于RAID5與RAID6的結構相似性,優化方式相同所以下文以RAID5為例來具體說明設計方法.

圖1 RMW模式下的校驗更新優化Fig.1 Optmizing parity update operations under RMW mode
如圖1所示,當SSD緩存將其中的臟數據1′寫回到RAID系統中時,根據前述原則,要采用RMW模式來重新計算校驗值P0.需要從RAID中讀取舊數據1和舊的校驗值P0,然后和新數據1′做異或運算得出新的校驗值P0′.但是此時發現,在SSD緩存中的保留空間中,數據頁1和RAID系統中的數據塊1是有相同的內容,也就是說SSD中的無效數據頁1和RAID系統中的數據塊1是一樣的.那么為什么不從SSD中的保留區中讀取這個無效數據頁來計算新校驗值呢.這樣做的好處是可以減少校驗更新時的磁盤操作,并且從SSD中讀取數據塊的速度要比從RAID系統中的磁盤上讀取要快很多,這樣就可以提高整個校驗值更新的速度了,進而提高系統的性能.
對于在SSD保留區中的類似數據頁1的這種數據頁,可以將其標記出來,在垃圾回收操作時,盡量先不擦除這些數據頁,等到它們在新的校驗值更新操作被利用之后,再將它們標記為無效頁進行擦除操作,也就是說這些數據頁的擦除操作被延遲了.這種在保留區中可以被用來優化校驗值更新的數據頁稱之為invalid-but-useful頁,而這利用invalid-but-useful頁來優化RAID寫性能的技術稱之為延遲擦除(Delayed Erasing)技術.

圖2 RCW模式下的校驗更新優化Fig.2 Optmizing parity update operations under RCW mode
除了上述這種利用保留區中的invalid-but-useful頁來優化校驗值更新操作外,對于RCW模式的校驗更新,也設計了一種將來自同一個條帶的數據塊收集起來合并寫回的方法來優化校驗值更新操作.具體方法如圖2所示,當SSD中的數據頁6′、7′要同時寫回到RAID系統中時,發現和它們來自同一個條帶的數據頁4和5也在SSD緩存中,此時就可以從SSD中讀取數據頁4和5來計算新的校驗值,避免了從RAID系統中的磁盤上讀取數據頁4和5,從而提高了校驗值更新的性能,也提高了系統的性能.當新的校驗值P1′計算出來后,和新數據頁6′、7′一起寫到RAID系統中.在上述過程中,總共減少了兩次磁盤讀操作,從而減少了校驗更新延遲,較好地降低了寫RAID操作導致的開銷.
由于在SSD中加入了新的頁邏輯轉態,所以需要一個新的FTL,命名為DE-FTL(Delayed Erasing Flash Translation Layer).DE-FTL實現的關鍵在于:SSD頁管理算法的設計和SSD垃圾回收算法的設計.
在SSD中定義如下5個頁的狀態:
1) 空白頁(free),頁中沒有任何數據;
2) 干凈數據頁(clean),頁中數據為干凈數據,未被修改;
3) 臟數據頁(dirty),頁中數據為臟數據,即用戶寫到緩存中,但未寫到RAID中數據;
4) 無效但有用數據頁(invalid-but-useful),頁中數據已被修改寫入其它頁,此頁可以用來優化RAID小寫;
5) 無效數據頁(invalid),頁中數據為無效.
在每一個頁的元數據添加一個標志位來標識該數據頁的狀態信息.

圖3 頁狀態轉換圖Fig.3 Page states transition
圖3表示數據頁不斷的讀寫I/O過程中狀態轉換的過程.
SSD中空白的頁狀態記為〈free〉,當SSD緩存從RAID中預取一個數據頁寫入該free塊中時,其狀態就由〈free〉轉變為〈clean〉,即過程①.
對于干凈數據頁,主要有以下兩種狀態轉變,一是該頁被淘汰出緩存,轉變為〈invalid〉狀態,即過程②;另一種是該干凈數據頁接受了一個寫請求,SSD緩存會先選擇一個空白頁來寫新的數據,此時該干凈數據頁其狀態轉變為〈invalid-but-useful〉,即過程③.同時寫入新數據的空白頁其狀態由〈free〉轉變為〈dirty〉,即過程④.這個invalid-but-useful 數據頁和這dirty數據頁是對應的,在dirty數據頁寫回到RAID系統中時,可以利用該invalid-but-useful 數據頁來優化校驗值更新過程.
對于invalid-but-useful數據頁,其狀態在兩種情況下會轉變為〈invalid〉,即過程⑤:一是該數據頁在臟數據寫回到RAID系統時的校驗更新中被使用;另一種是SSD保留區中的invalid-but-useful數據頁超過預定值時,需淘汰部分數據頁,被淘汰數據頁其狀態將轉變為 〈invalid〉,然后進行垃圾回收.由于SSD的保留區空間有限,當保留區空間不足時需要進行垃圾回收操作.
對于狀態為〈dirty〉的臟數據頁,有兩種狀態轉變,一是該數據頁被寫回RAID,狀態轉變為〈clean〉,即過程⑥;另一種是該數據接受了新請求,需要一個新的空白頁進行數據存儲,此數據頁變為無效,狀態轉變為〈invalid〉,即過程⑦.
對于invalid數據頁,在通過垃圾回收處理后,其狀態將轉變為〈free〉等待寫入新的數據,即過程⑧.
以上即是DE-FTL頁狀態管理算法.基于此算法,數據頁在接受不同的I/O請求和操作時,其狀態進行相應地切換.
延遲擦除技術需要利用處于invalid-but-useful狀態的數據頁來優化RAID系統的寫性能.為了使用這些數據頁,垃圾回收過程中,它們在被利用之前盡量不被擦除.所以,DE-FTL中的垃圾回收算法,不僅要考慮valid數據頁(valid頁是clean頁和dirty頁的總和),還需考慮invalid-but-useful數據頁在數據塊中的比重.因此,基于CAT算法,提出了一個改進型的公式(2)所示:

(2)
公式(2)在公式(1)基礎上,增加了兩個變量UR和λ,UR表示invalid-but-useful數據頁所占的比例;系數λ主要作用是來調節UR對value值的影響,其取值為[0,1],當其值為0時,就和CAT算法相同.預設的λ值為0.5.
如圖4所示,當前SSD中有3個塊(block1,block2和block3).其中,塊1包含2個valid數據頁和4個invalid數據頁;塊2包含2個valid數據頁,3個invalid-but-useful數據頁和1個invalid數據頁;塊3包含3個invalid數據頁,2個invalid-but-useful數據頁和1個invalid數據頁.假設這3個塊的age和CT都相等,分別為1和10.當垃圾回收時,根據CAT算法,塊1,塊2和塊3的Value值基于公式(1)經計算后分別為5,5,10.塊1和塊2的Value值相等而小于塊3,那么塊1和塊2將會被選作進行垃圾回收.而在DE-FTL中,根據公式(2),3個塊的Value值分別為5,14,20(λ值為0.5).此時塊1就被選中來進行垃圾回收.所以將塊1中的valid數據頁遷移到空白頁上,然后將整個塊1進行擦除操作,使其成為空白塊,結束垃圾回收過程.在考慮了invalid-but-useful數據頁的占比后,其結果與基于CAT算法計算得出的不同.

圖4 垃圾回收過程示例Fig.4 An example of garbage collection
傳統緩存算法均根據空間局部性或者時間局部性原理來做出緩存決定,即主要依據數據塊的訪問頻率和訪問時間來選取熱點數據.本文采用基于chunk的預取,對于多個chunk是熱點數據的stripe,考慮局部性原理,其它的chunk熱度應該也相對較高,所以chunk的熱度還需考慮其所在stripe的整體熱度.那么,chunk的熱度由自身的訪問量和所在stripe的熱度來共同決定,熱度值如公式(3)所示:
Hot(chunk-id)=a*Cnt(chunk-id)+(1-a)*Cnt(stripe-id)
(3)
其中Cnt()是統計訪問量函數,即Cnt(chunk_id)表示該chunk的訪問量,Cnt(stripe_id)表示chunk_id所在的stripe的總訪問量,系數a用以調整stripe熱度對chunk的影響.
為了提高SSD緩存的命中率,一般都會在SSD中緩存盡可能多的數據.假設SSD讀緩存容量為N塊,需要定時計算熱度值最大的N塊數據,預取到SSD中.本文采用一種基于訪問計數的HBT(Hot Block Table)方式來快速計算出這TOP-N個數據塊信息,設計方案如圖5所示.
將所有訪問的數據塊按照訪問次數插入到HBT表,相同熱度值的數據塊采用鏈表組織.同時根據數據塊的位置,將這些數據塊又分為SSD中的數據塊和RAID中的數據塊兩個隊列.分別使用兩個計數器記錄訪問次數為i的兩個隊列中數據塊個數.用數組(Count_raid_i,Count_ssd_i)來表示訪問次數為i的數據塊中,有Count_raid_i個在RAID中,有Count_ssd_i個在SSD中.如圖5中例子,對于訪問次數為1的數據塊,其計數器數組為(2,1),表示在RAID中有2個,SSD中有1個,那么訪問次數為1的數據塊的個數和為3.
當數據塊再次被訪問時,將其移動至上一級鏈表.定時對整個HBT進行老化操作(定時將所有數據塊的訪問次數乘以系數X,X默認為0.5),以避免數據塊的訪問次數一直增加,同時將HBT中已變冷的數據塊從中淘汰出去.對于新被訪問的數據塊,設置其初始訪問次數為8,以避免其剛進入緩存就馬上被淘汰.對于淘汰出HBT的數據塊就不再記錄其訪問信息,直至其再次被訪問.

圖5 HBT結構示意圖Fig.5 Structure of HBT
傳統的緩存淘汰算法一般利用請求分布的時間局部性和空間局部性來改善系統的I/O性能,但這些算法并不能很好解決RAID5計算校驗的額外磁盤開銷問題,且在一般情況下某一stripe中的各chunk所處的狀態比較復雜,于是本文設計了最小開銷算法LCA(Least Cost Algorithm):算法計算每個分條數據的RAID5寫操作需要的磁盤讀寫開銷,每次總是選取開銷最小的分條進行替換,從而減少寫操作對磁盤的訪問負載.在RMW模式和RCW模式兩種方式的寫開銷分別如公式(4)與公式(5)所示.
ERMW(i)=ESSD*mi+EHDD*(ki-mi+1)
(4)
ERCW(i)=ESSD*ni+EHDD*(L-ki-ni)
(5)
為了方便比較不同stripe之間的寫磁盤開銷,將寫磁盤開銷定義為寫入單位大小臟數據時的系統開銷,因此最終的寫磁盤開銷E(i)如公式(6)所示.
E(i)=min{ERWM(i),ERCW(i)}/Si
(6)
其中Si為臟數據為第i號stripe中的臟數據大小,參數ESSD和EHDD,分別表示SSD和HDD的讀取開銷系數.
然而,寫緩存替換算法不僅要考慮寫磁盤的開銷,還需要利用寫操作的時間局部性和空間局部性提高寫緩存的命中率.對此本文采用LAC算法與LRU算法結合來實現.LRU算法用于保證新stripe在寫緩存中保存一定時間,且與同一stripe中的其他寫操作合并.當stripe從LRU隊列淘汰后,將其放入最小開銷算法的堆中.最小開銷算法將各stripe按照寫入單位數據所用的開銷來進行排序,當寫緩存需要替換時,將寫開銷最小的一部分數據寫回到磁盤中.
當寫緩存中接受了新的寫請求,就將該請求所對應的數據塊加入到LRU隊列中,淘汰隊尾的數據塊;同時計算被淘汰的數據塊的寫磁盤開銷,并根據計算結果將其添加到最小開銷算法的堆中,如圖6(a)所示;而當寫緩存中空間不足或磁盤負荷較小時,系統會將堆頂的數據塊寫回磁盤中,并更新堆,如圖6(b)所示.若訪問的數據塊在LRU隊列中,則將該節點移動到LRU隊列的頭部,若訪問的stripe在LCA堆中,則將該節點移動到LRU隊列的頭部,同時從LRU尾部移出一個節點,插入到LCA堆中.

圖6 寫緩存替換算法示意圖Fig.6 Replacement algorithm of write cache
本文基于Linux系統實現了DE-Cache的原型系統.圖7中所示為DE-Cache的軟件結構,主要包括Trace 回放模塊,DE-Cache控制模塊等.而DE-Cache控制模塊又分為DE-Cache API,緩存管理模塊,RAID管理模塊.DE-Cache在用戶層實現,RAID系統直接用Linux MD配置工具實現,配置不同的RAID級別.
Trace回放模塊主要用來讀取trace文件并將其中的讀寫請求下發到DE-Cache控制模塊.由于DE-Cache是在用戶層實現,其應用接口并不是一個標準的Linux 接口,所以提供了一個DE-Cache API給上層應用程序調用.
緩存管理模塊主要用于處理發送到SSD和虛擬SSD的讀寫請求.它的三個主要子模塊中,熱點數據選取模塊主要用于全局的熱點數據選取,并將熱點數據寫入到SSD緩存中.虛擬SSD管理模塊包括處理針對虛擬SSD的請求以及虛擬SSD內部的垃圾回收等功能.DE-FTL主要用于SSD的數據管理,包括地址轉換、頁狀態轉換、垃圾回收管理等功能,基于DFTL代碼修改實現的.

圖7 DE-Cache結構圖Fig.7 Structure of DE-Cache
在DE-FTL中,主要有三點改變,一是在原來的狀態基礎上增加了〈invalid-but-useful〉狀態;二是在LPN(Logical Page Number,邏輯頁數) 到PPN (Physical Page Number,物理頁數)的映射表之外,增加了一條從LPN到PIPN(physical Invalid-but-useful Page Number)的映射,用于確定invalid-but-useful頁在SSD內部的物理地址;三是垃圾回收管理,將invalid-but-useful數據頁考慮進來,在原有的垃圾回收公式中添加了一個可變參數λ來調節invalid數據頁和invalid-but-useful數據頁在垃圾回收值中的權重.
此外,在DE-FTL中,由于invalid-but-useful數據頁都是存放在保留空間中,所以使用保留區管理模塊來管理SSD緩存中的OP空間;利用垃圾回收管理模塊來管理整個SSD緩存內的垃圾回收操作.
RAID管理模塊主要用來處理針對RAID系統的讀寫請求.當請求在RAID管理模塊中被處理之后,處理結果會被返回給緩存管理模塊.
在本文測試中,DE-Cache部署在一個運行了Linux系統的存儲服務器中,該存儲服務器的硬件配置如表1所示,由于受到硬件條件限制,本文是拿通用的Intel SSD盤當做沒有FTL的裸Flash用,在DE-Cache中自己實現了FTL功能.

表1 服務器配置信息Table 1 Configuration informations of servers
為了比較不同配置下的系統性能,DE-Cache和一個基準RAID系統被部署在相同的測試環境中.共配置了兩種不同緩存設置的對比方案來進行測試和性能對比,這兩種對比方案的具體配置如下:DSC (Dual SSD Cache system,雙SSD緩存系統):該對比方案是測試的基準方案,其它的方案都是與它進行性能對比;在RAID系統基礎上,為了保證緩存數據的可靠性,使用兩個SSD做鏡像緩存.
DSC-DE (DE-Cache with Dural SSD cache):該配置的硬件設備和配置DSC的完全相同,但是它具有完整的DE-Cache功能,運行所有的DE-Cache算法,實現DE功能.即DSC-DE的SSD緩存的保留區內會維持一部分的invalid-but-useful頁來優化RAID5的校驗更新.
由于DSC和DSC-DE的緩存大小和緩存算法完全相同,所以二者的讀請求響應時間應該是完全一樣的,兩個方案的主要差異在于寫請求響應時間上,所以本文測試部分一平均寫響應時間作為性能的主要評估參考標準.
測試的主要性能指標包括在不同的緩存寫回方式下(寫回模式和寫穿模式)的平均寫響應時間(average write response time)以及驗證系統損耗均衡的垃圾回收時SSD的擦除次數.測試用的trace來源于Storage Performance Council[11]的Financial1和Financial2,簡寫為F1,F2,以及Microsoft research[12]的STG、USR、MDS、WEB和SRC.
5.3.1 寫回模式下的性能分析
圖8顯示了測試結果.結果顯示,在7個trace條件下,DSC-DE的平均寫響應時間要比DSC系統減少10.13%到16.17%.該結果說明,DE技術能顯著提高系統的寫性能.對于SSD緩存而言,一般都是將SSD緩存填滿數據,而且為了提高寫請求的響應速度,一般采用寫回策略,即不管寫請求在SSD中是否命中,都將寫請求的數據寫到SSD中.所以,當某一寫請求在SSD中不命中時,由于SSD已滿,而又需寫入新的數據,會引起緩存淘汰,而被淘汰的臟數據就要寫回RAID中,那么就會產生校驗更新操作.只有當從SSD中淘汰的臟數據完全寫回到RAID后,該寫請求的數據才會寫入SSD中,此時整個寫請求的的響應時間才結束.DE技術主要減少的就是臟數據寫回到RAID時所帶來的大量磁盤操作而導致的時間延遲,進而縮短了整個寫請求的響應時間,從而提高了系統的性能.

圖8 寫回模式下DSC和DSC-DE的平均寫響應時間對比Fig.8 Average response time with write-back policy
為了深入了解DE技術對寫性能的優化作用,統計了7個trace下的寫請求優化比例,結果如圖9 所示.從結果中可以看出,7個trace中38.1%到63.75%的寫請求都利用了DE優化技術.這說明DE優化技術能優化大部分的寫請求,針對寫請求比較分散的應用,其優化效果會更加明顯.

圖9 寫回模式下DSC-DE的寫優化比例Fig.9 Write performance improvements with write-back policy
5.3.2 寫穿模式下的性能分析
在某些應用場景中,為了追求更高的一致性要求,系統會采用寫穿模式來處理寫請求,因為寫回模式中,SSD緩存中會有臟數據產生,即SSD緩存中的數據和RAID系統中的數據不一致.本節測試了在寫穿模式下的DE性能表現.依舊使用DSC和DSC-DE來做對比,系統配置與前者一致.
圖10顯示了測試結果.從結果可以看出,7個trace的DSC-DE依舊比DSC擁有更好的性能表現,其平均寫響應時間要低16.67%到21.32%.而從圖11中可以看出,DE技術對寫請求的性能優化比例高達77.41%到98.76%.和寫回模式相比,無論是性能提升比例還是優化比例,在寫穿模式下都要高一些,其具體原因如下:
首先,在寫回模式下,部分的寫請求命中緩存會被緩存所吸收,只有在寫不命中情況下才會導致緩存淘汰,在淘汰時才可以用到DE優化技術,而在寫穿模式下,每個寫請求都要寫到SSD緩存和RAID系統中,在寫到RAID系統時,就可以利用DE技術.因此在寫穿模式下能夠利用DE技術的機會要遠遠大于在寫回模式下;其次對于SSD緩存中的熱點的寫數據而言,在寫回模式下,雖然針對熱點數 據的寫請求很多,但是大部分寫請求都會在SSD緩存中命中,只有在淘汰到RAID時利用一次DE優化技術,而在寫穿模式下,重復對熱點數據的寫,就會多次利用DE優化技術.綜合這兩方面原因,在寫穿模式下,DE優化技術對系統性能的優化效果要更顯著,寫請求中所能利用DE優化技術的比例也要更大.

圖11 寫穿模式下DSC-DE的寫優化比例Fig.11 Write performance improvements with write-through policy
隨著數據的爆炸性增長,大數據時代已經到來,人們對存儲系統的要求也越來越高.為了提高存儲系統的性能,SSD越來越多地被使用在存儲系統中.考慮到系統的性價比,SSD常用作內存和下層磁盤之間的緩存.
本文針對SSD作為RAID存儲系統緩存時系統性能提升方面進行了深入討論,提出了一種利用SSD保留區中無效數據來優化RAID寫性能的延遲擦除技術.本文利用SSD的擦除后寫的特性,利用其存儲保留區,來對RAID5/6系統中的小寫性能瓶頸進行優化,通過在校驗更新時從SSD中讀取數據而不是從磁盤中讀取數據來減少磁盤操作,從而提高了RAID的寫性能.該技術在沒有任何額外硬件開銷和緩存空間損失的情況下,提高了系統性能.