NVMe SSD 廠商Spec給出的性能非常完美,前面也給出了NVMe SSD和磁盤(pán)之間的性能對(duì)比,NVMe SSD的性能的確比磁盤(pán)高很多。
但在實(shí)際應(yīng)用過(guò)程中,NVMe SSD的性能可能沒(méi)有想象中的那么好,并且看上去不是特別的穩(wěn)定,找不到完美的規(guī)律。和磁盤(pán)介質(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的總線頻率也決定了訪問(wèn)Flash的性能。
c) SSD控制器的處理能力。SSD控制器中會(huì)運(yùn)行復(fù)雜的FTL(Flash Translation Layer)處理邏輯,將邏輯塊讀寫(xiě)映射轉(zhuǎn)換成NAND Flash 讀寫(xiě)請(qǐng)求。在大數(shù)據(jù)塊讀寫(xiě)時(shí),對(duì)處理器能力要求不是很高;在小數(shù)據(jù)塊讀寫(xiě)時(shí),對(duì)處理器能力要求極高,處理器能力很容易成為整個(gè)IO系統(tǒng)的性能瓶頸點(diǎn)。
d) SSD控制器架構(gòu)。通常SSD控制器采用SMP或者M(jìn)PP兩種架構(gòu),早期的控制器通常采用MPP架構(gòu),多個(gè)小處理器通過(guò)內(nèi)部高速總線進(jìn)行互連,通過(guò)硬件消息隊(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)存占用大小是盤(pán)容量的0.1%,當(dāng)內(nèi)存容量不夠大時(shí),會(huì)出現(xiàn)映射表?yè)Q入換出的問(wèn)題,影響到性能。
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),通過(guò)溫度檢測(cè)系統(tǒng)來(lái)調(diào)整SSD性能,從而保證系統(tǒng)溫度維持在閾值之內(nèi)。調(diào)整溫度會(huì)犧牲性能,本質(zhì)上就是通過(guò)降低SSD性能來(lái)降溫。因此,當(dāng)環(huán)境溫度過(guò)高時(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ù)布局需要考慮的問(wèn)題。例如,采用數(shù)據(jù)交錯(cuò)的方式在多通道page上進(jìn)行數(shù)據(jù)布局,通過(guò)這種方式可以優(yōu)化順序帶寬。
b) 垃圾回收/wear leveling調(diào)度方法。數(shù)據(jù)回收、wear leveling、data retention等操作會(huì)產(chǎn)生大量的NANDFlash后端流量,后端流量直接反應(yīng)了SSD的寫(xiě)放大系數(shù),也直接體現(xiàn)在后端帶寬的占用。垃圾回收等產(chǎn)生的流量也可以稱之為背景流量,背景流量會(huì)直接影響到前端用戶性能。因此需要對(duì)背景流量和用戶流量之間進(jìn)行合理調(diào)度,使得用戶IO性能達(dá)到最佳。
c) OP預(yù)留。為了解決壞塊、垃圾回收等問(wèn)題,在SSD內(nèi)部預(yù)留了一部分空閑資源,這些資源被稱之為OP(Overprovisioning)。OP越大,GC過(guò)程中平均搬移的數(shù)據(jù)會(huì)越少,背景流量會(huì)越小,因此,寫(xiě)放大降低,用戶IO性能提升。反之,OP越小,性能會(huì)越低,寫(xiě)放大會(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í),軟件處理的開(kāi)銷越大,在bit控制在一定范圍之內(nèi),完全可以通過(guò)硬件進(jìn)行糾正。一旦軟件參與到bit糾正的時(shí)候,會(huì)引入較大的性能開(kāi)銷。
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ì)需要考慮的問(wèn)題。另外,前端IO以及背景IO之間的調(diào)度也是需要權(quán)衡考慮,通過(guò)IO調(diào)度可以達(dá)到最佳性能表現(xiàn)。在IO調(diào)度過(guò)程中,還需要利用NANDFlash的特性,例如Program Suspension,通過(guò)這些特性的利用,最優(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過(guò)程中的數(shù)據(jù)搬移量,決定了后端流量。當(dāng)IO Pattern為全順序時(shí),這種Pattern對(duì)SSD內(nèi)部GC是最為友好的,寫(xiě)放大接近于1,因此具有最好的性能;當(dāng)IO Pattern為小塊隨機(jī)時(shí),會(huì)產(chǎn)生較多的GC搬移數(shù)據(jù)量,因此性能大為下降。在實(shí)際應(yīng)用中,需要通過(guò)本地文件系統(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ī)制失效之后,需要通過(guò)軟件(Firmware)的方式恢復(fù)翻轉(zhuǎn)的bit,軟件恢復(fù)將會(huì)帶來(lái)較大的延遲開(kā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溫度不能超過(guò)上限值,在SSD內(nèi)部設(shè)計(jì)有一套溫度負(fù)反饋機(jī)制,該機(jī)制通過(guò)檢測(cè)的溫度對(duì)NAND Flash后端帶寬進(jìn)行控制,達(dá)到降低溫度的效果。如果一旦溫度負(fù)反饋機(jī)制開(kāi)始工作,那么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的問(wèn)題,采用log-structured的方式記錄數(shù)據(jù)。Log-structured方式引入了GC的問(wèn)題,對(duì)于前端業(yè)務(wù)來(lái)講,GC流量就是背景噪聲。GC流量不是時(shí)時(shí)刻刻存在的,因此,SSD對(duì)外體現(xiàn)性能大幅度波動(dòng)。當(dāng)SSD為空盤(pán)時(shí),性能會(huì)非常好,為最佳性能;當(dāng)SSD被用過(guò)一段時(shí)間之后,性能會(huì)大幅降低。其中GC起到了很重要的作用。企業(yè)級(jí)SSD在發(fā)布Spec的時(shí)候,都會(huì)發(fā)布SSD盤(pán)的穩(wěn)態(tài)性能。在性能測(cè)試的時(shí)候,需要對(duì)盤(pán)進(jìn)行老化預(yù)處理。通常預(yù)處理的方法是順序?qū)憹M盤(pán),然后再隨機(jī)兩遍寫(xiě)盤(pán),預(yù)處理完成之后,再對(duì)盤(pán)進(jìn)行隨機(jī)讀寫(xiě)測(cè)試,得到Spec中定義的值。穩(wěn)態(tài)值基本可以認(rèn)為是盤(pán)的下限性能。
上圖所示是多個(gè)廠商的盤(pán)在空盤(pán)和穩(wěn)態(tài)情況下的性能對(duì)比,由此可見(jiàn)穩(wěn)態(tài)情況和空盤(pán)情況下的性能差距很大。在穩(wěn)態(tài)情況下,SSD內(nèi)部的GC會(huì)全速運(yùn)行,會(huì)占用較多的NAND Flash后端帶寬。背景流量和前端數(shù)據(jù)流的比例也就體現(xiàn)了SSD盤(pán)的寫(xiě)放大系數(shù),寫(xiě)放大系數(shù)越大,背景流量占用帶寬越多,SSD對(duì)外體現(xiàn)的前端性能也就越差。寫(xiě)放大系數(shù)很多因素相關(guān),例如OP、應(yīng)用IO Pattern等。如果應(yīng)用IO Pattern比較好,那么可以降低寫(xiě)放大系數(shù),背景噪聲流就會(huì)減少,前端業(yè)務(wù)的性能會(huì)提升。例如,在SSD完全順序?qū)懭氲那闆r下,寫(xiě)放大系數(shù)可以接近于1,此時(shí)GC產(chǎn)生的數(shù)據(jù)流很少,背景流量基本沒(méi)有,后端帶寬基本被業(yè)務(wù)數(shù)據(jù)流占用,因此對(duì)外體現(xiàn)的性能會(huì)很好。
GC是影響性能的重要因素,除了影響性能之外,GC會(huì)增大寫(xiě)放大,對(duì)SSD的使用壽命產(chǎn)生影響。從軟件層面的角度考慮,可以通過(guò)優(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文章
1679瀏覽量
151840 -
cpu
+關(guān)注
關(guān)注
68文章
11080瀏覽量
217098 -
SSD
+關(guān)注
關(guān)注
21文章
2984瀏覽量
119603 -
磁盤(pán)
+關(guān)注
關(guān)注
1文章
390瀏覽量
25834 -
nvme
+關(guān)注
關(guān)注
0文章
252瀏覽量
23247
原文標(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)先 登錄
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協(xié)議簡(jiǎn)要分析
NVMe協(xié)議研究掃盲
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性能解析
重新定義NVMe SSD外形

評(píng)論