99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

影響SSD性能的因素有哪些 NVMe SSD性能解析

電子設(shè)計 ? 2018-11-05 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NVMe SSD的性能時常捉摸不定,為此我們需要打開SSD的神秘盒子,從各個視角分析SSD性能影響因素,并思考從存儲軟件的角度如何最優(yōu)化使用NVMe SSD,推進數(shù)據(jù)中心閃存化進程。本文從NVMe SSD的性能影響因素進行分析,并給出存儲系統(tǒng)設(shè)計方面的一些思考。

目錄

1 存儲介質(zhì)的變革

2 NVME SSD成為主流

2.1 NAND FLASH介質(zhì)發(fā)展

2.2 軟件層面看SSD——多隊列技術(shù)

2.3 深入理解SSD硬件

3 影響NVME SSD的性能因素

3.1 GC對性能的影響

3.2 IO PATTERN對性能的影響

3.2.1 順序?qū)懭隤attern對SSD性能優(yōu)化的奧秘

3.2.2 讀寫沖突Pattern對性能的影響

4 SSD寫性能分析模型

5 小結(jié)

NVMe SSD的性能時常捉摸不定,為此我們需要打開SSD的神秘盒子,從各個視角分析SSD性能影響因素,并思考從存儲軟件的角度如何最優(yōu)化使用NVMe SSD,推進數(shù)據(jù)中心閃存化進程。本文從NVMe SSD的性能影響因素進行分析,并給出存儲系統(tǒng)設(shè)計方面的一些思考。

1 存儲介質(zhì)的變革

近幾年存儲行業(yè)發(fā)生了翻天覆地的變化,半導(dǎo)體存儲登上了歷史的舞臺。和傳統(tǒng)磁盤存儲介質(zhì)相比,半導(dǎo)體存儲介質(zhì)具有天然的優(yōu)勢。無論在可靠性、性能、功耗等方面都遠遠超越傳統(tǒng)磁盤。目前常用的半導(dǎo)體存儲介質(zhì)是NVMe SSD,采用PCIe接口方式與主機進行交互,大大提升了性能,釋放了存儲介質(zhì)本身的性能。通常NVMe SSD內(nèi)部采用NAND Flash存儲介質(zhì)進行數(shù)據(jù)存儲,該介質(zhì)本身具有讀寫不對稱性,使用壽命等問題。為此在SSD內(nèi)部通過FTL(Flash Translation Layer)解決NAND Flash存在的問題,為上層應(yīng)用軟件呈現(xiàn)和普通磁盤相同的應(yīng)用接口和使用方式。

如上圖所示,隨著半導(dǎo)體存儲介質(zhì)的發(fā)展,計算機系統(tǒng)的IO性能得到了飛速發(fā)展?;诖沤橘|(zhì)進行數(shù)據(jù)存儲的磁盤和處理器CPU之間一直存在著棘手的剪刀差性能鴻溝。隨著存儲介質(zhì)的演進與革新,這種性能剪刀差將不復(fù)存在。從整個系統(tǒng)的角度來看,IO性能瓶頸正從后端磁盤往處理器和網(wǎng)絡(luò)方向轉(zhuǎn)移。如下圖性能數(shù)據(jù)所示,在4KB訪問粒度下,NVMe SSD和15K轉(zhuǎn)速磁盤相比,每秒隨機讀IO處理能力提升了將近5000倍;每秒隨機寫IO處理能力提升了1000多倍。隨著非易失性存儲介質(zhì)的進一步發(fā)展,半導(dǎo)體存儲介質(zhì)的性能將進一步提升,并且會具有更好的IO QoS能力。

存儲介質(zhì)的革命一方面給存儲系統(tǒng)性能提升帶來了福音;另一方面對存儲系統(tǒng)的設(shè)計帶來了諸多挑戰(zhàn)。原有面向磁盤設(shè)計的存儲系統(tǒng)不再適用于新型存儲介質(zhì),面向新型存儲介質(zhì)需要重新設(shè)計更加合理的存儲軟件堆棧,發(fā)揮存儲介質(zhì)的性能,并且可以規(guī)避新介質(zhì)帶來的新問題。面向新型存儲介質(zhì)重構(gòu)存儲軟件棧、重構(gòu)存儲系統(tǒng)是最近幾年存儲領(lǐng)域的熱門技術(shù)話題。

在面向NVMe SSD進行存儲系統(tǒng)設(shè)計時,首先需要對NVMe SSD本身的特性要非常熟悉,需要了解SSD性能的影響因素。在設(shè)計過程中需要針對SSD的特性通過軟件的方式進行優(yōu)化。本文對SSD進行簡要介紹,并從性能影響因素角度出發(fā),對NVMe SSD進行深入剖析,在此基礎(chǔ)上給出閃存存儲設(shè)計方面的一些思考。

2 NVMe SSD成為主流

2.1 NAND Flash介質(zhì)發(fā)展

目前NVMe SSD主流采用的存儲介質(zhì)是NAND Flash。最近幾年NAND Flash技術(shù)快速發(fā)展,主要發(fā)展的思路有兩條:第一,通過3D堆疊的方式增加NAND Flash的存儲密度;第二,通過增加單Cell比特數(shù)來提升NAND Flash的存儲密度。3D NAND Flash已經(jīng)成為SSD標配,目前主流發(fā)布的SSD都會采用3D NAND Flash技術(shù)工藝。從cell的角度來看,目前單個cell可以表示3bit,這就是通常所說的TLC NAND Flash。今年單個cell的bit存儲密度又提升了33%,可以表示4bit,向前演進至QLC NAND Flash。NAND Flash的不斷演進,推動了SSD存儲密度不斷提升。截止到今天,單個3.5寸SSD盤可以做到128TB的容量,遠遠超過了磁盤的容量。下圖是近幾年NAND Flash技術(shù)的發(fā)展、演進過程。

從上圖可以看出,NAND Flash在不斷演進的過程中,一些新的非易失性內(nèi)存技術(shù)也開始發(fā)展。Intel已經(jīng)推出了AEP內(nèi)存存儲介質(zhì),可以預(yù)計,未來將會是非易失性內(nèi)存和閃存共存的半導(dǎo)體存儲時代。

2.2 軟件層面看SSD——多隊列技術(shù)

從軟件接口的角度來看,NVMe SSD和普通的磁盤沒有太多的區(qū)別,在Linux環(huán)境下都是標準塊設(shè)備。由于NVMe SSD采用了最新的NVMe協(xié)議標準,因此從軟件堆棧的角度來看,NVMe SSD的軟件棧簡化了很多。在NVMe標準中,和傳統(tǒng)的SATA/SAS相比,一個重大的差別是引入了多隊列機制,如下圖所示。

何為多隊列技術(shù)?主機(X86 Server)與SSD進行數(shù)據(jù)交互的模型采用“生產(chǎn)者-消費者”模型,采用生產(chǎn)者-消費者隊列進行數(shù)據(jù)交互。在原有的AHCI規(guī)范中,只定義了一個交互隊列,那么主機與HDD之間的數(shù)據(jù)交互只能通過一個隊列通信,多核處理器也只能通過一個隊列與HDD進行數(shù)據(jù)交互。在磁盤存儲時代,由于磁盤是慢速設(shè)備,所以一個隊列也就夠用了。多個處理器核通過一個共享隊列與磁盤進行數(shù)據(jù)交互,雖然處理器之間會存在資源競爭,但是相比磁盤的性能,處理器之間競爭所引入的開銷實在是微乎其微,可以忽略。在磁盤存儲時代,單隊列有其他的好處,一個隊列存在一個IO調(diào)度器,可以很好的保證提交請求的IO順序最優(yōu)化。

和磁盤相比,半導(dǎo)體存儲介質(zhì)具有很高的性能,AHCI原有的規(guī)范不再適用,原有的假設(shè)也已經(jīng)不復(fù)存在,在此背景下NVMe規(guī)范誕生了。NVMe規(guī)范替代了原有的AHCI規(guī)范,并且軟件層面的處理命令也進行了重新定義,不再采用SCSI/ATA命令規(guī)范集。在NVMe時代,外設(shè)和處理器之間的距離更近了,不再需要像SAS一樣的面向連接的存儲通信網(wǎng)絡(luò)。相比于以前的AHCI、SAS等協(xié)議規(guī)范,NVMe規(guī)范是一種非常簡化,面向新型存儲介質(zhì)的協(xié)議規(guī)范。該規(guī)范的推出,將存儲外設(shè)一下子拉到了處理器局部總線上,性能大為提升。并且主機和SSD處理器之間采用多隊列的設(shè)計,適應(yīng)了多核的發(fā)展趨勢,每個處理器核與SSD之間可以采用獨立的硬件Queue Pair進行數(shù)據(jù)交互。

從軟件的角度來看,每個CPU Core都可以創(chuàng)建一對Queue Pair和SSD進行數(shù)據(jù)交互。Queue Pair由Submission Queue與Completion Queue構(gòu)成,通過Submission queue發(fā)送數(shù)據(jù);通過Completion queue接受完成事件。SSD硬件和主機驅(qū)動軟件控制queue的Head與Tail指針完成雙方的數(shù)據(jù)交互。

2.3 深入理解SSD硬件

和磁盤相比,NVMe SSD最大的變化在于存儲介質(zhì)發(fā)生了變化。目前NVMe SSD普遍采用3D NAND Flash作為存儲介質(zhì)。NAND Flash內(nèi)部有多個存儲陣列單元構(gòu)成,采用floating gate或者charge trap的方式存儲電荷,通過存儲電荷的多少來保持數(shù)據(jù)存儲狀態(tài)。由于電容效應(yīng)的存在、磨損老化、操作電壓干擾等問題的影響,NAND Flash天生會存在漏電問題(電荷泄漏),從而導(dǎo)致存儲數(shù)據(jù)發(fā)生變化。因此,從本質(zhì)上講,NAND Flash是一種不可靠介質(zhì),非常容易出現(xiàn)Bit翻轉(zhuǎn)問題。SSD通過控制器和固件程序?qū)⑦@種不可靠的NAND Flash變成了可靠的數(shù)據(jù)存儲介質(zhì)。

為了在這種不可靠介質(zhì)上構(gòu)建可靠存儲,SSD內(nèi)部做了大量工作。在硬件層面,需要通過ECC單元解決經(jīng)常出現(xiàn)的比特翻轉(zhuǎn)問題。每次數(shù)據(jù)存儲的時候,硬件單元需要為存儲的數(shù)據(jù)計算ECC校驗碼;在數(shù)據(jù)讀取的時候,硬件單元會根據(jù)校驗碼恢復(fù)被破壞的bit數(shù)據(jù)。ECC硬件單元集成在SSD控制器內(nèi)部,代表了SSD控制器的能力。在MLC存儲時代,BCH編解碼技術(shù)可以解決問題,4KB數(shù)據(jù)中存在100bit翻轉(zhuǎn)時可以糾正錯誤;在TLC存儲時代,bit錯誤率大為提升,需要采用更高糾錯能力的LDPC編解碼技術(shù),在4KB出現(xiàn)550bit翻轉(zhuǎn)時,LDPC硬解碼仍然可以恢復(fù)數(shù)據(jù)。下圖對比了LDPC硬解碼、BCH以及LDPC軟解碼之間的能力, 從對比結(jié)果可以看出,LDPC軟解碼具有更強的糾錯能力,通常使用在硬解碼失效的情況下。LDPC軟解碼的不足之處在于增加了IO的延遲。

在軟件層面,SSD內(nèi)部設(shè)計了FTL(Flash Translation Layer),該軟件層的設(shè)計思想和log-structured file system設(shè)計思想類似。采用log追加寫的方式記錄數(shù)據(jù),采用LBA至PBA的地址映射表記錄數(shù)據(jù)組織方式。Log-structured系統(tǒng)最大的一個問題就是垃圾回收(GC)。因此,雖然NAND Flash本身具有很高的IO性能,但受限于GC的影響,SSD層面的性能會大受影響,并且存在十分嚴重的IO QoS問題,這也是目前標準NVMe SSD一個很重要的問題。SSD內(nèi)部通過FTL解決了NAND Flash不能inplace write的問題;采用wear leveling算法解決了NAND Flash磨損均衡問題;通過data retention算法解決了NAND Flash長時間存放漏電問題;通過data migration方式解決read diatribe問題。FTL是NAND Flash得以大規(guī)模使用的核心技術(shù),是SSD的重要組成部分。

NAND Flash內(nèi)部本身具有很多并發(fā)單元,如上圖所示,一個NAND Flash芯片由多個Target構(gòu)成,每個Target包含多個Die。每個Die是一個獨立的存儲單元,一個Die由多個Plane構(gòu)成,多個Plane之間共享一套操作總線,多個Plane可以組成一個單元并發(fā)操作,構(gòu)建Multi-plane。一個Plane由若干個Block構(gòu)成,每個Block是一個擦除單元,該單元的大小也決定了SSD軟件層面的GC回收粒度。每個Block由多個page頁構(gòu)成,每個Page是最小寫入(編程)單元,通常大小為16KB。SSD內(nèi)部軟件(固件)需要充分利用這些并發(fā)單元,構(gòu)建高性能的存儲盤。

一塊普通NVMe SSD的物理硬件結(jié)構(gòu)簡單,由大量的NAND Flash構(gòu)成,這些NAND Flash通過SOC(SSD控制器)進行控制,F(xiàn)TL軟件運行在SOC內(nèi)部,并通過多隊列的PCIe總線與主機進行對接。為了提升性能,企業(yè)級SSD需要板載DRAM,DRAM資源一方面可以用來緩存數(shù)據(jù),提升寫性能;另一方面用來緩存FTL映射表。企業(yè)級SSD為了提升性能,通常采用Flat mapping的方式,需要占據(jù)較多的內(nèi)存(0.1%)。內(nèi)存容量的問題也限制了大容量NVMe SSD的發(fā)展,為了解決內(nèi)存問題,目前一種可行的方法是增大sector size。標準NVMe SSD的sector size為4KB,為了進一步增大NVMe SSD的容量,有些廠商已經(jīng)開始采用16KB的sector size。16KB Sector size的普及應(yīng)用,會加速大容量NVMe SSD的推廣。

3 影響NVMe SSD的性能因素

NVMe SSD 廠商Spec給出的性能非常完美,前面也給出了NVMe SSD和磁盤之間的性能對比,NVMe SSD的性能的確比磁盤高很多。但在實際應(yīng)用過程中,NVMe SSD的性能可能沒有想象中的那么好,并且看上去不是特別的穩(wěn)定,找不到完美的規(guī)律。和磁盤介質(zhì)相比,SSD的性能和很多因素相關(guān),分析SSD的性能影響因素,首先需要大體了解SSD構(gòu)成的主要部分。如下圖所示,其主要包括主機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,都會具有不同的性能。

b) 后端通道數(shù)(CE數(shù)量)及總線頻率。后端通道數(shù)決定了并發(fā)NAND Flash的數(shù)量,決定了并發(fā)能力。不同的SSD控制器支持不同數(shù)量的通道數(shù),也決定了SSD的后端吞吐帶寬能力。NAND Flash Channel的總線頻率也決定了訪問Flash的性能。

c) SSD控制器的處理能力。SSD控制器中會運行復(fù)雜的FTL(Flash Translation Layer)處理邏輯,將邏輯塊讀寫映射轉(zhuǎn)換成NAND Flash 讀寫請求。在大數(shù)據(jù)塊讀寫時,對處理器能力要求不是很高;在小數(shù)據(jù)塊讀寫時,對處理器能力要求極高,處理器能力很容易成為整個IO系統(tǒng)的性能瓶頸點。

d) SSD控制器架構(gòu)。通常SSD控制器采用SMP或者MPP兩種架構(gòu),早期的控制器通常采用MPP架構(gòu),多個小處理器通過內(nèi)部高速總線進行互連,通過硬件消息隊列進行通信。內(nèi)存資源作為獨立的外設(shè)供所有的處理器進行共享。這種架構(gòu)和基于消息通信的分布式系統(tǒng)類似。MPP架構(gòu)的很大優(yōu)勢在于性能,但是編程復(fù)雜度較高;SMP架構(gòu)的性能可擴展性取決于軟件,編程簡單,和在x86平臺上編程相似。不同的控制器架構(gòu)會影響到SSD的總體性能,在SSD設(shè)計時,會根據(jù)設(shè)計目標,選擇不同類型的SSD控制器。

e) 內(nèi)存支持容量。為了追求高性能,SSD內(nèi)部的映射資源表會常駐內(nèi)存,映射表的內(nèi)存占用大小是盤容量的0.1%,當內(nèi)存容量不夠大時,會出現(xiàn)映射表換入換出的問題,影響到性能。

f) PCIe的吞吐帶寬能力。PCIe前端帶寬體現(xiàn)了SSD的前端吞吐能力,目前NVMe SSD采用x4 lane的接入方式,上限帶寬為3GB/s,當后端NAND Flash帶寬和處理器能力足夠時,前端PCIe往往會成為性能瓶頸點。NAND Flash具有很高的讀性能,目前來看,SSD的讀性能在很大程度上受限于PCIe總線,因此需要快速推進PCIe4.0標準。

g) 溫度對性能造成影響。在NAND Flash全速運行的情況下,會產(chǎn)生較大的散熱功耗,當溫度高到一定程度時,系統(tǒng)將會處于不正常的工作狀態(tài),為此,SSD內(nèi)部做了控溫系統(tǒng),通過溫度檢測系統(tǒng)來調(diào)整SSD性能,從而保證系統(tǒng)溫度維持在閾值之內(nèi)。調(diào)整溫度會犧牲性能,本質(zhì)上就是通過降低SSD性能來降溫。因此,當環(huán)境溫度過高時,會影響到SSD的性能,觸發(fā)SSD內(nèi)部的溫度控制系統(tǒng),調(diào)節(jié)SSD的性能。

h) 使用壽命對性能造成影響。NAND Flash在不斷擦除使用時,F(xiàn)lash的bit error會不斷上升,錯誤率的提升會影響到SSD的IO性能。

2, 軟件因素

a) 數(shù)據(jù)布局方式。數(shù)據(jù)布局方法需要充分考慮NAND Flash中的并發(fā)單元,如何將IO操作轉(zhuǎn)換成NAND Flash的并發(fā)操作,這是數(shù)據(jù)布局需要考慮的問題。例如,采用數(shù)據(jù)交錯的方式在多通道page上進行數(shù)據(jù)布局,通過這種方式可以優(yōu)化順序帶寬。

b) 垃圾回收/wear leveling調(diào)度方法。數(shù)據(jù)回收、wear leveling、data retention等操作會產(chǎn)生大量的NAND Flash后端流量,后端流量直接反應(yīng)了SSD的寫放大系數(shù),也直接體現(xiàn)在后端帶寬的占用。垃圾回收等產(chǎn)生的流量也可以稱之為背景流量,背景流量會直接影響到前端用戶性能。因此需要對背景流量和用戶流量之間進行合理調(diào)度,使得用戶IO性能達到最佳。

c) OP預(yù)留。為了解決壞塊、垃圾回收等問題,在SSD內(nèi)部預(yù)留了一部分空閑資源,這些資源被稱之為OP(Overprovisioning)。OP越大,GC過程中平均搬移的數(shù)據(jù)會越少,背景流量會越小,因此,寫放大降低,用戶IO性能提升。反之,OP越小,性能會越低,寫放大會越大。在SSD容量較小的時代,為了提升SSD的使用壽命,往往OP都設(shè)置的比較大。

d) Bit error處理影響性能。在SSD內(nèi)部采用多種機制來處理NAND Flash所產(chǎn)生的Bit error。ECC糾錯、read retry、soft LDPC以及RAIN都是用來糾正bit翻轉(zhuǎn)導(dǎo)致的錯誤。當Bit錯誤率增加時,軟件處理的開銷越大,在bit控制在一定范圍之內(nèi),完全可以通過硬件進行糾正。一旦軟件參與到bit糾正的時候,會引入較大的性能開銷。

e) FTL算法。FTL算法會影響到SSD性能,對于不同用途的SSD,F(xiàn)TL的設(shè)計與實現(xiàn)是完全不同的,企業(yè)級SSD為了追求高性能,通常采用Flat mapping的方式,采用大內(nèi)存緩存映射表;消費級SSD為了追求低成本,通常采用元數(shù)據(jù)換入換出的方式,并且采用pSLC+TLC的組合方式進行分層存儲,也可以采用主機端內(nèi)存緩存元數(shù)據(jù)信息,但是這些方式都會影響到性能。

f) IO調(diào)度算法。NAND Flash具有嚴重的性能不對稱性,F(xiàn)lash Erase和Program具有ms級延遲,F(xiàn)lash read的延遲在us級。因此,如何調(diào)度Erase、Program以及read是SSD后端設(shè)計需要考慮的問題。另外,前端IO以及背景IO之間的調(diào)度也是需要權(quán)衡考慮,通過IO調(diào)度可以達到最佳性能表現(xiàn)。在IO調(diào)度過程中,還需要利用NAND Flash的特性,例如Program Suspension,通過這些特性的利用,最優(yōu)化SSD前端IO性能。

g) 驅(qū)動軟件。驅(qū)動軟件運行在主機端,通常分為內(nèi)核態(tài)和用戶態(tài)兩大類,內(nèi)核態(tài)驅(qū)動會消耗較多的CPU資源,存在頻繁上下文切換、中斷處理,因此性能較低;用戶態(tài)驅(qū)動通常采用Polling IO處理模式,去除了上下文切換,可以充分提升CPU效率,提升整體IO性能。

h) IO Pattern對性能產(chǎn)生影響。IO Pattern影響了SSD內(nèi)部的GC數(shù)據(jù)布局,間接影響了GC過程中的數(shù)據(jù)搬移量,決定了后端流量。當IO Pattern為全順序時,這種Pattern對SSD內(nèi)部GC是最為友好的,寫放大接近于1,因此具有最好的性能;當IO Pattern為小塊隨機時,會產(chǎn)生較多的GC搬移數(shù)據(jù)量,因此性能大為下降。在實際應(yīng)用中,需要通過本地文件系統(tǒng)最優(yōu)化IO Pattern,獲取最佳性能。

3, 客觀因素

a) 使用時間越長會導(dǎo)致SSD性能變差。使用時間變長之后,SSD內(nèi)部NAND Flash的磨損會加重,NAND Flash磨損變大之后會導(dǎo)致bit錯誤率提升。在SSD內(nèi)部存在一套完整的bit錯誤恢復(fù)機制,由硬件和軟件兩大部分構(gòu)成。當bit錯誤率達到一定程度之后,硬件機制將會失效。硬件機制失效之后,需要通過軟件(Firmware)的方式恢復(fù)翻轉(zhuǎn)的bit,軟件恢復(fù)將會帶來較大的延遲開銷,因此會影響到SSD對外表現(xiàn)的性能。在有些情況下,如果一塊SSD在掉電情況下放置一段時間之后,也可能會導(dǎo)致性能變差,原因在于SSD內(nèi)部NAND Flash中存儲電荷的漏電,放置一段時間之后導(dǎo)致bit錯誤率增加,從而影響性能。SSD的性能和時間相關(guān),本質(zhì)上還是與NAND Flash的比特錯誤率相關(guān)。

b) 環(huán)境溫度也會對性能造成影響。為了控制SSD溫度不能超過上限值,在SSD內(nèi)部設(shè)計有一套溫度負反饋機制,該機制通過檢測的溫度對NAND Flash后端帶寬進行控制,達到降低溫度的效果。如果一旦溫度負反饋機制開始工作,那么NAND Flash后端帶寬將會受到限制,從而影響前端應(yīng)用IO的性能。

下面從軟件的角度出發(fā),重點闡述GC以及IO Pattern對SSD性能的影響。

3.1 GC對性能的影響

SSD內(nèi)部有一個非常厚重的軟件層,該軟件層用來解決NAND Flash的問題,采用log-structured的方式記錄數(shù)據(jù)。Log-structured方式引入了GC的問題,對于前端業(yè)務(wù)來講,GC流量就是背景噪聲。GC流量不是時時刻刻存在的,因此,SSD對外體現(xiàn)性能大幅度波動。當SSD為空盤時,性能會非常好,為最佳性能;當SSD被用過一段時間之后,性能會大幅降低。其中GC起到了很重要的作用。企業(yè)級SSD在發(fā)布Spec的時候,都會發(fā)布SSD盤的穩(wěn)態(tài)性能。在性能測試的時候,需要對盤進行老化預(yù)處理。通常預(yù)處理的方法是順序?qū)憹M盤,然后再隨機兩遍寫盤,預(yù)處理完成之后,再對盤進行隨機讀寫測試,得到Spec中定義的值。穩(wěn)態(tài)值基本可以認為是盤的下限性能。

上圖所示是多個廠商的盤在空盤和穩(wěn)態(tài)情況下的性能對比,由此可見穩(wěn)態(tài)情況和空盤情況下的性能差距很大。在穩(wěn)態(tài)情況下,SSD內(nèi)部的GC會全速運行,會占用較多的NAND Flash后端帶寬。背景流量和前端數(shù)據(jù)流的比例也就體現(xiàn)了SSD盤的寫放大系數(shù),寫放大系數(shù)越大,背景流量占用帶寬越多,SSD對外體現(xiàn)的前端性能也就越差。寫放大系數(shù)很多因素相關(guān),例如OP、應(yīng)用IO Pattern等。如果應(yīng)用IO Pattern比較好,那么可以降低寫放大系數(shù),背景噪聲流就會減少,前端業(yè)務(wù)的性能會提升。例如,在SSD完全順序?qū)懭氲那闆r下,寫放大系數(shù)可以接近于1,此時GC產(chǎn)生的數(shù)據(jù)流很少,背景流量基本沒有,后端帶寬基本被業(yè)務(wù)數(shù)據(jù)流占用,因此對外體現(xiàn)的性能會很好。

GC是影響性能的重要因素,除了影響性能之外,GC會增大寫放大,對SSD的使用壽命產(chǎn)生影響。從軟件層面的角度考慮,可以通過優(yōu)化應(yīng)用IO Pattern的方式優(yōu)化SSD內(nèi)部GC,從而進一步提升SSD的性能,優(yōu)化使用壽命。對于下一代更為廉價的QLC SSD介質(zhì),就需要采用這種優(yōu)化思路,否則無法很好的滿足實際業(yè)務(wù)的應(yīng)用需求。

3.2 IO Pattern對性能的影響

IO Pattern會對SSD的性能產(chǎn)生嚴重影響,主要表現(xiàn)在如下幾個方面:

1, 不同的IO Pattern會產(chǎn)生不同的寫放大系數(shù),不同的寫放大系數(shù)占用后端NAND Flash帶寬不同。當前端應(yīng)用對SSD采用完全順序的方式進行寫入時,此時是最佳的IO Pattern,對于SSD而言寫放大系數(shù)接近1,SSD內(nèi)部的背景流量基本可以忽略,前端性能達到最佳。在實際應(yīng)用中,很難采用這種完全順序的數(shù)據(jù)寫模型,但可以通過優(yōu)化逼近順序?qū)懭搿?/p>

2, 不同請求大小的IO之間會產(chǎn)生干擾;讀寫請求之間會產(chǎn)生干擾。小請求會受到大請求的干擾,從而導(dǎo)致小請求的延遲增加,這個比較容易理解,在HDD上同樣會存在這種情況。由于NAND Flash介質(zhì)存在嚴重的讀寫不對稱性,因此讀寫請求之間也會互相干擾,尤其是寫請求對讀請求產(chǎn)生嚴重的性能影響。

3.2.1 順序?qū)懭隤attern對SSD性能優(yōu)化的奧秘

在針對閃存系統(tǒng)的設(shè)計中,需要考慮IO Pattern對性能產(chǎn)生的影響,通過軟件的優(yōu)化來最優(yōu)化SSD的使用。在實際應(yīng)用中完全順序?qū)懭氲腎O Pattern基本上是不存在的,除非用作順序?qū)懭氲娜罩驹O(shè)備。對于順序?qū)懭雰?yōu)化性能這個結(jié)論,需要從SSD內(nèi)部實現(xiàn)來深入理解,知道根源之后,可以采用合理的方式來逼近順序?qū)懭氲哪J?,從而最?yōu)化SSD的性能。

SSD內(nèi)部采用log-structured的數(shù)據(jù)記錄模式,并發(fā)寫入的IO數(shù)據(jù)按照時間順序匯聚成大數(shù)據(jù)塊,合并形成的大數(shù)據(jù)塊以Page stripe的方式寫入NAND Flash。多個Page stripe會被寫入同一個GC單元(Chunk or Superblock),當一個GC單元被寫完成之后,該GC單元進入sealed模式(只讀),分配新的GC單元寫新的數(shù)據(jù)。在這種模式下,如果多個業(yè)務(wù)的數(shù)據(jù)流并發(fā)隨機的往SSD中寫入數(shù)據(jù),那么多個應(yīng)用的數(shù)據(jù)就會交錯在一起被存儲到同一個GC單元中。如下圖所示,不同應(yīng)用的數(shù)據(jù)生命周期不同,當需要回收一個GC單元的時候,會存在大量數(shù)據(jù)的遷移,這些遷移的數(shù)據(jù)就會形成寫放大,影響性能和使用壽命。

不同應(yīng)用的數(shù)據(jù)交錯存儲在同一個GC單元,本質(zhì)上就是不同冷熱程度的數(shù)據(jù)交錯存儲的問題。從GC的角度來講,相同冷熱程度的數(shù)據(jù)存儲在同一個GC單元上是最佳的,為此三星推出了Multi-stream SSD,該SSD就允許不同應(yīng)用的數(shù)據(jù)存儲到不同的Stream單元(GC單元),從而提升GC效率,降低寫放大。Multi-stream是一種顯式的設(shè)計方式,需要更改SSD接口以及應(yīng)用程序。從IO Pattern的角度考慮,可以通過順序大塊的方式也可以逼近類似的效果。假設(shè)操作SSD只存在一個線程,不同的應(yīng)用都采用大數(shù)據(jù)塊的方式寫入數(shù)據(jù),那么在一個時間片段內(nèi)只存在一個應(yīng)用的數(shù)據(jù)往SSD中寫入數(shù)據(jù),那么在一個GC單元內(nèi)存儲的數(shù)據(jù)會變得有序和規(guī)則。如下圖所示,采用上述方法之后,一個GC單元內(nèi)存儲的數(shù)據(jù)將會變得冷熱均勻。在GC過程中會大大減少數(shù)據(jù)的搬移,從而減少背景流量。

在實際應(yīng)用中,上述IO Pattern很難產(chǎn)生,主要是應(yīng)用很難產(chǎn)生非常大粒度的請求。為此在存儲系統(tǒng)設(shè)計過程中,可以引入Optane高性能存儲介質(zhì)作為SSD的寫緩存。前端不同業(yè)務(wù)的寫請求首先寫到Optane持久化介質(zhì)中,在Optane持久化介質(zhì)中聚合形成大數(shù)據(jù)塊。一旦聚合形成大數(shù)據(jù)塊之后,再寫入SSD,通過這種方式可以最大程度的逼近SSD順序?qū)懭脒^程,提升SSD的性能和使用壽命。

3.2.2 讀寫沖突Pattern對性能的影響

如下圖所示,NAND Flash介質(zhì)具有很強的讀寫不對稱性。Block Erase和Page Program的延遲會遠遠高于Page Read所耗費的時間。那么在這種情況下,如果read請求在同一個Flash Channel上和Erase、Program操作沖突,那么read操作將會被Erase/program操作影響。這是在讀寫混合情況下,讀性能會受到影響的重要因素。

在實際應(yīng)用過程中,經(jīng)常會發(fā)現(xiàn)應(yīng)用的測試結(jié)果和SSD Spec對不上,會比Spec給出的值要來的低。Spec給出的值通常為純讀或者純寫情況下的性能指標,在讀寫混合的場景下,性能表現(xiàn)和Spec給出的值就會存在非常大的出入。

對于不同的SSD,通過測試可以發(fā)現(xiàn)在讀寫混合情況下的性能表現(xiàn)差距會比較大。在SSD處于穩(wěn)態(tài)條件下,應(yīng)用隨機讀的情況下,如果引入一個壓力不是很大的順序?qū)?,那么會發(fā)現(xiàn)不同SSD的抗干擾能力是不同的。有些SSD在寫干擾的情況下,讀性能會急劇下降,延遲快速上升,QoS性能得不到保證。下圖是兩個SSD在相同情況下的測試結(jié)果,從結(jié)果來看,有些SSD的抗寫干擾能力比較強,讀性能不會急劇下降。

為什么有些SSD會具備比較強的抗寫干擾能力呢?其中的奧秘就在于SSD內(nèi)部的IO調(diào)度器。IO調(diào)度器會對write、read 和Erase請求進行調(diào)度處理,該調(diào)度器算法的不同就會表現(xiàn)出不同的抗干擾能力。目前很多NAND Flash可以支持Program/Erase Suspension的功能,在IO調(diào)度處理的過程中,為了提升讀性能,降低讀請求延遲,可以采用Suspension命令對Program/Erase命令暫停,對read請求優(yōu)先調(diào)度處理。

讀寫沖突是SSD內(nèi)部影響IO QoS的重要因素。在SSD內(nèi)部通過IO調(diào)度器的優(yōu)化可以提升SSD性能的QoS能力,但是還是無法與存儲軟件結(jié)合來協(xié)同優(yōu)化QoS。為了達到最佳的SSD性能QoS,需要關(guān)注Openchannel技術(shù)。Openchannel其實只是一種軟硬件層次劃分的方法,通常來講,SSD內(nèi)部的邏輯可以劃分為面向NAND資源的物理資源管理層以及面向數(shù)據(jù)布局的資源映射層。物理資源管理由于和NAND Flash密切相關(guān),因此可以放到SSD內(nèi)部。傳統(tǒng)的NVMe SSD需要對外暴露標準的塊設(shè)備接口,因此需要在SSD內(nèi)部實現(xiàn)資源映射層。從端至端的角度來看,資源映射層可以與存儲軟件層結(jié)合起來,為此將資源映射層從SSD內(nèi)部剝離出來,集成至存儲軟件層。一旦資源映射層從SSD內(nèi)部剝離之后,需要定義一個新的SSD接口,其中的一種接口方式就是Openchannel。

盤古分布式存儲針對SSD QoS問題進行了大量研究,提出了Object SSD的概念,Object SSD也是一種新的SSD接口方式,其采用對象方式對SSD進行讀寫刪操作,每個對象采用Append write操作方式。這種接口方式可以很好的與分布式存儲無縫結(jié)合。采用Object SSD之后,SSD內(nèi)部的大量工作被簡化,IO的調(diào)度會更加靈活,存儲軟件與SSD協(xié)同配合,達到IO性能的最優(yōu)化,以及QoS的最大化。

4 SSD寫性能分析模型

SSD內(nèi)部的數(shù)據(jù)流分成兩大類,一類為前端用戶數(shù)據(jù)流;另一類為內(nèi)部背景數(shù)據(jù)流。前端用戶數(shù)據(jù)流和背景數(shù)據(jù)流會匯聚成NAND Flash后端流量。當背景數(shù)據(jù)流不存在時,NAND Flash帶寬會被用戶數(shù)據(jù)流全部占據(jù),此時SSD對外表現(xiàn)的性能達到最佳。當SSD具有較大寫放大時,會產(chǎn)生很大的背景數(shù)據(jù)流,背景流會搶占NAND Flash帶寬,導(dǎo)致前端用戶IO性能降低。為了穩(wěn)定前端IO性能,在SSD內(nèi)部的調(diào)度器會均衡前端和背景流量,保證前端性能的一致性。背景流量的占比反應(yīng)了SSD的寫放大系數(shù),因此,站在NAND Flash帶寬占用的角度可以分析SSD在穩(wěn)態(tài)情況下的性能。

在此,假設(shè)寫放大系數(shù)為WA,順序?qū)懬闆r下的總帶寬數(shù)為B,用戶寫入流量(隨機寫入流量)為U。那么,由于GC寫放大造成的背景流量為:(WA - 1)* U

寫放大流量為一讀一寫,都會占用帶寬,因此,總帶寬可以描述為:

2 (WA - 1) U + U = B

因此,可以得到:

U = B / (2(WA - 1) + 1) = B / (2 WA - 1)

上述公式表述了前端用戶流量和NAND Flash總帶寬、寫放大系數(shù)之間的關(guān)系。

根據(jù)Spec,Intel P4500的順序?qū)憥挒?.9GB/s,按照上述公式,在隨機訪問模式下的帶寬為: 1900 / (2 * 4 - 1) = 270MB/s,IOPS為67K,根據(jù)該公式推導(dǎo)的結(jié)果和Spec給出的結(jié)果相同。

下圖是Intel P4500和Samsung PM963隨機寫延遲和推導(dǎo)公式之間的對比。結(jié)果非常吻合。

由此可以推出,隨機寫性能由SSD內(nèi)部后端帶寬以及寫放大系數(shù)來決定。因此,從存儲軟件的角度出發(fā),我們可以通過優(yōu)化IO Pattern的方式減小寫放大系數(shù),從而可以提升SSD的隨機寫性能。

5 小結(jié)

閃存存儲技術(shù)正在飛速發(fā)展,閃存介質(zhì)、SSD控制器、存儲系統(tǒng)軟件、存儲硬件平臺都在圍繞閃存日新月異的發(fā)展。閃存給數(shù)據(jù)存儲帶來的價值顯而易見,數(shù)據(jù)中心閃存化是重要發(fā)展趨勢。NVMe SSD性能受到很多因素的影響,在軟件層面可以通過IO Pattern優(yōu)化SSD的性能,使得整體存儲系統(tǒng)的性能達到最佳。

作者:云棲社區(qū) 云攻略小攻

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    21

    文章

    2984

    瀏覽量

    119629
  • nvme
    +關(guān)注

    關(guān)注

    0

    文章

    252

    瀏覽量

    23248
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    NVMe SSD性能影響因素分析

    NVMe SSD 廠商Spec給出的性能非常完美,前面也給出了NVMe SSD和磁盤之間的性能
    的頭像 發(fā)表于 11-13 11:39 ?1733次閱讀
    <b class='flag-5'>NVMe</b> <b class='flag-5'>SSD</b><b class='flag-5'>性能</b>影響<b class='flag-5'>因素</b>分析

    NVMe SSD性能影響因素一探究竟(下)

    IO Pattern會對SSD性能產(chǎn)生嚴重影響,主要表現(xiàn)在如下幾個方面
    的頭像 發(fā)表于 12-09 11:38 ?2135次閱讀
    <b class='flag-5'>NVMe</b> <b class='flag-5'>SSD</b><b class='flag-5'>性能</b>影響<b class='flag-5'>因素</b>一探究竟(下)

    Xilinx FPGA NVMe主機控制器IP,高性能版本介紹應(yīng)用

    ,從而可實現(xiàn)更高存儲性能和存儲容量。無需CPU,NVMe Host Controller IP自動執(zhí)行對PCIe SSD的PCIe設(shè)備枚舉和配置、NVMe控制器識別和初始化、
    發(fā)表于 03-09 13:56

    Xilinx FPGA高性能NVMe SSD主機控制器,NVMe Host Controller IP

    ,從而可實現(xiàn)更高存儲性能和存儲容量。無需CPU,NVMe Host Controller IP自動執(zhí)行對PCIe SSD的PCIe設(shè)備枚舉和配置、NVMe控制器識別和初始化、
    發(fā)表于 03-27 17:23

    性能NVMe主機控制器,Xilinx FPGA NVMe Host Accelerator IP

    ,從而可實現(xiàn)更高存儲性能和存儲容量。無需CPU,NVMe Host Controller IP自動執(zhí)行對PCIe SSD的PCIe設(shè)備枚舉和配置、NVMe控制器識別和初始化、
    發(fā)表于 04-10 22:55

    NVMe協(xié)議研究掃盲

    的不斷發(fā)展,這些接口協(xié)議已成為關(guān)鍵的性能瓶頸。為了解決這一問題,存儲供應(yīng)商制定了一種新的接口規(guī)范,即NVMe協(xié)議。 NVMe協(xié)議必要性 NVMe協(xié)議是專為PCIe接口的
    發(fā)表于 06-02 23:28

    NVMe P4600的速度部分低于SATA SSD?

    ,三星SATA SSD如何能夠勝過英特爾NVMe SSD(讀取速度)?P4600使用最新的固件(使用當前的數(shù)據(jù)中心工具)進行更新,并使用最新的英特爾驅(qū)動程序運行(Windows驅(qū)動程序甚至更慢?。┻@是正常
    發(fā)表于 11-28 14:57

    在Xilinx ZCU102評估套件上啟用NVMe SSD接口

    無線網(wǎng)絡(luò),下一代高級駕駛員輔助系統(tǒng)(ADAS)和工業(yè)物聯(lián)網(wǎng)(IIoT)解決方案。無論如何,對于需要高性能和高可靠性的外部數(shù)據(jù)存儲的應(yīng)用程序(例如NVMe SSD驅(qū)動器),需要利用GTH收發(fā)器
    發(fā)表于 09-03 16:07

    如何為工業(yè)應(yīng)用設(shè)計NVMe SSD

    RK3399核心板有哪些應(yīng)用?如何為工業(yè)應(yīng)用設(shè)計NVMe SSD呢?
    發(fā)表于 03-07 06:12

    西部數(shù)據(jù)推出新款高性能NVMe SSD

    2018年5月22日—西部數(shù)據(jù)推出新款高性能NVMe SSD,Western Digital Black 3D NVMe SSD。這款固態(tài)硬
    發(fā)表于 05-24 18:12 ?1914次閱讀

    NVMe SSD與SATA SSD性能對比

    老說NVMe SSD性能是SATA SSD的四倍,那到底實際體驗是怎樣的呢?
    的頭像 發(fā)表于 07-27 09:43 ?3.7w次閱讀

    重新定義NVMe SSD外形

    NVMe NVM Express(NVMeSSD在企業(yè)和數(shù)據(jù)中心應(yīng)用中的部署大量涌現(xiàn),但同時出現(xiàn)的一些復(fù)雜狀況讓這些部署無法發(fā)揮出全部優(yōu)勢。今天的文章我們就來說說NVMe
    的頭像 發(fā)表于 09-23 14:26 ?3158次閱讀
    重新定義<b class='flag-5'>NVMe</b> <b class='flag-5'>SSD</b>外形

    西部數(shù)據(jù)推出高性能、輕薄低功耗的PCIe Gen4 NVMe SSD

    作為全球存儲解決方案供應(yīng)商,推出高性能、輕薄低功耗的PCIe? Gen4 NVMe? SSD
    的頭像 發(fā)表于 05-27 11:00 ?4343次閱讀

    浪潮NVMe SSD性能

    本次測試采用浪潮服務(wù)器 SA5112M6,磁盤采用三個節(jié)點每個節(jié)點八塊浪潮 INSPUR-NS8610G1U320 NVMe進行測試,此次采用的NVMe SSD具有極高的性能,產(chǎn)品4K
    發(fā)表于 08-03 10:25 ?2448次閱讀

    浪潮自研NVMe SSD技術(shù)解析

    NVMe SSD的標準時面向PCIe SSD的,使用原生PCIe通道與CPU直連可以免去SATA與SAS接口的外置控制器(PCH)與CPU通信所帶來的延時。
    發(fā)表于 09-09 12:07 ?2646次閱讀