Erase/Program Suspension是1y以及3D Flash提供的一個新的命令接口。該命令可以在Erase/Program操作過程中將其暫停,然后執行其他的操作,并在某個時間重啟之前暫停的操作。這篇文章將簡述這種Suspension操作對SSD性能改善所起到的作用。
Erase/Program操作對SSD讀性能的影響
和客戶級別的SSD不同,企業級的SSD除了順序讀順序寫帶寬,隨機讀隨機寫的IOPS等指標之外,還有一些穩定性的指標。其中一項重要指標就是IO響應時延的穩定性,或一致性,英文為Latency Consistency。該指標反映IO隨測試時間的一個延遲分布情況,分布集中說明穩定性好,IO延遲抖動??;分布離散,說明穩定性差,IO延遲抖動大。IO延遲的抖動,和SSD中IO調度算法有密切的關系。復雜的企業應用,不再是簡單讀寫,大部分都是比較復雜的持續混合IO。持續的寫入,勢必導致SSD內GC的發生,形成數據搬移,落實到Flash具體操作就是Read/Program/Erase操作。然而當這些SSD內部GC產生的對Flash的Read/Program/Erase操作,和主機Host的IO產生沖突的時候,就會對IO的延遲產生不確定性,導致返回的IO延遲抖動。
GC對于寫延遲的抖動,這個是個間接的過程。累積到磁盤寫緩沖(DRAM或SRAM)的數據在寫入Flash過程中會受到GC的Read/Program/Erase影響。SSD寫緩沖如果不能完全吸收這種抖動造成的影響,就會將這種抖動傳遞到主機Host處,而表現為主機寫IO的抖動。圖1來自網絡。我們知道4k QD1的性能對Latency非常敏感,圖1展示了持續寫由于GC引發抖動導致寫延遲變化導致性能的波動。由于實現算法的差異,每個廠家表現是不一樣的。這個也能簡介反映廠家設計的功底和算法的優劣。
圖1 SSD 4k DQ1持續寫入性能延遲表現(來自網絡)
GC對于讀延遲的抖動則更加明顯。主機的讀大部分都是從Flash直接讀出。理想情況的讀延遲為Flash讀數據的延遲,這個指標對于Flash來說一般是tR,60-100us不等,加上Controller ECC解碼時間以及數據搬運到主機內存的時間,一般來說這部分時間在10-20us。而當一個主機host讀遇上一個主機的寫導致的Flash的Program或GC的Read/Program/Erase在同樣的Flash LUN上面發生沖突,情況就會變得比較糟糕。Flash Program/Erase數據的延遲tPROGt ERASE在ms級別,3D Flash這兩項指標更為惡化,tPROG達到平均2-3ms,tERASE達到平均10ms。這將意味這host的這次讀訪問的延遲將達到ms甚至10ms以上。而平均效果看在這種測試下,讀的一致性就表現出大的波動。
為了實際說明問題,這里舉出一種場景描述企業應用中Erase/Program操作對實際業務造成的影響。在某種SSD上面以某種方式充分預制后,用以下模擬某種數據庫測試的FIO腳本做比較輕量Queue Depth的IO讀寫混合操作。可見在長時間持續寫入的情況,引發GC產生,對性能產生負面的影響。測試的Flash為某廠的3D Flash tPROG基本為2D Flash的1.5-2倍,而tERASE平均已經達到10ms。該3D Flash正常的tR為60-70us之間,而測試中SSD在各個場景下表現的平均Latency已經達到120-140us左右,最大的讀Latency已經到10ms以上。這正是主機Host的讀和主機寫,以及GC的Read/Program/Erase,產生沖突后表現。不難理解主機Host的某個讀,被擋在一個剛執行的GC Erase的后面,被Delay近10ms,所表現的比較差的最大讀延遲。
表1某種SSD模擬數據庫場景的測試效果
Erase/Program Suspension對企業應用的改善
1y以及3D Flash提供了一種稱為Erase Suspension和Program Suspension的命令接口。其操作方法是,當Flash內部Array 正在進行Erase或Program操作時,用過這種命令,暫停當前的的Erase或Program操作。暫停成功后的Flash,狀態回到Ready狀態,可以進行讀操作。而在某個時間,可以通過某些命令恢復之前被暫停的操作。
這種方式就為某些被已經下發的Erase或Program擋住的高優先級讀,提供了超車的可能。避免了主機Host高優先級讀被長時間Erase或Program擋,比較大程度的改善讀的最大延遲,同時,平均讀延遲也降獲得改善。
在同樣的SSD測試項目里面,引入這種技術,對比之前的測試用例,已經能觀察到比較明顯的改善效果。這里在SSD FW里面做了一些更加智能的控制,比如在Host IO壓力一定的情況下使用Suspension技術;在高優先級IO被Erase/Program被擋的情況下,判斷Erase/Program執行情況,評估當前Erase/Program執行如果完成度比較低則使用Suspension,讓后續的高優先級讀超車。
表2某種SSD模擬數據庫場景應用Erase/Program Suspension后的測試效果
值得注意的是除了Erase/Program Suspension對企業性能的改善,另外對掉電也有很大的幫助。當前3D Flash的Erase時間都很長,在Dirty 掉電場景下,企業級SSD要求將Commit的寫緩沖要刷入flash。tERASE的10ms對Dirty 掉電,是非常寶貴的時間,SSD電容一般設計也就能Cover數10ms。所以能夠Suspend掉當前耗時的Erase,執行數據的緊急寫入是很優必要的。
Erase/Program Suspension技術在SSD控制器應用的考慮
由以上分析Erase/Program Suspension技術的優勢是顯而易見的。然而Erase/Program Suspension技術操作上面SSD控制器也有一些點需要關注。
Erase/Program Suspension的控制層面在SSD的FW上控制比較困難。當FW下發NAND操作指令到硬件的Flash controller隊列中,這個NAND操作指令基本就不受FW控制,其執行狀態取決于當前的flash操作狀態,以及Flash Controller的調度策略。FW層面很難決定什么時候需要發起或可以發起Erase/Program Suspension。這要求SSD Controller內部的FlashController做更加精細以及智能的控制,例如硬件的Flash Controller需要感知到當前將要執行IO的優先級別,并對正在執行的Erase/program估計完成時間,判斷是否值得做Suspension操作。
對于Erase Suspension來說可能增加Cell的PE cycles,這點也是需要考慮的。FW在系統層面需要決定哪些IO遇到Erase/Program擋住的時候,適合執行Suspension,除了根據IO優先級,還要從系統層度預判Suspension的收益。包括當前GC強度,主機Host IO壓力強度。比如當大壓力的混合讀寫,GC強度也非常大,頻繁的Suspension,也許并不適合,大壓力下Suspension對讀IO的延遲提升有限,頻繁的Suspension可能會過快消耗Cell壽命。Suspension和之后的恢復操作,需要增加FW復雜度,消耗CPU計算時間,而且可能使GC執行不順暢,對業務造成負面影響。整體上看很可能沒有獲得所期望的優化效果,反而增大IO的抖動和延遲。
Erase/Program Suspension是Flash廠商應企業級客戶需求開放的一種有效改善IO延遲的新命令接口,能在一定程度上緩解3D Flash由于tPROG/tERASE增加而導致的問題。目前市面上已經有一些企業SSD產品聲稱對Erase/Program Suspension的支持。SSD Controller要用好Erase/Program Suspension,需要HW以及FW,從SSD系統上面做全面的考量。能利用好這項技術,帶來SSD產品對實際應用的改善,也需要廠商做比較深入研究。
-
控制器
+關注
關注
112文章
15873瀏覽量
175302 -
SSD
+關注
關注
20文章
2790瀏覽量
116631 -
數據庫
+關注
關注
7文章
3707瀏覽量
64019
原文標題:消除企業級SSD寫抖動的利器:擦寫暫停技術
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論