NVMe SSD 廠商Spec給出的性能非常完美,前面也給出了NVMe SSD和磁盤之間的性能對(duì)比,NVMe SSD的性能的確比磁盤高很多。
但在實(shí)際應(yīng)用過程中,NVMe SSD的性能可能沒有想象中的那么好,并且看上去不是特別的穩(wěn)定,找不到完美的規(guī)律。和磁盤介質(zhì)相比,SSD的性能和很多因素相關(guān),分析SSD的性能影響因素,首先需要大體了解SSD構(gòu)成的主要部分。
如下圖所示,其主要包括主機(jī)CPU、PCIe互連帶寬、SSD控制器及FTL軟件、后端NAND Flash帶寬、NAND Flash介質(zhì)。影響SSD性能的主要因素可以分成硬件、軟件和客觀環(huán)境三大部分,具體分析如下。
1, 硬件因素
a) NAND Flash本身。不同類型的NAND Flash本身具有不同的性能,例如SLC的性能高于MLC,MLC的性能優(yōu)于TLC。選擇不同的工藝、不同類別的NAND Flash,都會(huì)具有不同的性能。
b) 后端通道數(shù)(CE數(shù)量)及總線頻率。后端通道數(shù)決定了并發(fā)NAND Flash的數(shù)量,決定了并發(fā)能力。不同的SSD控制器支持不同數(shù)量的通道數(shù),也決定了SSD的后端吞吐帶寬能力。NAND Flash Channel的總線頻率也決定了訪問Flash的性能。
c) SSD控制器的處理能力。SSD控制器中會(huì)運(yùn)行復(fù)雜的FTL(Flash Translation Layer)處理邏輯,將邏輯塊讀寫映射轉(zhuǎn)換成NAND Flash 讀寫請(qǐng)求。在大數(shù)據(jù)塊讀寫時(shí),對(duì)處理器能力要求不是很高;在小數(shù)據(jù)塊讀寫時(shí),對(duì)處理器能力要求極高,處理器能力很容易成為整個(gè)IO系統(tǒng)的性能瓶頸點(diǎn)。
d) SSD控制器架構(gòu)。通常SSD控制器采用SMP或者M(jìn)PP兩種架構(gòu),早期的控制器通常采用MPP架構(gòu),多個(gè)小處理器通過內(nèi)部高速總線進(jìn)行互連,通過硬件消息隊(duì)列進(jìn)行通信。內(nèi)存資源作為獨(dú)立的外設(shè)供所有的處理器進(jìn)行共享。這種架構(gòu)和基于消息通信的分布式系統(tǒng)類似。MPP架構(gòu)的很大優(yōu)勢(shì)在于性能,但是編程復(fù)雜度較高;SMP架構(gòu)的性能可擴(kuò)展性取決于軟件,編程簡(jiǎn)單,和在x86平臺(tái)上編程相似。不同的控制器架構(gòu)會(huì)影響到SSD的總體性能,在SSD設(shè)計(jì)時(shí),會(huì)根據(jù)設(shè)計(jì)目標(biāo),選擇不同類型的SSD控制器。
e) 內(nèi)存支持容量。為了追求高性能,SSD內(nèi)部的映射資源表會(huì)常駐內(nèi)存,映射表的內(nèi)存占用大小是盤容量的0.1%,當(dāng)內(nèi)存容量不夠大時(shí),會(huì)出現(xiàn)映射表?yè)Q入換出的問題,影響到性能。
f) PCIe的吞吐帶寬能力。PCIe前端帶寬體現(xiàn)了SSD的前端吞吐能力,目前NVMe SSD采用x4 lane的接入方式,上限帶寬為3GB/s,當(dāng)后端NAND Flash帶寬和處理器能力足夠時(shí),前端PCIe往往會(huì)成為性能瓶頸點(diǎn)。NANDFlash具有很高的讀性能,目前來(lái)看,SSD的讀性能在很大程度上受限于PCIe總線,因此需要快速推進(jìn)PCIe4.0標(biāo)準(zhǔn)。
g) 溫度對(duì)性能造成影響。在NAND Flash全速運(yùn)行的情況下,會(huì)產(chǎn)生較大的散熱功耗,當(dāng)溫度高到一定程度時(shí),系統(tǒng)將會(huì)處于不正常的工作狀態(tài),為此,SSD內(nèi)部做了控溫系統(tǒng),通過溫度檢測(cè)系統(tǒng)來(lái)調(diào)整SSD性能,從而保證系統(tǒng)溫度維持在閾值之內(nèi)。調(diào)整溫度會(huì)犧牲性能,本質(zhì)上就是通過降低SSD性能來(lái)降溫。因此,當(dāng)環(huán)境溫度過高時(shí),會(huì)影響到SSD的性能,觸發(fā)SSD內(nèi)部的溫度控制系統(tǒng),調(diào)節(jié)SSD的性能。
h) 使用壽命對(duì)性能造成影響。NAND Flash在不斷擦除使用時(shí),F(xiàn)lash的bit error會(huì)不斷上升,錯(cuò)誤率的提升會(huì)影響到SSD的IO性能。
2, 軟件因素
a) 數(shù)據(jù)布局方式。數(shù)據(jù)布局方法需要充分考慮NAND Flash中的并發(fā)單元,如何將IO操作轉(zhuǎn)換成NAND Flash的并發(fā)操作,這是數(shù)據(jù)布局需要考慮的問題。例如,采用數(shù)據(jù)交錯(cuò)的方式在多通道page上進(jìn)行數(shù)據(jù)布局,通過這種方式可以優(yōu)化順序帶寬。
b) 垃圾回收/wear leveling調(diào)度方法。數(shù)據(jù)回收、wear leveling、data retention等操作會(huì)產(chǎn)生大量的NANDFlash后端流量,后端流量直接反應(yīng)了SSD的寫放大系數(shù),也直接體現(xiàn)在后端帶寬的占用。垃圾回收等產(chǎn)生的流量也可以稱之為背景流量,背景流量會(huì)直接影響到前端用戶性能。因此需要對(duì)背景流量和用戶流量之間進(jìn)行合理調(diào)度,使得用戶IO性能達(dá)到最佳。
c) OP預(yù)留。為了解決壞塊、垃圾回收等問題,在SSD內(nèi)部預(yù)留了一部分空閑資源,這些資源被稱之為OP(Overprovisioning)。OP越大,GC過程中平均搬移的數(shù)據(jù)會(huì)越少,背景流量會(huì)越小,因此,寫放大降低,用戶IO性能提升。反之,OP越小,性能會(huì)越低,寫放大會(huì)越大。在SSD容量較小的時(shí)代,為了提升SSD的使用壽命,往往OP都設(shè)置地比較大。
d) Bit error處理影響性能。在SSD內(nèi)部采用多種機(jī)制來(lái)處理NAND Flash所產(chǎn)生的Bit error。ECC糾錯(cuò)、readretry、soft LDPC以及RAIN都是用來(lái)糾正bit翻轉(zhuǎn)導(dǎo)致的錯(cuò)誤。當(dāng)Bit錯(cuò)誤率增加時(shí),軟件處理的開銷越大,在bit控制在一定范圍之內(nèi),完全可以通過硬件進(jìn)行糾正。一旦軟件參與到bit糾正的時(shí)候,會(huì)引入較大的性能開銷。
e) FTL算法。FTL算法會(huì)影響到SSD性能,對(duì)于不同用途的SSD,F(xiàn)TL的設(shè)計(jì)與實(shí)現(xiàn)是完全不同的,企業(yè)級(jí)SSD為了追求高性能,通常采用Flat mapping的方式,采用大內(nèi)存緩存映射表;消費(fèi)級(jí)SSD為了追求低成本,通常采用元數(shù)據(jù)換入換出的方式,并且采用pSLC+TLC的組合方式進(jìn)行分層存儲(chǔ),也可以采用主機(jī)端內(nèi)存緩存元數(shù)據(jù)信息,但是這些方式都會(huì)影響到性能。
f) IO調(diào)度算法。NAND Flash具有嚴(yán)重的性能不對(duì)稱性,F(xiàn)lash Erase和Program具有ms級(jí)延遲,F(xiàn)lash read的延遲在us級(jí)。因此,如何調(diào)度Erase、Program以及read是SSD后端設(shè)計(jì)需要考慮的問題。另外,前端IO以及背景IO之間的調(diào)度也是需要權(quán)衡考慮,通過IO調(diào)度可以達(dá)到最佳性能表現(xiàn)。在IO調(diào)度過程中,還需要利用NANDFlash的特性,例如Program Suspension,通過這些特性的利用,最優(yōu)化SSD前端IO性能。
g) 驅(qū)動(dòng)軟件。驅(qū)動(dòng)軟件運(yùn)行在主機(jī)端,通常分為內(nèi)核態(tài)和用戶態(tài)兩大類,內(nèi)核態(tài)驅(qū)動(dòng)會(huì)消耗較多的CPU資源,存在頻繁上下文切換、中斷處理,因此性能較低;用戶態(tài)驅(qū)動(dòng)通常采用Polling IO處理模式,去除了上下文切換,可以充分提升CPU效率,提升整體IO性能。
h) IO Pattern對(duì)性能產(chǎn)生影響。IO Pattern影響了SSD內(nèi)部的GC數(shù)據(jù)布局,間接影響了GC過程中的數(shù)據(jù)搬移量,決定了后端流量。當(dāng)IO Pattern為全順序時(shí),這種Pattern對(duì)SSD內(nèi)部GC是最為友好的,寫放大接近于1,因此具有最好的性能;當(dāng)IO Pattern為小塊隨機(jī)時(shí),會(huì)產(chǎn)生較多的GC搬移數(shù)據(jù)量,因此性能大為下降。在實(shí)際應(yīng)用中,需要通過本地文件系統(tǒng)最優(yōu)化IO Pattern,獲取最佳性能。
3, 客觀因素
a) 使用時(shí)間越長(zhǎng)會(huì)導(dǎo)致SSD性能變差。使用時(shí)間變長(zhǎng)之后,SSD內(nèi)部NAND Flash的磨損會(huì)加重,NAND Flash磨損變大之后會(huì)導(dǎo)致bit錯(cuò)誤率提升。在SSD內(nèi)部存在一套完整的bit錯(cuò)誤恢復(fù)機(jī)制,由硬件和軟件兩大部分構(gòu)成。當(dāng)bit錯(cuò)誤率達(dá)到一定程度之后,硬件機(jī)制將會(huì)失效。硬件機(jī)制失效之后,需要通過軟件(Firmware)的方式恢復(fù)翻轉(zhuǎn)的bit,軟件恢復(fù)將會(huì)帶來(lái)較大的延遲開銷,因此會(huì)影響到SSD對(duì)外表現(xiàn)的性能。在有些情況下,如果一塊SSD在掉電情況下放置一段時(shí)間之后,也可能會(huì)導(dǎo)致性能變差,原因在于SSD內(nèi)部NAND Flash中存儲(chǔ)電荷的漏電,放置一段時(shí)間之后導(dǎo)致bit錯(cuò)誤率增加,從而影響性能。SSD的性能和時(shí)間相關(guān),本質(zhì)上還是與NAND Flash的比特錯(cuò)誤率相關(guān)。
b) 環(huán)境溫度也會(huì)對(duì)性能造成影響。為了控制SSD溫度不能超過上限值,在SSD內(nèi)部設(shè)計(jì)有一套溫度負(fù)反饋機(jī)制,該機(jī)制通過檢測(cè)的溫度對(duì)NAND Flash后端帶寬進(jìn)行控制,達(dá)到降低溫度的效果。如果一旦溫度負(fù)反饋機(jī)制開始工作,那么NAND Flash后端帶寬將會(huì)受到限制,從而影響前端應(yīng)用IO的性能。下面從軟件的角度出發(fā),重點(diǎn)闡述GC以及IO Pattern對(duì)SSD性能的影響。
3.1 GC對(duì)性能的影響
SSD內(nèi)部有一個(gè)非常厚重的軟件層,該軟件層用來(lái)解決NAND Flash的問題,采用log-structured的方式記錄數(shù)據(jù)。Log-structured方式引入了GC的問題,對(duì)于前端業(yè)務(wù)來(lái)講,GC流量就是背景噪聲。GC流量不是時(shí)時(shí)刻刻存在的,因此,SSD對(duì)外體現(xiàn)性能大幅度波動(dòng)。當(dāng)SSD為空盤時(shí),性能會(huì)非常好,為最佳性能;當(dāng)SSD被用過一段時(shí)間之后,性能會(huì)大幅降低。其中GC起到了很重要的作用。企業(yè)級(jí)SSD在發(fā)布Spec的時(shí)候,都會(huì)發(fā)布SSD盤的穩(wěn)態(tài)性能。在性能測(cè)試的時(shí)候,需要對(duì)盤進(jìn)行老化預(yù)處理。通常預(yù)處理的方法是順序?qū)憹M盤,然后再隨機(jī)兩遍寫盤,預(yù)處理完成之后,再對(duì)盤進(jìn)行隨機(jī)讀寫測(cè)試,得到Spec中定義的值。穩(wěn)態(tài)值基本可以認(rèn)為是盤的下限性能。
上圖所示是多個(gè)廠商的盤在空盤和穩(wěn)態(tài)情況下的性能對(duì)比,由此可見穩(wěn)態(tài)情況和空盤情況下的性能差距很大。在穩(wěn)態(tài)情況下,SSD內(nèi)部的GC會(huì)全速運(yùn)行,會(huì)占用較多的NAND Flash后端帶寬。背景流量和前端數(shù)據(jù)流的比例也就體現(xiàn)了SSD盤的寫放大系數(shù),寫放大系數(shù)越大,背景流量占用帶寬越多,SSD對(duì)外體現(xiàn)的前端性能也就越差。寫放大系數(shù)很多因素相關(guān),例如OP、應(yīng)用IO Pattern等。如果應(yīng)用IO Pattern比較好,那么可以降低寫放大系數(shù),背景噪聲流就會(huì)減少,前端業(yè)務(wù)的性能會(huì)提升。例如,在SSD完全順序?qū)懭氲那闆r下,寫放大系數(shù)可以接近于1,此時(shí)GC產(chǎn)生的數(shù)據(jù)流很少,背景流量基本沒有,后端帶寬基本被業(yè)務(wù)數(shù)據(jù)流占用,因此對(duì)外體現(xiàn)的性能會(huì)很好。
GC是影響性能的重要因素,除了影響性能之外,GC會(huì)增大寫放大,對(duì)SSD的使用壽命產(chǎn)生影響。從軟件層面的角度考慮,可以通過優(yōu)化應(yīng)用IO Pattern的方式優(yōu)化SSD內(nèi)部GC,從而進(jìn)一步提升SSD的性能,優(yōu)化使用壽命。對(duì)于下一代更為廉價(jià)的QLC SSD介質(zhì),就需要采用這種優(yōu)化思路,否則無(wú)法很好地滿足實(shí)際業(yè)務(wù)的應(yīng)用需求。
審核編輯:湯梓紅
-
FlaSh
+關(guān)注
關(guān)注
10文章
1650瀏覽量
149562 -
cpu
+關(guān)注
關(guān)注
68文章
10951瀏覽量
213948 -
SSD
+關(guān)注
關(guān)注
21文章
2911瀏覽量
118340 -
磁盤
+關(guān)注
關(guān)注
1文章
383瀏覽量
25375 -
nvme
+關(guān)注
關(guān)注
0文章
224瀏覽量
22850
原文標(biāo)題:NVMe SSD性能影響因素一探究竟(上)
文章出處:【微信號(hào):架構(gòu)師技術(shù)聯(lián)盟,微信公眾號(hào):架構(gòu)師技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Xilinx FPGA NVMe Host Controller IP,NVMe主機(jī)控制器
Xilinx FPGA NVMe主機(jī)控制器IP,高性能版本介紹應(yīng)用
Xilinx FPGA高性能NVMe SSD主機(jī)控制器,NVMe Host Controller IP
高性能NVMe主機(jī)控制器,Xilinx FPGA NVMe Host Accelerator IP
高性能NVMe主機(jī)控制器,Xilinx FPGA PCIe 3
NVMe P4600的速度部分低于SATA SSD?
在Xilinx ZCU102評(píng)估套件上啟用NVMe SSD接口
如何為工業(yè)應(yīng)用設(shè)計(jì)NVMe SSD呢
西部數(shù)據(jù)推出新款高性能NVMe SSD
NVMe SSD與SATA SSD的性能對(duì)比
影響SSD性能的因素有哪些 NVMe SSD性能解析
Flashtec系列的最新成員 Flashtec NVMe 3108 PCIe Gen 4企業(yè)NVMe SSD控制器
重新定義NVMe SSD外形

評(píng)論