ReFlex:讓遠端快閃記憶體訪問擁有本地訪問的效能

HitTwice發表於2018-05-07

  早在數年前,使用快閃記憶體的固態硬碟(SSD)很容易就能與價值10萬美元的儲存陣列的IOPS效能相當,而價格只是其一小部分。此外,SSD不需要儲存區域網路(SAN),因為每個伺服器都可以有自己的內部PCIe SSD,其延遲之低是SAN陣列難以企及的。

  在那時,即使一個400GB的SSD成本達到幾千美元,企業還是很樂意使用的。但是,隨著企業和雲供應商採用低成本、無共享架構、橫向擴充套件基礎設施——谷歌檔案系統和Hadoop為其中的典型代表——伺服器SSD的不可用滯留效能和成本已經成為一個主要問題。

  遠端訪問NVMe快閃記憶體可以實現靈活的伸縮性,以及資料中心內快閃記憶體容量和IOPS的高利用率。然而,現有的遠端快閃記憶體訪問系統,要麼引入了顯著的效能開銷,要麼無法隔離共享每個快閃記憶體裝置的多個遠端客戶端。為此,史丹佛大學的研究員Ana Klimovic、Heiner Litz研發了ReFlex,一種遠端快閃記憶體訪問軟體系統,它為遠端記憶體訪問提供了幾乎與本地快閃記憶體訪問相同的效能。ReFlex使用資料平面(dataplane)核心將網路和儲存處理緊密整合,以在低資源需求下實現低延遲和高吞吐量。具體地說,ReFlex可以在TCP/IP網路上為每個核心提供850K IOPS,延遲只在直接本地快閃記憶體訪問之上增加21μs。

ReFlex:讓遠端快閃記憶體訪問擁有本地訪問的效能

  ReFlex的效能表現主要來源於以下幾個關鍵因素:

  ·NIC和SSD的硬體虛擬化功能可以直接在硬體I/O佇列上執行,無需複製。

  ·與基於庫的I/O呼叫相比,資料平面核心極大地減少了I/O開銷。

  ·一種新的服務質量(QoS)排程器,可以讓多個租戶公平共享遠端裝置,同時最小化長尾延遲。

  ·I/O在可能的情況下被批處理。

  ·基於輪詢的執行消除了基於中斷的I/O的不確定性和開銷。

ReFlex:讓遠端快閃記憶體訪問擁有本地訪問的效能

  實測結果

  ReFlex伺服器的空負載往返延遲只比直接的、使用者空間通過NVMe佇列訪問本地快閃記憶體的時間高21μs。使用ReFlex的兩核伺服器可以完全使一個100萬IOP SSD飽和,與本地訪問相比,此延遲可忽略。相比之下,使用libaio和libevent的Linux基線,只獲得75K IOPS /核心,由於計算強度更高,延遲也更高,需要多用10倍左右的CPU核,才能實現和ReFlex一樣的吞吐量。

  此外,測試發現ReFlex可以支援數千個遠端租戶,這是一個重要因素,因為一個雲資料中心裡可能有10萬臺或更多伺服器。

ReFlex:讓遠端快閃記憶體訪問擁有本地訪問的效能

  未來儲存的可能

  在過去的十多年裡,快閃記憶體一直是資料中心的“常客”,但是系統架構師們仍然在研究如何優化它在實際中的應用。當然,十年前ReFlex系統的目標使用者——擁有大規模橫向擴充套件架構的網際網路服務供應商,並不多見。

  但是,一旦ReFlex——或者類似的工具——被內建到系統核心中,我們中的許多人,即使硬體規模不大,也能夠利用共享的SSD。想象一下這種效能提升,假設我們有一個8節點視訊渲染農場,裝備了兩個高效能的PCIe/NVMe SSD和一個10Gb的乙太網結構。

  ReFlex型別的功能變得更加重要,因為新的、更高效能和更昂貴的非易失性儲存技術(如英特爾的3D XPoint)得到了更廣泛的應用。共享遠端ReFlex的經濟效益將比現在更大。

  ReFlex是一個開源軟體,GitHub地址為https://github.com/stanford-mast/reflex

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2153938/,如需轉載,請註明出處,否則將追究法律責任。

相關文章