999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于新型非易失內存的遠程零拷貝文件系統

2020-07-10 07:42:44韓文炳陳小剛李順芬李大剛陳詩雁段有康宋志棠
國防科技大學學報 2020年3期

韓文炳,陳小剛,李順芬,李大剛,陳詩雁,段有康,宋志棠

(1. 中國科學院上海微系統與信息技術研究所 信息功能材料國家重點實驗室, 上海 200050;2. 中國科學院大學, 北京 100049; 3. 北京大學深圳研究生院 信息工程學院, 廣東 深圳 518055)

隨著物聯網數據與設備的急劇增長,邊緣計算成為新的發展趨勢[1]。根據相關研究[2],2025年將有超過754億設備終端接入物聯網。而2019年,人類、計算機以及其他設備總計將產生500 ZB數據。其中,45%的物聯網數據將在網絡邊緣進行分析、處理和儲存[1]。在前端分布式架構物聯網中,為減輕服務器壓力,加速系統響應,大部分的數據任務和用戶請求都將在傳感節點或網關設備上進行處理[3]。然而,大量的數據與互聯設備使得相鄰節點間的數據交換與傳輸比以往更為頻繁和復雜。因此,構建高效、低延遲的遠程數據訪問是物聯網與邊緣計算應用中的關鍵問題。

新型非易失內存(Non-Volatile Memory, NVM)的出現為物聯網與邊緣計算提供了新的解決方案。以相變存儲器[4]、3D XPoint[5]、阻變存儲器[6]和磁阻存儲器[7]為代表的NVM技術,可以提供低延遲、字節級尋址以及持久化的數據訪問性能。此外,NVM兼具功耗低、抗輻射、存儲密度大等特點。在存儲級內存(Storage Class Memory, SCM)架構[8]中,NVM直接掛載在內存總線上,中央處理器(Central Processing Unit, CPU)可以使用Load/Store指令直接訪問NVM上的持久化數據。然而,傳統的文件系統和存儲棧針對磁盤等慢速塊設備進行設計,無法充分發揮出NVM的優勢和性能。例如,傳統磁盤需要以機械方式尋找磁道,這決定了其隨機讀寫性能將遠弱于順序讀寫性能,因此存儲系統會排列合并多個輸入/輸出(Input/Output, I/O)請求和緩存數據以提升讀寫性能。在磁盤環境下,相對于磁盤本身較高的讀寫延遲,這類軟件開銷可近似忽略,僅占整個數據訪問延遲的0.3%;而在NVM環境下,NVM的讀寫延遲遠低于磁盤,此時軟件延遲的占比高達94.1%[9]。因此,軟件延遲已經成為NVM存儲系統的主要性能瓶頸[10]。

1 相關工作

目前,國內外針對NVM的存儲系統做了大量研究,以提升數據訪問效率。持久性字節尋址文件系統(Byte addressable Persistent File System, BPFS)[11]利用NVM的可字節尋址特性,提出短路影子分頁技術,實現寫時復制,削弱寫放大效應,但該方法需要特殊硬件支持。存儲級內存文件系統(Storage Class Memory File System, SCMFS)[12]使用連續的內核虛擬地址空間管理NVM,然而維護兩套內存映射表的一致性會造成一定的性能損失。持久性內存文件(Persistent Memory File System, PMFS)[13]使用多叉平衡查找樹記錄文件數據塊的物理地址,可持續內存文件系統(Sustainable In-Memory File System, SIMFS)[14]使用頁表項管理文件數據,避開頁高速緩存和面向塊設備的I/O軟件棧,從而達到較高的性能。以上工作均是優化本地NVM文件系統設計。

對于分布式文件系統(Distributed File System, DFS),現有研究[10, 15-16]大多將NVM與遠程直接內存訪問(Remote Direct Memory Access, RDMA)技術結合起來,實現分布式內存訪問。Octopus[10]將各節點的NVM抽象為共享內存池,并使用哈希映射對文件數據進行布局。NVM和RDMA感知分布式文件系統(NVM and RDMA aware Hadoop distributed File System, NVFS)[15]針對NVM和RDMA重新設計了Hadoop分布式文件系統,實現內存原語訪問,加速高性能計算集群應用。Hotpot[16]將數據緩存和數據備份合并,并利用應用程序檢查點維護緩存的一致性,實現高效可靠的分布式共享內存訪問。然而,RDMA通常需要特殊硬件的支持,有著較高的成本,不適合用于物聯網應用場景中。通用網卡設備成本低,應用普遍,但傳統網絡棧中的數據拷貝和軟件冗余限制了傳輸帶寬和效率。存儲感知網絡棧(Storage Aware Network Stack, SANS)是一種基于通用網卡(Network Interface Card, NIC)的零拷貝傳輸框架[17],能夠有效減少數據拷貝,充分發揮NIC硬件性能。

本文充分考慮了NVM與通用網卡的硬件特性,提出了一種新型遠程零拷貝文件系統(Remote Zero Copy File System, RZCFS)。它在通用網卡設備上實現了零拷貝的網絡數據傳輸,利用NVM減少數據緩存和拷貝,融合網絡棧與存儲棧以降低軟件開銷,在前端節點間建立對等的網絡連接,為物聯網和邊緣計算等應用提供低延遲、高帶寬的遠程數據訪問性能。

2 RZCFS系統架構與傳輸機制

2.1 系統架構

圖1 系統架構Fig.1 System architecture

圖1分別描述了傳統DFS和RZCFS的系統架構。對于一次DFS的I/O請求,應用程序先通過虛擬文件系統(Virtual File System, VFS)調用DFS協議,并依次經過遠程過程調用、傳輸控制協議(Transmission Control Protocol, TCP)、網際協議(Internet Protocol, IP)等網絡層協議向遠程節點發送請求命令。遠程節點接收到該請求后,在網絡棧中解碼并提交給DFS守護進程處理。守護進程通過VFS調用本地文件系統,經歷通用塊層、I/O調度層以及塊設備驅動層等存儲軟件棧訪問存儲設備。縱觀數據的傳輸路徑,在硬件層次上,從存儲介質到內存之間存在一次數據拷貝;軟件層次上,從內核空間到用戶空間也有一次拷貝;此外,用戶空間到網絡棧還有一次拷貝。如果不考慮網絡間的數據傳輸,那么一次I/O請求在兩個存儲節點上至少存在6次數據拷貝。多次的數據拷貝既加重了CPU的負擔,降低了數據吞吐量,同時也增加了系統功耗。

RZCFS使用SANS網絡傳輸框架,去除了TCP/IP等傳統網絡協議棧,直接與網卡驅動交互,在數據鏈路層發送和接收數據請求。遠程節點接收到請求命令后,在數據鏈路層將請求提交給RZCFS處理。由于NVM存儲介質可直接連接CPU,因此RZCFS可以旁路頁高速緩存、通用塊層等存儲軟件棧,直接訪問NVM上的文件數據。RZCFS不需要依賴于本地文件系統,它融合了網絡棧與存儲棧,可以同時支持本地文件管理和遠程文件訪問,有效縮短了文件訪問路徑。從數據遷移的角度來看,借助于SANS框架,RZCFS實現了文件數據的零拷貝傳輸。RZCFS對存儲棧的精簡,去除了存儲介質到內存的拷貝。當應用程序使用內存映射(Memory MAP, MMAP)等用戶態訪問方式時,內核空間到用戶空間的拷貝也被去除。因此,RZCFS可以實現遠程文件數據的零拷貝訪問。

2.2 零拷貝傳輸機制

SANS零拷貝網絡傳輸機制不需要特殊網絡硬件的支持,可以有效減少處理器開銷,降低傳輸延遲。本文將SANS應用到RZCFS的遠程文件數據傳輸中,以實現遠程零拷貝的文件訪問。

文件系統的數據訪問往往以4 KB為單位,與內存頁大小一致;RZCFS中,文件數據也是按4 KB分塊的;文件數據和用戶緩存雖然有連續的虛擬地址,但物理地址是不連續的,它們散落在內存的不同位置,均按4 KB地址對齊。

通用網絡控制器[18]的硬件特性包括:支持分散聚合直接內存訪問(Direct Memory Access, DMA);DMA地址需要按4 B對齊;最大傳輸單元為1518 B,不支持巨型幀,這意味著需要使用多個網絡包去發送4 KB數據。由于NVM直接掛載到內存總線上,所以網絡控制器可以DMA尋址NVM空間。

結合上述特性,RZCFS應用SANS框架來傳輸文件數據,以下是4 KB數據傳輸的例子。

圖2中,SANS將需要傳輸的4 KB數據劃分為3段,長度分別是1496 B,1496 B,1104 B。數據發送時,每個數據段添加16 B以太網包頭,從而得到1512 B、1512 B、1120 B長度的3個網絡包。在接收端,同樣將4 KB的接收緩沖區劃分為3段。約定接收緩沖區起始地址為0x0010,則設置第一個數據包接收地址為0x0A28,第二個為0x0450,第三個為0x0000。SANS由高地址到低地址反向發送3個數據塊,即分段3對應網絡包1,分段2對應網絡包2,分段1對應網絡包3。在接收節點上,網絡包1先到達0x0A28位置;網絡包2到達0x0450位置,并將網絡包1的包頭覆蓋掉;網絡包3到達0x0000位置,將網絡包2的包頭覆蓋掉。SANS通過反向發送數據,使后一網絡包覆蓋前一網絡包的包頭,從而拼接出連續的4 KB數據塊,稱為反向覆蓋方法。

圖2 零拷貝傳輸機制Fig.2 Zero copy transmission mechanism

上述傳輸過程都可以通過DMA硬件完成,CPU只需配置好DMA發送和接收的物理地址,即可在沒有數據拷貝的前提下實現4 KB數據塊的自動分片和拼接,極大地降低處理器的開銷。然而,SANS會引入包頭覆蓋問題,即接收網絡包3時,其包頭會覆蓋掉接收緩沖區起始地址之前的16 B數據。在后續章節中,RZCFS會通過緩沖區管理和預存機制來避免。

3 RZCFS設計與實現

3.1 RZCFS布局結構

如圖3所示,RZCFS的組成部分包括超級塊,索引節點(inode)表,位圖、數據空間。其中,超級塊記錄RZCFS的全局信息,如起始物理地址、inode數量等;inode表存放本地文件的inode結構;位圖記錄數據空間的數據塊使用情況;數據空間劃分為4 KB數據塊,存儲本地文件數據。另外,RZCFS分配一段NVM空間作為緩沖區池,存放網絡接收的命令包和數據包,以緩沖遠程文件的inode和數據。

全局變量Net Local結構用于連接RZCFS和網卡驅動。它包含超級塊和緩沖區池的虛擬地址和物理地址、緩沖區管理信息、網絡控制器信息、RZCFS與網卡驅動的函數句柄等。通過Net Local、RZCFS和網卡驅動都可以方便地訪問緩沖區池和數據空間。

圖3 RZCFS布局結構Fig.3 RZCFS layout

3.2 緩沖區管理

RZCFS有兩種網絡包:數據包和命令包。兩者通過以太包頭中的type字段進行區分,數據包的type字段為0x8000,命令包為0x8001。根據SANS框架,每3個數據包傳輸4 KB數據,長度依次為1512 B、1512 B、1120 B。命令包用于發送RZCFS的遠程調用命令,返回執行結果或遠程文件元數據,長度為256 B。緩沖區池為數據包和命令包提供一個統一的接收管理方案。

如圖4所示,將緩沖區池按4 KB大小分塊并對齊。根據SANS框架,每個緩存塊分為3段,按照數據包方式設置接收地址。由于命令包的長度始終小于數據包,所以該緩存塊既可以接收3個數據包,也可以接收3個命令包。RZCFS使用循環鏈表管理所有緩存塊,鏈表結點包括一個物理地址,即緩存塊的起始物理地址;一個狀態位,用于標記這個塊是否空閑。RZCFS只緩存元數據,不會緩存文件數據。RZCFS由高地址到低地址反向訪問緩沖區池,每次選擇一個空閑的緩存塊設置接收地址。反向遍歷緩沖區池使得包頭被接收在低地址側的相鄰緩存塊末端,而不會破壞之前緩存塊的數據。如果低地址側的相鄰緩存塊緩存了元數據,由于命令包長度遠小于數據包長度,16 B包頭仍舊不會覆蓋到其中的有效數據。由此避免了緩沖區池內的包頭覆蓋問題。

圖4 緩沖區管理Fig.4 Buffer pool management

網絡包的接收地址通過接收緩沖描述符RX BD來設置。每個RX BD對應一個網絡包,并存放著該包的長度、狀態、接收地址等信息。根據SANS框架,每3個RX BD配置一個緩存塊,稱為一個BD組。初始化時,將所有RX BD都配置為緩沖區池內空閑緩存塊的物理地址。每當接收新的網絡包后,被釋放的RX BD以BD組為單位配置為空閑緩存塊的物理地址,繼續為RZCFS提供接收緩沖區。

命令包與數據包的混雜可能導致當前的RX BD隊列沒有按組對齊,從而無法正確拼接數據包。RZCFS使用空包機制(Nothing OPeration, NOP)克服這個問題。當RZCFS發送命令包請求遠程數據時,會將本地RX BD中多余BD的數目也發送給遠程節點。由于RX BD的總數是對3整除的,所以多余BD的數目即當前RX BD序號除3的余數。當遠程節點接收到命令包后,先發送若干空包消耗掉多余RX BD,然后再發送數據包。此時本地節點上的RX BD隊列是按BD組對齊的,可以正確接收文件數據塊。顯然,在每次請求中,最多發送兩個NOP包。因此,對于大容量的數據傳輸,NOP包帶來的冗余非常小。

由于緩沖區池和數據空間區的分塊都按4 KB地址對齊,所以當數據塊按SANS框架拼接后,其物理地址也是按4 KB對齊的,從而滿足文件系統或應用程序的訪問要求。

3.3 遠程讀操作

圖5 讀遠程文件數據流圖Fig.5 Data flow diagram of reading remote file

圖5是讀遠程文件數據流圖。遠程節點接收到讀文件請求命令包后,RZCFS解析命令包中的參數,查找文件數據的物理地址。遠程節點先發送NOP包,然后按照SANS框架依次發送數據包。本地節點在緩沖區池中接收文件數據塊。如果應用程序使用可移植操作系統接口(Portable Operating System Interface of UNIX, POSIX )方式讀文件,還需要將文件數據從緩沖區池拷貝至用戶緩沖區;如果使用MMAP方式,RZCFS只需在缺頁中斷處理時返回緩沖區池中的文件數據物理地址,完成數據映射。從圖5可以看出,在遠程文件的讀路徑中,文件數據的發送與接收均是通過DMA完成,POSIX Read存在一次數據拷貝,MMAP方式不需要數據拷貝。

3.4 遠程寫操作

RZCFS使用預存機制解決數據空間區內的包頭覆蓋問題。在配置接收地址時,如果RZCFS檢測到數據塊位于數據空間區,則保存該數據塊起始地址前的16 B數據。在接收數據包時,如果檢測到接收地址位于數據空間區,則在數據塊拼接完成后,將對應的16 B數據恢復到原來位置。數據覆蓋僅發生在BD組內的最后一個數據包被接收后,并在中斷上下文中立刻恢復為原有數據,所以應用程序不會訪問到錯誤的文件數據。

圖6是寫遠程文件數據流圖。遠程節點接收到寫文件請求命令包后,根據命令包參數查找被寫文件的數據塊地址。由于遠程節點網絡包的默認接收地址為緩沖區池,為了減少數據拷貝,RZCFS會重新配置RX BD指向文件數據塊的物理地址。RX BD重設完畢后,遠程節點向本地節點發送寫請求應答命令包。由于第一個RX BD已經被網絡控制器硬件占用,無法重設其接收地址,所以本地節點先發送一個NOP包,消耗掉該BD后再發送文件數據。多發送一個NOP包來代替一次數據拷貝無疑是值得的,尤其是大塊數據寫入的情況。從圖6可以看出,在遠程文件寫路徑中,POSIX和MMAP均不需要數據拷貝,數據通過DMA直接接收在文件系統的數據空間區。

圖6 寫遠程文件數據流圖Fig.6 Data flow diagram of writing remote file

4 實驗結果與分析

4.1 原型系統

由于支持內存接口的大容量NVM產品還未商用,因此本文使用DRAM代替NVM開展實驗。與NVM相比,DRAM同樣支持隨機訪問且讀寫速度更快,RZCFS主要考慮了NVM的隨機訪問特性,因此使用DRAM模擬NVM測試性能是合理的。由于RZCFS的優化途徑是減少軟件冗余和拷貝次數,而NVM的拷貝延遲比DRAM更高,因此RZCFS在真實的NVM介質上將會比DRAM模擬環境下獲得更高的性能提升。

本文將ZedBoard開發平臺[19]作為物聯網中的計算節點,使用內存模擬NVM介質,實現并構建RZCFS。同時基于虛擬內存盤(Ramdisk)建立第四代擴展文件系統(fourth Extended file system, Ext4),并在此之上掛載網絡文件系統(Network File System, NFS),作為對比方案。為了避免性能損失,禁用了Ext4的日志功能。具體硬件配置見表1。

表1 硬件配置參數

4.2 延遲與吞吐量測試

本文使用文件系統標準測試工具IOzone[20]測試RZCFS和NFS-Ext4遠程數據的訪問性能。圖7展示了兩種方案訪問塊大小從1 KB到16 MB的情況,分別使用POSIX和MMAP方式訪問時的平均讀、寫延遲。在所有訪問粒度和方式下,RZCFS都表現出更低的讀、寫延遲。在最好情況下(塊大小為1 KB時),RZCFS比NFS-Ext4減少了99.19%的讀延遲,減少了98.44%的寫延遲。RZCFS通過零拷貝機制和精簡軟件棧,縮短了文件訪問路徑,降低了讀、寫延遲。隨著塊大小的增大,RZCFS的性能優勢變小。這是由于塊大小越大,相關的I/O調用次數和數據拷貝的開銷就越少,這緩解了NFS-Ext4的多層軟件棧和多次數據拷貝帶來的性能損失。但即便在16 MB塊大小下,RZCFS仍舊可以減少42.26%的讀延遲和58.82%的寫延遲。

圖8是RZCFS和NFS-Ext4的吞吐量性能對比。在POSIX方式下,RZCFS的順序讀和順序寫性能分別是NFS-Ext4的3.68~63.95倍和2.43~46.86倍;隨機讀和隨機寫性能提升更大,分別是3.61~90.07倍和5.74~86.41倍。這是因為,盡管NFS-Ext4的數據存儲在內存中,但訪問過程仍然需要經過多層網絡協議與塊設備軟件層次,從而產生不必要的數據拷貝。RZCFS通過融合網絡棧與存儲棧降低軟件開銷,并提供零拷貝訪問以減少數據遷移,從而大幅提高了文件系統的吞吐量。另外,順序寫的吞吐量高于順序讀是由于順序寫需要創建新的數據塊,造成了性能開銷。隨機寫比隨機讀的吞吐量高是因為寫操作是零拷貝訪問,而讀操作需要一次拷貝。在MMAP方式下,RZCFS在各種訪問粒度和讀寫模式下的吞吐量都比較穩定。相比于NFS-Ext4,RZCFS顯著提高了隨機讀寫性能。在塊大小為1 KB時,RZCFS的隨機讀和隨機寫速度分別快996倍和1297倍。這是因為NFS-Ext4基于頁高速緩存實現MMAP,大量小塊數據的隨機訪問導致了頻繁的缺頁中斷和上下文切換,嚴重影響了文件系統性能。

(a) 讀操作(a) Read operation (b) 寫操作(b) Write operation圖7 數據訪問延遲Fig.7 Latency of data access

(a) 順序讀操作(a) Sequential read operation (b) 順序寫操作(b) Sequential write operation

(c) 隨機讀操作(c) Random read operation (d) 隨機寫操作(d) Random write operation圖8 吞吐量性能Fig.8 Throughput performance

4.3 數據拷貝分析

RZCFS主要通過減少數據拷貝來提升數據訪問性能。為了驗證數據拷貝的影響,本文實現了一拷貝的遠程寫操作,即先在緩沖區池內接收文件數據,再將其拷貝至數據空間區。如圖9所示,零拷貝方案的吞吐量是一拷貝方案的1.54~1.87倍。塊大小為1 KB時,零拷貝性能提升最高,這說明減少數據拷貝可以有效提升小塊數據的訪問性能。

圖9 一拷貝性能分析Fig.9 Performance analysis of one-copy

4.4 CPU周期與緩存失效分析

為驗證RZCFS的性能細節,本文使用性能分析工具perf[21]抓取了MMAP下小文件隨機讀寫的CPU周期和緩存失效次數。在圖10中,隨著塊大小的減少,NFS-Ext4所消耗的CPU周期和產生的緩存失效急劇增加。在塊大小為1 KB時,RZCFS最多減少了98.59%的CPU周期,降低了99.03%的緩存失效。這是由于RZCFS的數據訪問避免了多層網絡協議和存儲軟件層次,使用零拷貝機制一次性傳輸多個數據頁,從而大大減少了CPU的負擔與緩存替換。

圖10 CPU周期與緩存失效分析Fig.10 Analysis of CPU cycles and cache misses

5 結論

本文為提升物聯網與邊緣計算中前端節點間的數據訪問效率,提出了一種新型遠程零拷貝文件系統。它基于通用網卡設備實現零拷貝的網絡數據傳輸;充分發揮NVM的優勢,避免數據緩存和遷移;精簡并融合網絡棧與存儲棧,縮短文件訪問路徑,降低數據訪問延遲。最終在節點間建立對等的網絡連接,提供高效、低延遲的遠程數據訪問性能。實驗結果表明,本文提出的遠程零拷貝文件系統有效減少了訪問延遲,大幅提升了吞吐量性能,顯著降低了處理器開銷和緩存失效次數,為NVM在物聯網和邊緣計算等領域的應用優化提供了技術支撐。

主站蜘蛛池模板: 狠狠综合久久久久综| 精品黑人一区二区三区| 成人在线观看不卡| 少妇高潮惨叫久久久久久| 污污网站在线观看| 最新日韩AV网址在线观看| 麻豆精品在线视频| 一级香蕉人体视频| AV无码国产在线看岛国岛| 亚洲 日韩 激情 无码 中出| 亚洲欧洲自拍拍偷午夜色| 夜色爽爽影院18禁妓女影院| 最新国产在线| 国产手机在线小视频免费观看| 一区二区理伦视频| 亚洲欧美综合在线观看| 毛片免费高清免费| 欧美激情综合一区二区| 一个色综合久久| 国产香蕉国产精品偷在线观看| 久久综合激情网| 亚洲69视频| www亚洲天堂| 国产精品hd在线播放| 日韩中文精品亚洲第三区| 亚洲日本一本dvd高清| 思思热精品在线8| 免费a在线观看播放| 香蕉伊思人视频| 亚洲国产中文在线二区三区免| 99久久精品免费看国产电影| 91小视频版在线观看www| 大学生久久香蕉国产线观看 | 日韩精品欧美国产在线| 色婷婷久久| 精品无码一区二区三区电影| 日本在线欧美在线| 欧美午夜在线视频| 亚洲精品国偷自产在线91正片| 手机精品福利在线观看| 国产福利免费视频| 精品国产成人高清在线| 福利视频一区| 91精品小视频| 国产精品永久免费嫩草研究院| 综合亚洲网| 91久久偷偷做嫩草影院| 蜜臀AV在线播放| 综合社区亚洲熟妇p| 91国内视频在线观看| 美女亚洲一区| 亚洲国语自产一区第二页| 97影院午夜在线观看视频| 人人爽人人爽人人片| 久久久久人妻一区精品| 国产青榴视频| 欧美激情综合一区二区| 手机精品视频在线观看免费| 亚洲最黄视频| 国产黄色视频综合| 亚洲色图欧美一区| 婷婷在线网站| 久久国产亚洲欧美日韩精品| 国产人人乐人人爱| 久久久噜噜噜| 成年免费在线观看| 国产一区二区三区免费观看 | 九九热精品在线视频| 久久亚洲美女精品国产精品| 激情综合婷婷丁香五月尤物| 色悠久久久久久久综合网伊人| 网友自拍视频精品区| 日本不卡在线播放| 少妇人妻无码首页| 久久免费视频播放| 国产色婷婷| 亚洲最大看欧美片网站地址| 国产乱论视频| 999国内精品久久免费视频| 97超爽成人免费视频在线播放| 人妻精品久久久无码区色视| 99re在线观看视频|