女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

λ-IO:存儲計算下的IO棧設計

SSDFans ? 來源:SSDFans ? 2024-12-02 10:35 ? 次閱讀

動機和背景

存儲計算&IO棧

存儲計算可以降低數據移動開銷并充分利用設備內帶寬,相比于特定計算加速,通用存儲計算框架可以允許用戶自定義卸載到存儲設備的計算邏輯。然而大部分工作都關注于控制存儲設備的接口和用戶空間,但是缺乏對主機側計算&存儲資源的充分利用。IO棧是管理存儲器的的基本組件,包括設備驅動、塊接口層、文件系統,目前一些用戶空間IO庫(如SPDK)有效降低了延遲,但是io棧仍然不可或缺。這是因為1)大部分引用采用POSIX接口需要IO棧的兼容性;2)IO棧提供了包括page cache、文件系統等多種功能模塊。而用戶空間IO庫只提供原始數據傳輸功能;3)IO??梢允沟貌煌脩?、應用充分共享存儲設備。

主機-設備協作

作者通過測試,發現不同特征的應用,對主機/設備具有不同的適應性。例如,在主機/設備側分別運行Stat64和stat32。stat64在主機側運行更快,stat32在設備側運行更快。另外,一個應用的不同運行階段,也具有不同的特征。例如使用warm page-cache策略運行stat64,發現無緩存時在設備上更快,緩存越多主機端越快。

eBPF

eBPF是一種內核中的虛擬機,允許用戶在不修改內核源碼的情況下運行一段代碼,其運行過程如下圖所示。因為eBPF可以提供硬件無關的字節碼格式,其可用于構建ISC運行時。然而,eBPF也存在一些問題:1)eBPF的靜態校驗器過于嚴格;2)缺乏指針訪問和動態長度循環機制。因此,需要對eBPF進行擴展以更好的支持存儲計算。

ee87e4a2-ade0-11ef-93f3-92fbcf53809c.png

設計方案

λ-IO通過擴展vanilla-IO框架,支持將計算動態卸載到內核/設備中進行計算。

它由三部分組成,如下圖所示:

λ-IO API:用于提供擴展的應用編程接口

λ運行時:包括λ內核運行時和λ設備運行時,用于提供λ請求的計算接口

請求分發器:用于評估效率,將任務自動分發給設備/內核執行。

ee9c9690-ade0-11ef-93f3-92fbcf53809c.png

λ-API

λ-API繼承了vanilla IO的open/close/read/write接口,并擴展了λ_load/ λ _read/λ_write接口用于應用提交計算卸載請求。其中,λ函數是計算方法的實體,load_ λ用于將λ函數編譯為eBPF代碼;而open_λ/close_ λ:與vanilla中的定義保持一致,可以使用vanilla/ λ擴展函數。

eeb93426-ade0-11ef-93f3-92fbcf53809c.png

pread_λ和pwrite_λ用于執行計算卸載,其中pread_λ表示以fd,offset,length表示的文件內容作為入參執行λ_id表示的λ函數,并將返回結果寫到buf中。其執行步驟為:1)將文件數據作為輸入數據加載到內存buffer中;2)為輸出數據分配buffer空間;3)執行λ函數;4)將輸出buffer的數據拷貝到用戶分配的buffer中。pwrite_λ與pread_λ類似,但是其輸入、輸出參數相反。

λ運行時

λ運行時是執行load_ λ, pread_ λ, pwrite _λ的核心,它的實現具有兩方面的關鍵挑戰:1)計算:內核/設備的λ運行時都需要保存、執行計算函數;2)數據:λ運行時需要保存、訪問文件數據和用戶應用信息。

作者通過允許sBPF對BPF代碼執行動態驗證,使能指針、循環將eBPF擴展為sBPF。其中,指針訪問的修改包括在JIT中增加指針地址檢測代碼,讓sBPF可以在運行中檢查指針,若指針未落在輸入buffer中,則停止執行并返回錯誤碼。另外,作者表示,所有循環都包括一個offset為負的跳轉指令,因此sBPF使用了一個動態的后跳計數器,并限制后跳的執行次數,以避免死循環的發生。作者之后對其安全性進行了分析,并表示雖然增加了功能,但由于檢驗嚴格,并不會增加eBPF的安全性風險。

關于數據問題,主要是設備/內核的一致性訪問問題。對于λ內核運行時,作者使用內核中通用的kernel_write和kernel_read訪問文件,讓內核管理頁緩存和文件一致性,另外為了減少讀寫文件引起的大規模內存搬移,作者提出kernel_mmap進行內存映射解決這個問題。

對于設備運行時的文件一致性訪問,作者提出,雖然由于設備對文件語義不可知,需要準確的物理地址,但是文件的IOCTL中由FIEMAP和FIBMAP用于提取元數據中的物理地址,可以解決設備的文件訪問問題。而一致性問題包括內核-用戶空間一致性和主機-設備一致性兩方面,對于內核-用戶空間一致性問題,由于采用的是標準syscall接口,內核可以管理一致性,而主機設備一致性問題則通過1)使用讀寫鎖避免同時訪問帶來的一致性風險;2)在分發λ請求前,將請求數據文件相關的臟頁刷入設備并清空緩存,可以解決其一致性問題。

請求分發器

請求分發器的目的是通過預測主機、設備對某個任務的執行時間,選擇其中更快的那個進行分發,以達到更快、更高效的目的。為了評估執行時間,需要對執行時間進行建模。

為此,首先對相關變量進行符號表示如下表。

D 存儲器中內容大小
Bs 存儲介質-控制器傳輸帶寬
Bd 主機-設備傳輸帶寬
Bh 主機計算的等效帶寬
α 輸入/輸出長度比值
β 設備/主機計算吞吐量比值

之后,對主機、設備端分別建模其執行時間,當不考慮緩存時,使用pread_λ在內核、設備端的執行時間如下公式所示

eec4cee4-ade0-11ef-93f3-92fbcf53809c.png

。當考慮緩存時,則其形式變為如下

eedf63d0-ade0-11ef-93f3-92fbcf53809c.png

。而pwrite_λ的執行時間則為

eef4a286-ade0-11ef-93f3-92fbcf53809c.png

。

評估

評估環境

本文中在一個配備4核8線程的[email protected],16GB DDR4內存的電腦上運行內核為linux 5.10.21的Ubuntu20.04LTS操作系統進行測試。存儲計算設備則采用Xilinx Zynq Ultrascale+ ZU17EG搭配2GB內存核64GBNand Flash。測試負載包括Stat64, Stat32, KNN, Grep, Bitmap。評估對比對象包括了1)Buffer IO(B):默認的vanilla IO;2)DirectIO(I):類似Buffer IO,但開啟O_DIRECT;3)Mmap(M):將數據文件讀入用戶空間,避免內核數據拷貝;4)λ-IO kernel(K):使用內核計算的λ-IO;5)λ-IO device(D):使用設備計算的λ-IO;6)λ-IO(λ):啟用請求分發的λ-IO。

單應用性能測試

對單個應用的性能分析,作者將執行時間細分為三部分:IO/計算/其他。首先對比λ-IO Device(d)和Buffer IO(B)??梢园l現,d相比B,Stats64, KNN, Grep, Bitmap分別提升23.24%, 10.82%, 87.13%, 60.15%。這是由于主機端IO時間占比超過92.04%。另外,由于設備僅有4核4線程,而主機發送請求為8線程,因此出現了請求排隊現象。在stat32中d執行時間超過B 6.65倍 ,是由于64位eBPF對32位程序執行效率不高導致的。

之后作者對比了λ-Io Kernel(k)核vanilla-IO(B)之間的性能差異,并發現二者性能基本相同。λ-IO由于sBPF增加了運行時動態檢驗,帶來了部分額外開銷,但是又因為kernel_mmap避免了內存復制的開銷,二者基本相互抵消。

最后作者對比了λ-IO不同模式之間的性能差異,并發現,引入請求分配器的λ-IO在每項測試中的性能都基本相當于k、d模式下更快的那一個,并且通過對比,可以發現請求分配器帶來的額外開銷約為4.98%。

eeff49ac-ade0-11ef-93f3-92fbcf53809c.png

多應用評估

作者通過同時運行5種負載之二評估同時運行不同負載的性能差別。發現,當運行項包括stat32時,Stat32被分發到主機,另一個分發到設備運行,因此λ-IO性能提升2.19倍,其他情況下λ-IO也有1.98倍的整體性能提升。

ef26d6d4-ade0-11ef-93f3-92fbcf53809c.png

敏感性分析

作者接著進行了敏感性分析。首先是數據集大小敏感性,作者使用stat64測試為例,發現在緩存>數據集大小時,由于避免了IO瓶頸,內核性能最佳,當緩存≈數據大小時,頁緩存的影響變小,λ-IO性能更好,當數據>緩存大小時,λ-IO由于高效分發請求,比其他對照組快1.28-1.60倍不等。

接著是熱啟動敏感性,作者發現Buffer-IO在熱啟動下性能比冷啟動更好一些,但是λ-IO性能仍是Buffer-IO的4.05倍。

之后作者分析了請求分發器的預測周期和預測長度的敏感性,發現,當預測周期超過200后,性能基本不發生改變,因此將默認預測周期設為200,而對于預測長度,可以看到隨著預測長度增加,執行時間迅速增長,因此默認預測長度被設為5。

ef47eebe-ade0-11ef-93f3-92fbcf53809c.png

ef671488-ade0-11ef-93f3-92fbcf53809c.png

對于緩存大小和線程數量,可以看到大部分應用對緩存大小不敏感,且大部分應用隨著線程數增長而增長,并在4線程時基本觸頂。

BPF開銷

通過對比運行時間,作者表示sBPF相比eBPF,循環檢查對內核/設備增加不超過2.44%和10.09%的開銷,加上指針檢查,sBPF對內核/設備引入不超過16.96%和22.68%的額外開銷。

ef7023de-ade0-11ef-93f3-92fbcf53809c.png

Spark SQL

作者最后將spark SQL移植適配λ-IO,并測試了其在TPC-H負載下的真實性能表現。對比發現在buffer-IO模式下,IO占用了27.02%-60.41%的總時間,λ-IO Kernel與buffer-IO類似,λ-IO將任務分發至設備,提升最高81.55%的性能,暖啟動后λ-IO比B/K/D分別提升2.15、2.16、1.51倍,在CPU密集型任務中Q20任務在D中執行時間比K少18.45%。

ef7ad9d2-ade0-11ef-93f3-92fbcf53809c.png

ef8768dc-ade0-11ef-93f3-92fbcf53809c.png

總結

在本文中提出了λ-IO,其擴展了Linux IO,使計算能夠卸載到主機內核和設備。作者在真實的軟硬件環境中實現并評估了λ-IO,其顯示出顯著的性能提升。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11465

    瀏覽量

    212817
  • BPF
    BPF
    +關注

    關注

    0

    文章

    26

    瀏覽量

    4269
  • IO棧
    +關注

    關注

    0

    文章

    2

    瀏覽量

    580

原文標題:λ-IO:存儲計算下的IO棧設計

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    IO如何實現

    。為了提供系統吞吐量, 降低硬件資源的開銷,IO模型也在不斷適應大規模、高并發需求不斷演進,今天我們就來看看這個在網絡上高頻出現的詞匯 IO模型 linux IO模型 首先我們要明確,用戶程序從
    的頭像 發表于 09-25 10:57 ?1202次閱讀
    <b class='flag-5'>IO</b>如何實現

    簡單說一下阻塞IO、非阻塞IO、IO復用的區別?

    對于計算機而言,任何涉及到計算機核心(CPU和內存)與其他設備間的數據轉移的過程就是IO。
    的頭像 發表于 03-04 15:14 ?1800次閱讀
    簡單說一下阻塞<b class='flag-5'>IO</b>、非阻塞<b class='flag-5'>IO</b>、<b class='flag-5'>IO</b>復用的區別?

    緩存和RAID如何提高IO

    在這些存儲技術中使用最廣的就是高速緩存(Cache)和磁盤冗余陣列(RAID)了,本文就將探討緩存和磁盤陣列提高存儲IO性能的方法。
    發表于 03-28 11:56 ?3354次閱讀

    DSP的存儲器及IO空間

    DSP的存儲器及IO空間,DSP最好的教程,沒有之一
    發表于 01-06 15:04 ?1次下載

    不同應用程序的存儲IO類型解析

    的數據訪問類型有所不同。 本文描述典型的不同應用程序的存儲IO類型。幫助讀者了解不同應用程序存儲IO類型的同時,提供的數據也可以為存儲模擬和
    的頭像 發表于 11-30 15:21 ?2455次閱讀
    不同應用程序的<b class='flag-5'>存儲</b><b class='flag-5'>IO</b>類型解析

    鴻蒙系統 IO和Linux IO對比分析

    。所以我們就拿 liteos_a 系統來分析一下它的 IO 吧,畢竟它應對的場景更加復雜一些。 鴻蒙系統 l
    的頭像 發表于 10-16 10:45 ?2496次閱讀
    鴻蒙系統 <b class='flag-5'>IO</b><b class='flag-5'>棧</b>和Linux <b class='flag-5'>IO</b><b class='flag-5'>棧</b>對比分析

    如何使用io.Reader和io.Writer接口在程序中實現流式IO

    Go 語言標準庫 io 包內有一些常用接口和方法,本文配合圖片和實際代碼,詳細介紹了 io 包。 前言 在 Go 中,輸入和輸出操作是使用原語實現的,這些原語將數據模擬成可讀的或可寫的字節流。 為此
    的頭像 發表于 07-29 16:46 ?3536次閱讀

    簡要敘述分布式IO和遠程IO的區別

    遠程IO與分布式IO的區別是什么?讓很多人糊涂,到底什么是遠程IO,什么是分布式IO,網上包括各種聲音,連行內有經驗的老師們也可能把分布式IO
    的頭像 發表于 12-29 11:59 ?1.2w次閱讀
    簡要敘述分布式<b class='flag-5'>IO</b>和遠程<b class='flag-5'>IO</b>的區別

    現代異步存儲訪問API探索:libaio、io_uring和SPDK

    最近的高性能存儲設備暴露了現有軟件的低效,因而催生了對I/O的改進。Linux內核的最新API是io_uring。作者提供了第一個針對io
    的頭像 發表于 06-27 10:54 ?1729次閱讀
    現代異步<b class='flag-5'>存儲</b>訪問API探索:libaio、<b class='flag-5'>io</b>_uring和SPDK

    信號驅動IO與異步IO的區別

    一. 談信號驅動IO (對比異步IO來看) 信號驅動IO 對比 異步 IO進行理解 信號驅動IO: 內核將數據準備好的時候, 使用SIGIO
    的頭像 發表于 11-08 15:32 ?1408次閱讀
    信號驅動<b class='flag-5'>IO</b>與異步<b class='flag-5'>IO</b>的區別

    亞信電子推出全新IO-Link設備軟件協議解決方案

    亞信電子提供完整的EtherCAT從站轉IO-Link主站網關和IO-Link設備軟件協議解決方案,使客戶能夠將最新的IO-Link智能傳感器和執行器等設備,輕松地導入EtherCA
    的頭像 發表于 01-16 11:24 ?769次閱讀
    亞信電子推出全新<b class='flag-5'>IO</b>-Link設備軟件協議<b class='flag-5'>棧</b>解決方案

    亞信電子推出全新IO-Link設備軟件協議解決方案

    亞信電子提供完整的EtherCAT從站轉IO-Link主站網關和IO-Link設備軟件協議解決方案,使客戶能夠將最新的IO-Link智能傳感器和執行器等設備,輕松地導入EtherCA
    的頭像 發表于 01-17 08:11 ?780次閱讀
    亞信電子推出全新<b class='flag-5'>IO</b>-Link設備軟件協議<b class='flag-5'>棧</b>解決方案

    遠程IO與分布式IO的區別

    在工業自動化和控制系統設計中,遠程IO(Input/Output)和分布式IO是兩個重要的概念。它們各自具有獨特的特點和優勢,適用于不同的應用場景。本文將詳細探討遠程IO與分布式IO
    的頭像 發表于 06-15 15:57 ?3783次閱讀

    初識IO-Link及IO-Link設備軟件協議

    亞信IO-Link設備軟件協議是基于亞信電子AXM-IOLS IO-Link設備評估板設計的,搭載意法半導體 STM32F469AI微控制器,并在STM32CubeIDE開發環境中進行開發。此
    的頭像 發表于 07-08 13:55 ?3761次閱讀
    初識<b class='flag-5'>IO</b>-Link及<b class='flag-5'>IO</b>-Link設備軟件協議<b class='flag-5'>棧</b>

    亞信電子于IAS 2024展出最新IO-Link主站&amp;設備軟件協議解決方案

    亞信電子即將于IAS 2024展示最新的亞信IO-Link主站/設備軟件協議、集成亞信IO-Link主站軟件協議的AX58400 EtherCAT轉
    的頭像 發表于 09-18 15:28 ?616次閱讀
    亞信電子于IAS 2024展出最新<b class='flag-5'>IO</b>-Link主站&amp;設備軟件協議<b class='flag-5'>棧</b>解決方案