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

探秘CPU對(duì)SSD性能影響
SSD是什么意思,什么是SSD
這些ssd的頁(yè)面大小和塊擦除大小是?
S32K312編程但是Erase and Program總是不成功怎么解決?
電池管理器件的讀/寫(xiě)操作
GD32-Colibri-F207實(shí)驗(yàn)板Erase_Progra
NVMe SSD與SATA SSD的性能對(duì)比
不同系統(tǒng)對(duì)SSD性能是否有影響
影響SSD性能的因素有哪些 NVMe SSD性能解析
FTL算法的好壞,直接決定了SSD在性能
讀、寫(xiě)、擦除是SSD對(duì)NAND的三大基本操作
如何FPGA內(nèi)部的RAM進(jìn)行讀改寫(xiě)操作

評(píng)論