ReFlex - Remote Flash ≈ Local Flash
一種提供高帶寬低延時和多租戶場景下可保證的服務質(zhì)量的遠程flash訪問架構
一、背景
對NVMe Flash的遠程訪問實現(xiàn)了數(shù)據(jù)中心內(nèi)Flash容量以及IOPS的靈活擴展和高利用率。但是,現(xiàn)有的用于遠程Flash訪問的系統(tǒng)會帶來巨大的性能開銷,或者無法隔離共享每個Flash設備的多個遠程clients。
二、問題與挑戰(zhàn)
在實現(xiàn)對Flash的遠程訪問方面存在重大挑戰(zhàn)。
要實現(xiàn)低延遲,需要在server和client的網(wǎng)絡和存儲層上將處理開銷降至最低。除了低延遲之外,每臺服務器還必須以最低成本實現(xiàn)高吞吐量,從而使一個或多個NVMe Flash設備且具有少量CPU cores的機器達到飽和。此外,要管理共享一個Flash設備的多個租戶之間的干擾以及Flash設備的不均勻讀寫行為,需要一種隔離機制,以保證所有租戶的可預測性能。最后,在共享程度,部署規(guī)模和用于遠程連接的網(wǎng)絡協(xié)議方面需要具有靈活性?,F(xiàn)有的僅軟件用于遠程Flash訪問的選項(例如iSCSI或基于事件的服務器)無法達到性能預期。最近提出的硬件加速選件,例如基于RDMA架構的NVMe,缺乏性能隔離,并且部署靈活性有限。
由于讀、寫干擾的影響,可預測的性能對于NVMe Flash設備是一個挑戰(zhàn)。圖1繪制了Flash上的尾部讀取延遲(第95個百分位數(shù))與各種讀寫比率的工作負載的吞吐量(IOPS)的關系。尾部讀取延遲取決于吞吐量(負載)和讀寫比率。對于我們測試過的所有NVMe Flash設備,此行為都是典型的,因為寫入操作速度較慢,并且觸發(fā)磨損平衡和垃圾回收活動,這些活動無法始終被隱藏。當單個應用程序使用本地Flash設備時,可以管理讀/寫干擾,但是對于遠程Flash和共享同一設備但彼此不知道的多個租戶而言,這成為一個巨大的挑戰(zhàn)。
三、ReFlex設計
1.數(shù)據(jù)平面架構
ReFlex緊密集成了網(wǎng)絡和存儲層,提供了對遠程Flash的低延遲和高吞吐量訪問。它通過TCP和UDP等通用網(wǎng)絡協(xié)議為任意大小的邏輯塊提供遠程讀/寫請求。ReFlex主要是軟件系統(tǒng),它利用NIC和NVMe Flash設備中的硬件虛擬化功能直接在硬件隊列上運行,并有效地在NIC和Flash設備之間轉發(fā)請求和數(shù)據(jù),而無需拷貝。
每個ReFlex服務器線程使用專用core,可以直接和排它地訪問網(wǎng)絡隊列對以進行數(shù)據(jù)包的接收/發(fā)送,并使用NVMe隊列進行Flash命令的提交/完成。
圖2展示了ReFlex服務器線程的執(zhí)行模型,該線程處理傳入的Flash讀/寫請求。首先,NIC接收網(wǎng)絡數(shù)據(jù)包,然后通過DMA將其傳送到網(wǎng)絡棧提供的預分配的內(nèi)存緩沖區(qū)(1)。ReFlex線程輪詢接收描述符環(huán),并通過以太網(wǎng)驅動程序和網(wǎng)絡棧(例如TCP/IP)處理數(shù)據(jù)包,從而生成事件條件,指示新消息的可用性(2)。同一線程使用libix(類似于Linux libevent的庫)來處理事件。這涉及切換到服務器代碼,以解析消息,提取IO請求,執(zhí)行訪問控制檢查以及提交Flash read/write系統(tǒng)調(diào)用之前所需的任何其他存儲協(xié)議的處理(3)。然后,線程切換到系統(tǒng)調(diào)用處理并執(zhí)行IO調(diào)度,以在共享ReFlex服務器的所有租戶之間實施SLO。調(diào)度之后,請求將通過NVMe提交隊列提交給Flash設備(4)。Flash設備執(zhí)行讀/寫IO,并通過DMA將數(shù)據(jù)傳送到預分配的用戶空間緩沖區(qū)(或從預分配的用戶空間緩沖區(qū)獲取數(shù)據(jù))(7)。線程輪詢完成隊列(5),并提供完成事件(6)。事件回調(diào)通過libix執(zhí)行并發(fā)出send系統(tǒng)調(diào)用(7)。最后,線程處理send系統(tǒng)調(diào)用,以通過網(wǎng)絡棧將請求的數(shù)據(jù)傳遞回發(fā)起方(8)。執(zhí)行模型支持每條網(wǎng)絡消息多個IO請求以及跨多個網(wǎng)絡消息的大型IO。
2.調(diào)度機制
QoS調(diào)度程序允許ReFlex為共享服務器中Flash設備的租戶提供性能保證。租戶是一種邏輯抽象,用于說明和執(zhí)行服務級別目標(SLO)。SLO在特定吞吐量和讀/寫比率下指定尾部讀取延遲的限制。例如,租戶可以以80%的讀取比率注冊具有200us讀取尾部延遲(95%百分數(shù))的50K IOPS的SLO。除了此類延遲關鍵(LC)租戶,這些租戶在尾部延遲和吞吐量方面保證了分配,ReFlex還為盡力而為(BE)租戶提供服務,這些租戶可以機會使用任何未分配或未使用的Flash帶寬并容忍較高的延遲。租戶定義可以由成千上萬的網(wǎng)絡連接共享,這些連接來自運行任何應用程序的不同客戶端計算機。應用程序可以使用多個租戶為不同的數(shù)據(jù)流請求單獨的SLO。
在Flash設備訪問上強制執(zhí)行SLO有兩個因素。首先,設備可以支持的最大帶寬(IOPS)取決于它在所有租戶中看到的請求的總體讀寫比率。其次,讀取請求的尾部等待時間取決于總體讀取/寫入比率和當前帶寬負載。因此,QoS調(diào)度程序需要全局可見性和對Flash上的總負載以及未完成的IO操作類型的控制。我們使用請求代價模型來說明每個Flash IO對讀取尾部延遲的影響,并使用一種新穎的調(diào)度算法來保證所有租戶和所有數(shù)據(jù)平面線程之間的SLO。
1) 請求代價模型
針對ReFlex服務器中部署的每種類型的Flash設備校準成本模型。首先,對于具有各種讀寫比率和請求大小的工作負載,我們使用本地Flash測量了尾部等待時間與吞吐量的關系(請參見圖1中的4KB示例)。由于寫入請求的成本取決于垃圾回收和頁面擦除事件的頻率,因此我們保守地使用隨機寫入模式來觸發(fā)最壞的情況。接下來,我們使用曲線擬合來得出C(I / O type,r)
2) 調(diào)度算法
QoS調(diào)度器構建在成本模型之上,保持延遲關鍵租戶的尾端延遲和吞吐量的SLO,同時允許盡力交付型租戶以公平的方式利用剩余的吞吐量。
token管理
QoS調(diào)度器以等于Flash設備在給定尾端延遲SLO上可以支持的最大加權IOPS(上述的成本模型)的速率生成token。ReFlex在所有共享一個Flash設備的延遲關鍵租戶中執(zhí)行最嚴格的延遲SLO。在它們的SLO指示的讀寫比加權情況下,延遲關鍵(LC)租戶被提供能夠滿足它們IOPS SLO的token供應。由調(diào)度程序生成但未分配給延遲關鍵的token將在盡力交付型租戶之間公平分配。當調(diào)度程序將租戶的請求提交到Flash設備時,它會根據(jù)每個請求的成本來花費租戶的token。
每個ReFlex線程將Flash請求排入每個租戶的軟件隊列中。當線程到達數(shù)據(jù)平面執(zhí)行模型中的QoS調(diào)度步驟時,線程使用計算排隊請求的加權成本,并將所有允許的請求提交給Flash設備,從而逐漸花費每個租戶的token。根據(jù)線程負載和批處理因子,執(zhí)行模型每0.5us至100us進入一次調(diào)度回合。通過對控制平面和批處理大小限制確保調(diào)度程序調(diào)用之間的時間不超過最嚴格SLO的5%。必須進行頻繁的調(diào)度,以避免過多的排隊延遲并保持NVMe設備的高利用率。
其次,ReFlex采用自適應批處理請求,以分攤開銷并提高預取和指令緩存效率。在低負載下,將立即處理傳入數(shù)據(jù)包或已完成的NVMe命令。隨著負載的增加,NIC接收和NVMe完成隊列將填滿,并為批量處理多個傳入數(shù)據(jù)包或多個完成的訪問提供了機會。批大小隨負載增加而增加,但上限為64,以避免過多的延遲。不同于傳統(tǒng)的批處理,后者需要在帶寬和延遲之間進行權衡,自適應批處理在高吞吐量和低延遲之間實現(xiàn)了良好的平衡。
四、結果與評估
從上圖可以看出,ReFlex可以達到與本地閃存訪問相近的遠程訪問吞吐量和帶寬;
同時,ReFlex的IO調(diào)度能夠實現(xiàn)對不同類型的用戶提供相對應的服務。上圖是四個不同類型的租戶同時訪問一個ReFlex服務器的場景,其中A和B是兩個延遲敏感型的租戶,從實驗結果可以看出,對于延遲敏感型用戶,能夠保證其所要求的的訪問延時和訪問帶寬。
五、總結
ReFlex作為一種新的純軟件層面的遠程flash訪問架構,能夠在提供低延時和高帶寬的訪問性能的同時,在多用戶訪問的場景下為延遲敏感性的租戶提供可保證的服務質(zhì)量。
審核編輯:湯梓紅
-
FlaSh
+關注
關注
10文章
1635瀏覽量
148032 -
服務器
+關注
關注
12文章
9160瀏覽量
85427 -
數(shù)據(jù)中心
+關注
關注
16文章
4778瀏覽量
72129 -
高帶寬
+關注
關注
0文章
13瀏覽量
7707 -
nvme
+關注
關注
0文章
221瀏覽量
22640
原文標題:高帶寬低延時遠程flash訪問架構
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論