軟體對儲存效能的影響​

來源:互聯網
上載者:User

標籤:高效能儲存   spdk   vnme   

儲存系統的核心是軟體,在磁碟儲存時代,儲存系統軟體設計的好壞似乎對效能的影響並不是很大,很多儲存軟體的設計並不會去考慮電腦的體系架構,也不用去關心作業系統調度、記憶體拷貝等因素帶來的效能影響。對於磁碟儲存,事情的確是這樣的,原因在於磁碟的效能遠遠低於CPU處理和訪存效能。磁碟儲存的效能瓶頸點就在於磁碟本身,因此過多的體繫結構層級、競爭資源同步的最佳化,不會對儲存效能帶來顯著最佳化。

 

在很久以前做過這方面的實踐,當時覺得臨界區的資源競爭會對IO效能造成影響,因此,對我們做的一套儲存虛擬化系統進行鎖資源最佳化。將全域鎖細粒度化,將寫鎖拆分成讀寫鎖。但是,最終的最佳化效果微乎其微,原因就在於磁碟本身是效能的瓶頸點,CPU根本就不是問題。

 

但是,當儲存介質從磁碟發展成NAND,甚至Xpoint之後,情況將發生根本性的變化。如今NVMe SSD已經在互連網應用中非常普及,很多互連網公司都將NVMe SSD作為基本的高效能儲存介質,行業使用者也開始使用NVMe SSD。NVMe SSD具有非常高的效能,一個普通的2.5寸NVMe SSD,其讀效能可以達到3GB/s、寫效能超過1GB/s,IOPS將近80萬。這種盤的效能遠遠超過了磁碟,甚至SATA/SAS介面的SSD。盤的效能提升之後,儲存軟體的設計是否需要發生改變呢?

 

這種改變是肯定的,從儲存本身的角度去考慮這種改變,比如NVMe SSD是一種半導體儲存介質,不存在磁碟的隨機訪問問題,因此磁碟儲存中所做的IO調度演算法對SSD失效了,沒有用了。SSD儲存軟體不需要考慮磁碟抖動的問題,這是一種變化;NVMe SSD具有很高的讀效能,那麼大量的讀Cache可以去掉了,不需要大量的讀緩衝;SSD的故障模型和磁碟存在很大差別,那麼在資料可靠性方面的處理不能採用傳統RAID來做了,這又是一個非常重要的變化;NVMe SSD雖然具有極高的寫效能,但是和順序寫效能相比,隨機小寫效能差很多,因此,是否要為SSD做特殊的隨機小寫最佳化,這是需要為SSD新考慮的一個問題。除了從儲存技術本身的角度來考慮,另外需要從電腦體繫結構的角度來重新審視一下新介質對儲存效能的影響。

 

當SSD具有極高效能之後,儲存效能的瓶頸點從後端的磁碟慢慢轉移到了CPU端、網路端。並且隨著儲存介質的進一步提升,軟體層面的效能影響變成了主因。未來如果軟體層面不做深層次的變革,應用將無法發揮高效能儲存介質的效能。是Intel在今年IDF上的一張演講圖片。從這張圖片中來看,未來Xpoint儲存介質的90%效能影響是在軟體端,硬體端的效能影響只佔了10%。這也說明面向高效能儲存介質的儲存軟體技術的將是行業發展的重點。

 

650) this.width=650;" title="1.jpg" src="http://s3.51cto.com/wyfs02/M02/7F/14/wKiom1cSWQyAUNKjAAC61c95MwM236.jpg" alt="wKiom1cSWQyAUNKjAAC61c95MwM236.jpg" />


從電腦體繫結構的角度來看,大量的中斷處理會對儲存效能造成影響。如果中斷聚集在一個處理器上,那麼該處理器將會成為儲存效能的瓶頸點。大量中斷也將會影響CPU的處理效率,在高速儲存中,一個CPU每秒可以進行80萬次IO處理,如果系統中存在多塊這樣的盤,那麼中斷的數量是相當可觀的。因此,在儲存設計中需要考慮海量中斷的處理方法,具體方法可以借鑒網路,例如網路中的NAPI技術。在IO比較少的時候採用中斷處理方式,這樣可以保證IO延遲;在IO數量比較多的時候,可以採用查詢機制,避免無效的中斷處理。

 

如今,X86的體繫結構通常都是多核NUMA架構。這種架構對於儲存處理而言存在兩個需要考慮的問題,一個是NUMA問題;另一個是多核競爭問題。NUMA問題實際上是一個很難解決的問題,IO和記憶體都需要保證在一個SOCKET域上才可以保證效能最佳,否則將會引入QPI上的資料轉送,導致效能不穩定。多核競爭或者臨界區的問題是一個非常棘手的高效能儲存問題。以前儲存設計過程中,一旦遇到競爭問題,會考慮到採用鎖保護的方式,這種方式最為簡單和明了。但是,傳統儲存軟體中的鎖會嚴重影響儲存的效能。有一個資料可以和大家分享,在SCSI儲存棧的request queue中,都會存在一個spin lock,該spin lock實現對request queue的臨界資源保護。正因為這一把鎖會將SCSI裝置的IOPS效能限制在50萬以內,並且無論增加多少CPU都無濟於事,原因就在於CPU都在這把Spin lock上自旋,無法高效執行。所以,對於高效能儲存介質,無鎖設計將會變得極其關鍵和重要。提到無鎖設計,一方面是儲存軟體架構的變動,另一方面就是無鎖演算法的設計。而無鎖演算法的設計與實現是極其複雜的,傳統軟體不需要考慮的一些因素,例如記憶體屏障,都需要仔細斟酌了。所以,高效能儲存設計慢慢的變成了高效能運算問題了。在我們設計的FlashRAID中,具有資料保護的功能,在同樣的NVMe SSD上構建具有資料保護功能的邏輯卷,和傳統的MDRAID相比,效能有大幅度的提升(如所示)。FlashRAID效能提升的一個重要因素在於整個軟體棧的設計考慮的電腦體系架構問題,很好的處理了資源競爭的問題,將高效能儲存介質的效能得以充分發揮。


650) this.width=650;" title="4.jpg" src="http://s1.51cto.com/wyfs02/M02/7F/12/wKioL1cSWj2QZzeZAABN-3DD4SU623.jpg" alt="wKioL1cSWj2QZzeZAABN-3DD4SU623.jpg" />


在作業系統層面,也存在很多影響儲存效能的問題,例如記憶體拷貝、下下文切換等問題。如果應用程式運行在使用者態,儲存軟體棧運行在核心態,那麼資料在使用者態和核心之間頻繁穿越,將會導致效能極具下降,並且會消耗寶貴的CPU資源。CPU頻繁的在使用者態與核心態之間搬運資料,切換寄存器上下文,真正用來處理IO的效率降低,從而導致儲存效能降低。所以,Intel提出了SPDK的項目,呼籲大家用SPDK來開發儲存體軟體,提升CPU效率,將CPU用在刀口上,避免無謂的資料搬運、頻繁的低效調度。SPDK是在DPDK的基礎上發展起來的軟體包。SPDK的構成如所示,其核心的思想是將所有的軟體運行在使用者態,通過查詢的方式擷取IO事件,然後對IO進行處理。


650) this.width=650;" title="3.jpg" src="http://s4.51cto.com/wyfs02/M02/7F/14/wKiom1cSWT-Tcv4EAABfDHB5BsA199.jpg" alt="wKiom1cSWT-Tcv4EAABfDHB5BsA199.jpg" />


SPDK本質上是解決了我前面提到的一些問題,例如中斷、記憶體拷貝、環境切換等。其有一個很重要的假設就是使用者態會運行應用,通過SPDK將儲存棧都搬到使用者態之後,在整個過程中都不需要核心軟體的參與,所以,這種設計也就是Bypass Kernel。其實Bypass Kernel不是目的,解決高效能儲存中CPU、網路效能瓶頸的問題才是SPDK最為核心的價值。在我們FlashRAID的設計過程中考慮了CPU、網路效能瓶頸問題,實現的軟體即可以核心中運行,也可以在使用者態運行,並且實現了和SPDK的整合。通過實際測試發現,儲存效能與運行環境無關。所以,重要的不是Bypass kernel,而是解決CPU效能瓶頸的問題。

 

在高效能儲存介質慢慢普及之後,一個非常重要的問題將擺在使用者的面前。如何用好高效能儲存介質?尤其在一個系統中存在多塊高效能盤時,如何高效使用這些盤?NVMe SSD、Xpoint盤進一步發展時,這個問題將會變得越來越嚴重,有理由相信,不久的將來將會出現更多的高效能儲存軟體產品及創業公司。


本文出自 “儲存之道” 部落格,請務必保留此出處http://alanwu.blog.51cto.com/3652632/1764620

軟體對儲存效能的影響​

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.