3.2 IO Pattern對(duì)性能的影響
IO Pattern會(huì)對(duì)SSD的性能產(chǎn)生嚴(yán)重影響,主要表現(xiàn)在如下幾個(gè)方面:
1, 不同的IO Pattern會(huì)產(chǎn)生不同的寫(xiě)放大系數(shù),不同的寫(xiě)放大系數(shù)占用后端NAND Flash帶寬不同。當(dāng)前端應(yīng)用對(duì)SSD采用完全順序的方式進(jìn)行寫(xiě)入時(shí),此時(shí)是最佳的IO Pattern,對(duì)于SSD而言寫(xiě)放大系數(shù)接近1,SSD內(nèi)部的背景流量基本可以忽略,前端性能達(dá)到最佳。在實(shí)際應(yīng)用中,很難采用這種完全順序的數(shù)據(jù)寫(xiě)模型,但可以通過(guò)優(yōu)化逼近順序?qū)懭搿?/p>
2, 不同請(qǐng)求大小的IO之間會(huì)產(chǎn)生干擾;讀寫(xiě)請(qǐng)求之間會(huì)產(chǎn)生干擾。小請(qǐng)求會(huì)受到大請(qǐng)求的干擾,從而導(dǎo)致小請(qǐng)求的延遲增加,這個(gè)比較容易理解,在HDD上同樣會(huì)存在這種情況。由于NAND Flash介質(zhì)存在嚴(yán)重的讀寫(xiě)不對(duì)稱性,因此讀寫(xiě)請(qǐng)求之間也會(huì)互相干擾,尤其是寫(xiě)請(qǐng)求對(duì)讀請(qǐng)求產(chǎn)生嚴(yán)重的性能影響。
3.2.1 順序?qū)懭隤attern對(duì)SSD性能優(yōu)化的奧秘
在針對(duì)閃存系統(tǒng)的設(shè)計(jì)中,需要考慮IO Pattern對(duì)性能產(chǎn)生的影響,通過(guò)軟件的優(yōu)化來(lái)最優(yōu)化SSD的使用。在實(shí)際應(yīng)用中完全順序?qū)懭氲腎O Pattern基本上是不存在的,除非用作順序?qū)懭氲娜罩驹O(shè)備。對(duì)于順序?qū)懭雰?yōu)化性能這個(gè)結(jié)論,需要從SSD內(nèi)部實(shí)現(xiàn)來(lái)深入理解,知道根源之后,可以采用合理的方式來(lái)逼近順序?qū)懭氲哪J?,從而最?yōu)化SSD的性能。
SSD內(nèi)部采用log-structured的數(shù)據(jù)記錄模式,并發(fā)寫(xiě)入的IO數(shù)據(jù)按照時(shí)間順序匯聚成大數(shù)據(jù)塊,合并形成的大數(shù)據(jù)塊以Page stripe的方式寫(xiě)入NAND Flash。多個(gè)Page stripe會(huì)被寫(xiě)入同一個(gè)GC單元(Chunk orSuperblock),當(dāng)一個(gè)GC單元被寫(xiě)完成之后,該GC單元進(jìn)入sealed模式(只讀),分配新的GC單元寫(xiě)新的數(shù)據(jù)。在這種模式下,如果多個(gè)業(yè)務(wù)的數(shù)據(jù)流并發(fā)隨機(jī)地往SSD中寫(xiě)入數(shù)據(jù),那么多個(gè)應(yīng)用的數(shù)據(jù)就會(huì)交錯(cuò)在一起被存儲(chǔ)到同一個(gè)GC單元中。如下圖所示,不同應(yīng)用的數(shù)據(jù)生命周期不同,當(dāng)需要回收一個(gè)GC單元的時(shí)候,會(huì)存在大量數(shù)據(jù)的遷移,這些遷移的數(shù)據(jù)就會(huì)形成寫(xiě)放大,影響性能和使用壽命。
不同應(yīng)用的數(shù)據(jù)交錯(cuò)存儲(chǔ)在同一個(gè)GC單元,本質(zhì)上就是不同冷熱程度的數(shù)據(jù)交錯(cuò)存儲(chǔ)的問(wèn)題。從GC的角度來(lái)講,相同冷熱程度的數(shù)據(jù)存儲(chǔ)在同一個(gè)GC單元上是最佳的,為此三星推出了Multi-stream SSD,該SSD就允許不同應(yīng)用的數(shù)據(jù)存儲(chǔ)到不同的Stream單元(GC單元),從而提升GC效率,降低寫(xiě)放大。Multi-stream是一種顯式的設(shè)計(jì)方式,需要更改SSD接口以及應(yīng)用程序。
從IO Pattern的角度考慮,可以通過(guò)順序大塊的方式也可以逼近類似的效果。假設(shè)操作SSD只存在一個(gè)線程,不同的應(yīng)用都采用大數(shù)據(jù)塊的方式寫(xiě)入數(shù)據(jù),那么在一個(gè)時(shí)間片段內(nèi)只存在一個(gè)應(yīng)用的數(shù)據(jù)往SSD中寫(xiě)入數(shù)據(jù),那么在一個(gè)GC單元內(nèi)存儲(chǔ)的數(shù)據(jù)會(huì)變得有序和規(guī)則。如下圖所示,采用上述方法之后,一個(gè)GC單元內(nèi)存儲(chǔ)的數(shù)據(jù)將會(huì)變得冷熱均勻。在GC過(guò)程中會(huì)大大減少數(shù)據(jù)的搬移,從而減少背景流量。
在實(shí)際應(yīng)用中,上述IO Pattern很難產(chǎn)生,主要是應(yīng)用很難產(chǎn)生非常大粒度的請(qǐng)求。為此在存儲(chǔ)系統(tǒng)設(shè)計(jì)過(guò)程中,可以引入Optane高性能存儲(chǔ)介質(zhì)作為SSD的寫(xiě)緩存。前端不同業(yè)務(wù)的寫(xiě)請(qǐng)求首先寫(xiě)到Optane持久化介質(zhì)中,在Optane持久化介質(zhì)中聚合形成大數(shù)據(jù)塊。一旦聚合形成大數(shù)據(jù)塊之后,再寫(xiě)入SSD,通過(guò)這種方式可以最大程度地逼近SSD順序?qū)懭脒^(guò)程,提升SSD的性能和使用壽命。
3.2.2 讀寫(xiě)沖突Pattern對(duì)性能的影響
如下圖所示,NAND Flash介質(zhì)具有很強(qiáng)的讀寫(xiě)不對(duì)稱性。Block Erase和Page Program的延遲會(huì)遠(yuǎn)遠(yuǎn)高于Page Read所耗費(fèi)的時(shí)間。那么在這種情況下,如果read請(qǐng)求在同一個(gè)Flash Channel上和Erase、Program操作沖突,那么read操作將會(huì)被Erase/program操作影響。這是在讀寫(xiě)混合情況下,讀性能會(huì)受到影響的重要因素。
在實(shí)際應(yīng)用過(guò)程中,經(jīng)常會(huì)發(fā)現(xiàn)應(yīng)用的測(cè)試結(jié)果和SSD Spec對(duì)不上,會(huì)比Spec給出的值要來(lái)的低。Spec給出的值通常為純讀或者純寫(xiě)情況下的性能指標(biāo),在讀寫(xiě)混合的場(chǎng)景下,性能表現(xiàn)和Spec給出的值就會(huì)存在非常大的出入。
對(duì)于不同的SSD,通過(guò)測(cè)試可以發(fā)現(xiàn)在讀寫(xiě)混合情況下的性能表現(xiàn)差距會(huì)比較大。在SSD處于穩(wěn)態(tài)條件下,應(yīng)用隨機(jī)讀的情況下,如果引入一個(gè)壓力不是很大的順序?qū)?,那么?huì)發(fā)現(xiàn)不同SSD的抗干擾能力是不同的。有些SSD在寫(xiě)干擾的情況下,讀性能會(huì)急劇下降,延遲快速上升,QoS性能得不到保證。下圖是兩個(gè)SSD在相同情況下的測(cè)試結(jié)果,從結(jié)果來(lái)看,有些SSD的抗寫(xiě)干擾能力比較強(qiáng),讀性能不會(huì)急劇下降。
為什么有些SSD會(huì)具備比較強(qiáng)的抗寫(xiě)干擾能力呢?其中的奧秘就在于SSD內(nèi)部的IO調(diào)度器。IO調(diào)度器會(huì)對(duì)write、read 和Erase請(qǐng)求進(jìn)行調(diào)度處理,該調(diào)度器算法的不同就會(huì)表現(xiàn)出不同的抗干擾能力。目前很多NANDFlash可以支持Program/Erase Suspension的功能,在IO調(diào)度處理的過(guò)程中,為了提升讀性能,降低讀請(qǐng)求延遲,可以采用Suspension命令對(duì)Program/Erase命令暫停,對(duì)read請(qǐng)求優(yōu)先調(diào)度處理。
讀寫(xiě)沖突是SSD內(nèi)部影響IO QoS的重要因素。在SSD內(nèi)部通過(guò)IO調(diào)度器的優(yōu)化可以提升SSD性能的QoS能力,但是還是無(wú)法與存儲(chǔ)軟件結(jié)合來(lái)協(xié)同優(yōu)化QoS。為了達(dá)到最佳的SSD性能QoS,需要關(guān)注Openchannel技術(shù)。Openchannel其實(shí)只是一種軟硬件層次劃分的方法,通常來(lái)講,SSD內(nèi)部的邏輯可以劃分為面向NAND資源的物理資源管理層以及面向數(shù)據(jù)布局的資源映射層。物理資源管理由于和NAND Flash密切相關(guān),因此可以放到SSD內(nèi)部。
傳統(tǒng)的NVMe SSD需要對(duì)外暴露標(biāo)準(zhǔn)的塊設(shè)備接口,因此需要在SSD內(nèi)部實(shí)現(xiàn)資源映射層。從端至端的角度來(lái)看,資源映射層可以與存儲(chǔ)軟件層結(jié)合起來(lái),為此將資源映射層從SSD內(nèi)部剝離出來(lái),集成至存儲(chǔ)軟件層。一旦資源映射層從SSD內(nèi)部剝離之后,需要定義一個(gè)新的SSD接口,其中的一種接口方式就是Openchannel。
盤古分布式存儲(chǔ)針對(duì)SSD QoS問(wèn)題進(jìn)行了大量研究,提出了Object SSD的概念,Object SSD也是一種新的SSD接口方式,其采用對(duì)象方式對(duì)SSD進(jìn)行讀寫(xiě)刪操作,每個(gè)對(duì)象采用Append write操作方式。這種接口方式可以很好的與分布式存儲(chǔ)無(wú)縫結(jié)合。采用Object SSD之后,SSD內(nèi)部的大量工作被簡(jiǎn)化,IO的調(diào)度會(huì)更加靈活,存儲(chǔ)軟件與SSD協(xié)同配合,達(dá)到IO性能的最優(yōu)化,以及QoS的最大化。
4 SSD寫(xiě)性能分析模型
SSD內(nèi)部的數(shù)據(jù)流分成兩大類,一類為前端用戶數(shù)據(jù)流;另一類為內(nèi)部背景數(shù)據(jù)流。前端用戶數(shù)據(jù)流和背景數(shù)據(jù)流會(huì)匯聚成NAND Flash后端流量。當(dāng)背景數(shù)據(jù)流不存在時(shí),NAND Flash帶寬會(huì)被用戶數(shù)據(jù)流全部占據(jù),此時(shí)SSD對(duì)外表現(xiàn)的性能達(dá)到最佳。當(dāng)SSD具有較大寫(xiě)放大時(shí),會(huì)產(chǎn)生很大的背景數(shù)據(jù)流,背景流會(huì)搶占NANDFlash帶寬,導(dǎo)致前端用戶IO性能降低。為了穩(wěn)定前端IO性能,在SSD內(nèi)部的調(diào)度器會(huì)均衡前端和背景流量,保證前端性能的一致性。背景流量的占比反應(yīng)了SSD的寫(xiě)放大系數(shù),因此,站在NAND Flash帶寬占用的角度可以分析SSD在穩(wěn)態(tài)情況下的性能。
下圖是Intel P4500和Samsung PM963隨機(jī)寫(xiě)延遲和推導(dǎo)公式之間的對(duì)比。結(jié)果非常吻合。
由此可以推出,隨機(jī)寫(xiě)性能由SSD內(nèi)部后端帶寬以及寫(xiě)放大系數(shù)來(lái)決定。因此,從存儲(chǔ)軟件的角度出發(fā),我們可以通過(guò)優(yōu)化IO Pattern的方式減小寫(xiě)放大系數(shù),從而可以提升SSD的隨機(jī)寫(xiě)性能。
5 小結(jié)
閃存存儲(chǔ)技術(shù)正在飛速發(fā)展,閃存介質(zhì)、SSD控制器、存儲(chǔ)系統(tǒng)軟件、存儲(chǔ)硬件平臺(tái)都在圍繞閃存日新月異的發(fā)展。閃存給數(shù)據(jù)存儲(chǔ)帶來(lái)的價(jià)值顯而易見(jiàn),數(shù)據(jù)中心閃存化是重要發(fā)展趨勢(shì)。NVMe SSD性能受到很多因素的影響,在軟件層面可以通過(guò)IO Pattern優(yōu)化SSD的性能,使得整體存儲(chǔ)系統(tǒng)的性能達(dá)到最佳。
審核編輯:劉清
-
QoS
+關(guān)注
關(guān)注
1文章
136瀏覽量
44775 -
SSD
+關(guān)注
關(guān)注
21文章
2857瀏覽量
117367 -
Nand flash
+關(guān)注
關(guān)注
6文章
241瀏覽量
39802 -
HDD
+關(guān)注
關(guān)注
0文章
143瀏覽量
27419
原文標(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)推薦
評(píng)論