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

labview遠(yuǎn)程訪問
labview 如何通過域名來訪問
高增益與高帶寬怎么兼得
高增益與高帶寬怎么兼得?
基于Cyclone V FPGA的高帶寬存儲接口應(yīng)用
基于藍(lán)牙的遠(yuǎn)程訪問診斷接口架構(gòu)
GPMC并口如何實現(xiàn)“小數(shù)據(jù)-低時延,大數(shù)據(jù)-高帶寬”
基于Flash的遠(yuǎn)程工業(yè)監(jiān)控系統(tǒng)設(shè)計

高帶寬、低延時的衛(wèi)星互聯(lián)網(wǎng)已成太空的“新風(fēng)口”
關(guān)于Flash程序空間中的數(shù)據(jù)訪問的實驗

華為云桌面,高流暢低延時,給你絲滑辦公體驗
為什么遠(yuǎn)程訪問優(yōu)于 VPN?

評論