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

Xilinx FPGA NVMe主機控制器IP,高性能版本介紹應用
Xilinx FPGA高性能NVMe SSD主機控制器,NVMe Host Controller IP
高性能NVMe主機控制器,Xilinx FPGA NVMe Host Accelerator IP
iPhone 12 香不香?帶你一探究竟
一探究竟關于USB轉接口部分的電路
一探究竟|CamsenseM Pro
影響SSD性能的因素有哪些 NVMe SSD性能解析
OPPOFindX拆解 防護性能一探究竟
一探究竟eSIM的發展道路
iPhone 12 有哪些技術革新?帶你一探究竟

評論