ReFlex - Remote Flash ≈ Local Flash
一種提供高帶寬低延時(shí)和多租戶場(chǎng)景下可保證的服務(wù)質(zhì)量的遠(yuǎn)程flash訪問(wèn)架構(gòu)
一、背景
對(duì)NVMe Flash的遠(yuǎn)程訪問(wèn)實(shí)現(xiàn)了數(shù)據(jù)中心內(nèi)Flash容量以及IOPS的靈活擴(kuò)展和高利用率。但是,現(xiàn)有的用于遠(yuǎn)程Flash訪問(wèn)的系統(tǒng)會(huì)帶來(lái)巨大的性能開(kāi)銷,或者無(wú)法隔離共享每個(gè)Flash設(shè)備的多個(gè)遠(yuǎn)程clients。
二、問(wèn)題與挑戰(zhàn)
在實(shí)現(xiàn)對(duì)Flash的遠(yuǎn)程訪問(wèn)方面存在重大挑戰(zhàn)。
要實(shí)現(xiàn)低延遲,需要在server和client的網(wǎng)絡(luò)和存儲(chǔ)層上將處理開(kāi)銷降至最低。除了低延遲之外,每臺(tái)服務(wù)器還必須以最低成本實(shí)現(xiàn)高吞吐量,從而使一個(gè)或多個(gè)NVMe Flash設(shè)備且具有少量CPU cores的機(jī)器達(dá)到飽和。此外,要管理共享一個(gè)Flash設(shè)備的多個(gè)租戶之間的干擾以及Flash設(shè)備的不均勻讀寫(xiě)行為,需要一種隔離機(jī)制,以保證所有租戶的可預(yù)測(cè)性能。最后,在共享程度,部署規(guī)模和用于遠(yuǎn)程連接的網(wǎng)絡(luò)協(xié)議方面需要具有靈活性。現(xiàn)有的僅軟件用于遠(yuǎn)程Flash訪問(wèn)的選項(xiàng)(例如iSCSI或基于事件的服務(wù)器)無(wú)法達(dá)到性能預(yù)期。最近提出的硬件加速選件,例如基于RDMA架構(gòu)的NVMe,缺乏性能隔離,并且部署靈活性有限。
由于讀、寫(xiě)干擾的影響,可預(yù)測(cè)的性能對(duì)于NVMe Flash設(shè)備是一個(gè)挑戰(zhàn)。圖1繪制了Flash上的尾部讀取延遲(第95個(gè)百分位數(shù))與各種讀寫(xiě)比率的工作負(fù)載的吞吐量(IOPS)的關(guān)系。尾部讀取延遲取決于吞吐量(負(fù)載)和讀寫(xiě)比率。對(duì)于我們測(cè)試過(guò)的所有NVMe Flash設(shè)備,此行為都是典型的,因?yàn)閷?xiě)入操作速度較慢,并且觸發(fā)磨損平衡和垃圾回收活動(dòng),這些活動(dòng)無(wú)法始終被隱藏。當(dāng)單個(gè)應(yīng)用程序使用本地Flash設(shè)備時(shí),可以管理讀/寫(xiě)干擾,但是對(duì)于遠(yuǎn)程Flash和共享同一設(shè)備但彼此不知道的多個(gè)租戶而言,這成為一個(gè)巨大的挑戰(zhàn)。

三、ReFlex設(shè)計(jì)
1.數(shù)據(jù)平面架構(gòu)
ReFlex緊密集成了網(wǎng)絡(luò)和存儲(chǔ)層,提供了對(duì)遠(yuǎn)程Flash的低延遲和高吞吐量訪問(wèn)。它通過(guò)TCP和UDP等通用網(wǎng)絡(luò)協(xié)議為任意大小的邏輯塊提供遠(yuǎn)程讀/寫(xiě)請(qǐng)求。ReFlex主要是軟件系統(tǒng),它利用NIC和NVMe Flash設(shè)備中的硬件虛擬化功能直接在硬件隊(duì)列上運(yùn)行,并有效地在NIC和Flash設(shè)備之間轉(zhuǎn)發(fā)請(qǐng)求和數(shù)據(jù),而無(wú)需拷貝。

每個(gè)ReFlex服務(wù)器線程使用專用core,可以直接和排它地訪問(wèn)網(wǎng)絡(luò)隊(duì)列對(duì)以進(jìn)行數(shù)據(jù)包的接收/發(fā)送,并使用NVMe隊(duì)列進(jìn)行Flash命令的提交/完成。
圖2展示了ReFlex服務(wù)器線程的執(zhí)行模型,該線程處理傳入的Flash讀/寫(xiě)請(qǐng)求。首先,NIC接收網(wǎng)絡(luò)數(shù)據(jù)包,然后通過(guò)DMA將其傳送到網(wǎng)絡(luò)棧提供的預(yù)分配的內(nèi)存緩沖區(qū)(1)。ReFlex線程輪詢接收描述符環(huán),并通過(guò)以太網(wǎng)驅(qū)動(dòng)程序和網(wǎng)絡(luò)棧(例如TCP/IP)處理數(shù)據(jù)包,從而生成事件條件,指示新消息的可用性(2)。同一線程使用libix(類似于Linux libevent的庫(kù))來(lái)處理事件。這涉及切換到服務(wù)器代碼,以解析消息,提取IO請(qǐng)求,執(zhí)行訪問(wèn)控制檢查以及提交Flash read/write系統(tǒng)調(diào)用之前所需的任何其他存儲(chǔ)協(xié)議的處理(3)。然后,線程切換到系統(tǒng)調(diào)用處理并執(zhí)行IO調(diào)度,以在共享ReFlex服務(wù)器的所有租戶之間實(shí)施SLO。調(diào)度之后,請(qǐng)求將通過(guò)NVMe提交隊(duì)列提交給Flash設(shè)備(4)。Flash設(shè)備執(zhí)行讀/寫(xiě)IO,并通過(guò)DMA將數(shù)據(jù)傳送到預(yù)分配的用戶空間緩沖區(qū)(或從預(yù)分配的用戶空間緩沖區(qū)獲取數(shù)據(jù))(7)。線程輪詢完成隊(duì)列(5),并提供完成事件(6)。事件回調(diào)通過(guò)libix執(zhí)行并發(fā)出send系統(tǒng)調(diào)用(7)。最后,線程處理send系統(tǒng)調(diào)用,以通過(guò)網(wǎng)絡(luò)棧將請(qǐng)求的數(shù)據(jù)傳遞回發(fā)起方(8)。執(zhí)行模型支持每條網(wǎng)絡(luò)消息多個(gè)IO請(qǐng)求以及跨多個(gè)網(wǎng)絡(luò)消息的大型IO。
2.調(diào)度機(jī)制
QoS調(diào)度程序允許ReFlex為共享服務(wù)器中Flash設(shè)備的租戶提供性能保證。租戶是一種邏輯抽象,用于說(shuō)明和執(zhí)行服務(wù)級(jí)別目標(biāo)(SLO)。SLO在特定吞吐量和讀/寫(xiě)比率下指定尾部讀取延遲的限制。例如,租戶可以以80%的讀取比率注冊(cè)具有200us讀取尾部延遲(95%百分?jǐn)?shù))的50K IOPS的SLO。除了此類延遲關(guān)鍵(LC)租戶,這些租戶在尾部延遲和吞吐量方面保證了分配,ReFlex還為盡力而為(BE)租戶提供服務(wù),這些租戶可以機(jī)會(huì)使用任何未分配或未使用的Flash帶寬并容忍較高的延遲。租戶定義可以由成千上萬(wàn)的網(wǎng)絡(luò)連接共享,這些連接來(lái)自運(yùn)行任何應(yīng)用程序的不同客戶端計(jì)算機(jī)。應(yīng)用程序可以使用多個(gè)租戶為不同的數(shù)據(jù)流請(qǐng)求單獨(dú)的SLO。
在Flash設(shè)備訪問(wèn)上強(qiáng)制執(zhí)行SLO有兩個(gè)因素。首先,設(shè)備可以支持的最大帶寬(IOPS)取決于它在所有租戶中看到的請(qǐng)求的總體讀寫(xiě)比率。其次,讀取請(qǐng)求的尾部等待時(shí)間取決于總體讀取/寫(xiě)入比率和當(dāng)前帶寬負(fù)載。因此,QoS調(diào)度程序需要全局可見(jiàn)性和對(duì)Flash上的總負(fù)載以及未完成的IO操作類型的控制。我們使用請(qǐng)求代價(jià)模型來(lái)說(shuō)明每個(gè)Flash IO對(duì)讀取尾部延遲的影響,并使用一種新穎的調(diào)度算法來(lái)保證所有租戶和所有數(shù)據(jù)平面線程之間的SLO。
1) 請(qǐng)求代價(jià)模型

針對(duì)ReFlex服務(wù)器中部署的每種類型的Flash設(shè)備校準(zhǔn)成本模型。首先,對(duì)于具有各種讀寫(xiě)比率和請(qǐng)求大小的工作負(fù)載,我們使用本地Flash測(cè)量了尾部等待時(shí)間與吞吐量的關(guān)系(請(qǐng)參見(jiàn)圖1中的4KB示例)。由于寫(xiě)入請(qǐng)求的成本取決于垃圾回收和頁(yè)面擦除事件的頻率,因此我們保守地使用隨機(jī)寫(xiě)入模式來(lái)觸發(fā)最壞的情況。接下來(lái),我們使用曲線擬合來(lái)得出C(I / O type,r)
2) 調(diào)度算法
QoS調(diào)度器構(gòu)建在成本模型之上,保持延遲關(guān)鍵租戶的尾端延遲和吞吐量的SLO,同時(shí)允許盡力交付型租戶以公平的方式利用剩余的吞吐量。
token管理
QoS調(diào)度器以等于Flash設(shè)備在給定尾端延遲SLO上可以支持的最大加權(quán)IOPS(上述的成本模型)的速率生成token。ReFlex在所有共享一個(gè)Flash設(shè)備的延遲關(guān)鍵租戶中執(zhí)行最嚴(yán)格的延遲SLO。在它們的SLO指示的讀寫(xiě)比加權(quán)情況下,延遲關(guān)鍵(LC)租戶被提供能夠滿足它們IOPS SLO的token供應(yīng)。由調(diào)度程序生成但未分配給延遲關(guān)鍵的token將在盡力交付型租戶之間公平分配。當(dāng)調(diào)度程序?qū)⒆鈶舻恼?qǐng)求提交到Flash設(shè)備時(shí),它會(huì)根據(jù)每個(gè)請(qǐng)求的成本來(lái)花費(fèi)租戶的token。
每個(gè)ReFlex線程將Flash請(qǐng)求排入每個(gè)租戶的軟件隊(duì)列中。當(dāng)線程到達(dá)數(shù)據(jù)平面執(zhí)行模型中的QoS調(diào)度步驟時(shí),線程使用計(jì)算排隊(duì)請(qǐng)求的加權(quán)成本,并將所有允許的請(qǐng)求提交給Flash設(shè)備,從而逐漸花費(fèi)每個(gè)租戶的token。根據(jù)線程負(fù)載和批處理因子,執(zhí)行模型每0.5us至100us進(jìn)入一次調(diào)度回合。通過(guò)對(duì)控制平面和批處理大小限制確保調(diào)度程序調(diào)用之間的時(shí)間不超過(guò)最嚴(yán)格SLO的5%。必須進(jìn)行頻繁的調(diào)度,以避免過(guò)多的排隊(duì)延遲并保持NVMe設(shè)備的高利用率。
其次,ReFlex采用自適應(yīng)批處理請(qǐng)求,以分?jǐn)傞_(kāi)銷并提高預(yù)取和指令緩存效率。在低負(fù)載下,將立即處理傳入數(shù)據(jù)包或已完成的NVMe命令。隨著負(fù)載的增加,NIC接收和NVMe完成隊(duì)列將填滿,并為批量處理多個(gè)傳入數(shù)據(jù)包或多個(gè)完成的訪問(wèn)提供了機(jī)會(huì)。批大小隨負(fù)載增加而增加,但上限為64,以避免過(guò)多的延遲。不同于傳統(tǒng)的批處理,后者需要在帶寬和延遲之間進(jìn)行權(quán)衡,自適應(yīng)批處理在高吞吐量和低延遲之間實(shí)現(xiàn)了良好的平衡。
四、結(jié)果與評(píng)估

從上圖可以看出,ReFlex可以達(dá)到與本地閃存訪問(wèn)相近的遠(yuǎn)程訪問(wèn)吞吐量和帶寬;

同時(shí),ReFlex的IO調(diào)度能夠?qū)崿F(xiàn)對(duì)不同類型的用戶提供相對(duì)應(yīng)的服務(wù)。上圖是四個(gè)不同類型的租戶同時(shí)訪問(wèn)一個(gè)ReFlex服務(wù)器的場(chǎng)景,其中A和B是兩個(gè)延遲敏感型的租戶,從實(shí)驗(yàn)結(jié)果可以看出,對(duì)于延遲敏感型用戶,能夠保證其所要求的的訪問(wèn)延時(shí)和訪問(wèn)帶寬。
五、總結(jié)
ReFlex作為一種新的純軟件層面的遠(yuǎn)程flash訪問(wèn)架構(gòu),能夠在提供低延時(shí)和高帶寬的訪問(wèn)性能的同時(shí),在多用戶訪問(wèn)的場(chǎng)景下為延遲敏感性的租戶提供可保證的服務(wù)質(zhì)量。
審核編輯:湯梓紅
-
FlaSh
+關(guān)注
關(guān)注
10文章
1748瀏覽量
155513 -
服務(wù)器
+關(guān)注
關(guān)注
14文章
10251瀏覽量
91480 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
18文章
5647瀏覽量
75009 -
高帶寬
+關(guān)注
關(guān)注
0文章
49瀏覽量
7945 -
nvme
+關(guān)注
關(guān)注
0文章
298瀏覽量
23839
原文標(biāo)題:高帶寬低延時(shí)遠(yuǎn)程flash訪問(wèn)架構(gòu)
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
示波器帶寬要求解析
labview遠(yuǎn)程訪問(wèn)
labview 如何通過(guò)域名來(lái)訪問(wèn)
高增益與高帶寬怎么兼得
高增益與高帶寬怎么兼得?
基于Cyclone V FPGA的高帶寬存儲(chǔ)接口應(yīng)用
如何去實(shí)現(xiàn)一種遠(yuǎn)程訪問(wèn)診斷接口?
基于藍(lán)牙的遠(yuǎn)程訪問(wèn)診斷接口架構(gòu)
GPMC并口如何實(shí)現(xiàn)“小數(shù)據(jù)-低時(shí)延,大數(shù)據(jù)-高帶寬”
基于Flash的遠(yuǎn)程工業(yè)監(jiān)控系統(tǒng)設(shè)計(jì)
高帶寬、低延時(shí)的衛(wèi)星互聯(lián)網(wǎng)已成太空的“新風(fēng)口”
關(guān)于Flash程序空間中的數(shù)據(jù)訪問(wèn)的實(shí)驗(yàn)
華為云桌面,高流暢低延時(shí),給你絲滑辦公體驗(yàn)
為什么遠(yuǎn)程訪問(wèn)優(yōu)于 VPN?
遠(yuǎn)程訪問(wèn)NAS不折騰,輕松獲取固定訪問(wèn)地址!
高帶寬低延時(shí)遠(yuǎn)程flash訪問(wèn)架構(gòu)解析
評(píng)論