在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何用eBPF優化內存存儲功能

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-08-09 11:43 ? 次閱讀

1.背景

1212be9c-1793-11ed-ba43-dac502259ad0.png

隨著存儲設備的升級與發展,當代的存儲設備性能越來越高,延遲也越來越低。對于內核而言,Linux I/O 存儲棧的軟件所帶來的性能開銷已經越來越不可忽視。同樣在 512B 的隨機讀條件下,在采用二代 Optane SSD 作為存儲設備的測試例?中,內核軟件( Linux 存儲棧)所帶來的性能開銷已經?達 50%。

2.傳統方式與XRP

12273d40-1793-11ed-ba43-dac502259ad0.png

我們來看?個實際的例?,假設現在有?棵樹?為 4 的 B+ tree 存儲于存儲設備當中。當我們從根節點出發,?共需要經過三次訪盤才能獲得最終的葉?節點,?中間的索引節點對于?戶??沒有意義,但也需要經過?個完整的存儲棧路徑。?每次訪盤的過程中,存儲棧所花費的開銷就要整個存儲路徑的 48.6%。

1246a842-1793-11ed-ba43-dac502259ad0.png

顯然,冗?的存儲棧路徑鉗制了?性能存儲設備的發揮,那么?個直觀的優化思路便是通過 Kernel Bypass 的?式,繞開內核中存儲棧,以提升存儲性能。?前在學術界中,對于這??的?作有 Demikernel、Shenango、Snap 等,??業界中最為?泛使?的則是 Intel 的 SPDK。

126e8e8e-1793-11ed-ba43-dac502259ad0.png

然?,Kernel Bypass 技術并?銀彈,它雖然能夠降低內核存儲棧的開銷,但也存在著如下缺點:

1. 沒有適當粒度的訪問控制

2. 需要采? polling ?式來判斷 I/O 是否完成,這會導致在 I/O 利?率低時,Polling 進程所在的 CPU ?部分情況下只是在空轉,浪費 CPU 周期,同時 CPU 資源不能?效地在多進程中共享。

1284b696-1793-11ed-ba43-dac502259ad0.png

所謂 XRP 的全稱是 eXpress Resubmission Path(快速重提交路徑)。與 SPDK 完全繞開內核存儲棧,采? polling的?式來訪問存儲的?式不同,XRP 則是通過將中間請求直接在 NVMe 驅動層進? resubmission,從?避免讓中間請求通過冗?的存儲棧后再提交,從?達到加速的?的。反映到上?的例?當中,可以明顯地看到使? XRP 存儲訪問?式中,只有第?次請求和最后?次響應會經過?個完整的存儲棧路徑。顯然,在允許范圍內,B+ tree的樹?越?,XRP 的加速效果也就越明顯。

12ae9ed4-1793-11ed-ba43-dac502259ad0.png

既然優化思路有了,那么應當如何才能將請求重提交于 NVMe 驅動層呢?這?可以借鑒 XDP 的實現思路。XDP 通過 eBPF 來實現對每個數據包進?獨?的操作(數據包過濾、數據包轉發、數據包追蹤、?絡調度)。XRP 也可以通過 BPF 程序來實現。

12c0f4ee-1793-11ed-ba43-dac502259ad0.png

12ceabb6-1793-11ed-ba43-dac502259ad0.png

XRP 是?個使? eBPF 來降低內核存儲軟件開銷的系統。它所?臨的挑戰主要有:

1. 如何在 NVMe 驅動層實現對?件偏移的翻譯

2. 如何強化 eBPF verifier 以?持存儲應?場景

3. 如何重新提交 NVMe 請求

4. 如何與應?層 Cache 進?交互

12db1978-1793-11ed-ba43-dac502259ad0.png

XRP 引?了?種新的 BPF 類型(BPF_PROG_TYPE_XRP),包含了 5 個字段,分別是

1. char* data:?個緩沖區,?于緩沖從磁盤中讀取出來的數據

2. int done:布爾語意,表示 resubmission 邏輯是否應當返回給 user,還是應當繼續 resubmitting I/O 請求

3. uint64_t next_addr[16]:邏輯地址數組,存放的是下次 resubmission 的邏輯地址

4. uint64_t size[16]:存放的是下次 resubmission 的請求的??5. char* scratch:user 和 BPF 函數的私有空間,?來傳遞從 user 到 BPF 函數的參數。BPF 函數也可以?這段

空間來保存中間數據。處于簡單考慮,默認 scratch 的??是 4KB。

同時,為了避免因存在?限循環?導致 BPF Verifier 驗證失敗,代碼中指定了 B+ tree 的最?扇出數為

MAX_FANOUT,其值為 16。

12f357a4-1793-11ed-ba43-dac502259ad0.png

1302c298-1793-11ed-ba43-dac502259ad0.png

?前,最常?鏈式讀請求主要有 B-Tree 和 LSM Tree 兩種,? XRP 分別繼承了 BPF-KV(?個簡易的基于 B+ Tree的鍵值存儲引擎) 和 WIREDTIGER(mongoDB 的后端鍵值存儲引擎)。

3.實驗測試

13253e5e-1793-11ed-ba43-dac502259ad0.png

上圖為在 512B 隨機讀測試中,標準 read 和 XRP 之間的性能對?測試。可以看到隨著線程數的增加,XRP 的吞吐保持線性增?的態勢,同時 XRP 通過降低每次 I/O 請求時的 CPU 開銷,從?緩解了 CPU 爭?問題。

133de4a4-1793-11ed-ba43-dac502259ad0.png

134b9856-1793-11ed-ba43-dac502259ad0.png

上?兩幅圖中,同樣表示了在 512B 隨機讀測試中(CPU 核?數為 6),標準 read、XRP 和 SPDK 之間的吞吐量以及尾延遲的對?。在線程數?于等于 CPU 核?數時,三者性能變化穩定,從?到低依次為 SPDK > XRP >read。?當線程數超過了核?數時,SPDK 性能開始出現嚴重的下跌,標準 read 性能輕微下滑,? XRP 依然保持著穩定的線性增?。這主要是因為 SPDK 采? polling 的?式訪問存儲設備的完成隊列,當線程數超過核?數,線程之間對 CPU 的爭奪加上缺乏同步性,會導致所有線程都經歷尾部延遲顯著提升和整體吞吐量的顯著下降。

4.總結

137f2edc-1793-11ed-ba43-dac502259ad0.png

XRP 是?個將 BPF 應?來通?存儲函數的加速上的系統,它既能享受到 kernel bypass 的性能優勢,同時??須犧牲 CPU 的使?率和訪問控制。?前,XRP 團隊依然在積極地將 XRP 與其他?些流?的鍵值存儲引擎,如 RocksDB進?集成。

審核編輯:彭靜

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

    關注

    68

    文章

    10911

    瀏覽量

    213150
  • 存儲
    +關注

    關注

    13

    文章

    4359

    瀏覽量

    86212
  • 內存
    +關注

    關注

    8

    文章

    3064

    瀏覽量

    74383

原文標題:XRP:用eBPF優化內存存儲功能

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

收藏 人收藏

    評論

    相關推薦

    基于ebpf的性能工具-bpftrace腳本語法

    bpftrace 通過高度抽象的封裝來使用 eBPF,大多數功能只需要寥寥幾筆就可以運行起來,可以很快讓我們搞清楚 eBPF 是什么樣的,而暫時不關心 eBPF 復雜的內部機理。由于
    的頭像 發表于 09-04 16:04 ?1122次閱讀
    基于<b class='flag-5'>ebpf</b>的性能工具-bpftrace腳本語法

    內存優化

    軟件簡介:      內存優化王 能夠有效釋放應用程序在運行時未能及時釋放的內存資源,并提供給需要使用大量內存的程序使用。它在
    發表于 09-05 14:57

    內存分配及Cache優化

    內存分配及Cache優化   與PC機相比,DSP的程序數據存儲空間非常有限。因此,對于視頻編碼這種需要處理大量數據的程序而言,必須合理安排數據和程序的存儲方式,實現對
    發表于 08-10 14:54

    嵌入式系統內存優化使用

    嵌入式系統功能的提高,占用了較大內存空間,繼而時常出現運行無響應。基于用戶方面看,由于系統內存問題影響運行,針對系統內存與進程應用狀態研究,可以調整系統數值與執行文件elf分析,進行系
    發表于 11-04 06:23

    關于 eBPF 安全可觀測性,你需要知道的那些事兒

    離不開安全模式的 eBPF Verifier(其中最重要的是邊界檢查):擁有加載 eBPF 程序的流程所需的特權無 crash 或其他異常導致系統崩潰的情況程序可以正常結束,無死循環檢查內存越界檢查
    發表于 09-08 15:31

    openEuler 倡議建立 eBPF 軟件發布標準

    擴展到了網絡、內核、安全、跟蹤等,而且它的功能特性還在快速發展中,早期的 BPF 被稱為經典 BPF,簡稱 cBPF,正是這種功能擴展,使得現在的 BPF 被稱為擴展 BPF,簡稱 eBPF。如今
    發表于 12-23 16:21

    何用全波段測試法優化光器件性能

    何用全波段測試法優化光器件性能 通信界的最近進展主要集中于城域網和接入網,因為它們可以解決存儲局域網絡(SAN)、視頻
    發表于 03-17 11:26 ?761次閱讀

    基于小文件的內存存儲優化策略

    由于內存云RAMCloud采用日志段的方式存儲數據,因此當大量小文件存儲于RAMCloud集群時,每個小文件獨占整個段,會產生較多的段內碎片,從而導致內存的有效利用率較低以及大量的
    發表于 01-24 13:55 ?0次下載
    基于小文件的<b class='flag-5'>內存</b>云<b class='flag-5'>存儲</b><b class='flag-5'>優化</b>策略

    何用eBPF寫TCP擁塞控制算法?

    其實不想用這個題目的,只因為TCP相關的東西比較吸引人的眼球,這篇文章的主題還是eBPF,而不是TCP。 用eBPF寫TCP擁塞控制算法只是本文所講內容的一個再平凡不過的例子。 先看兩個問題,或者說
    的頭像 發表于 12-26 09:44 ?1726次閱讀

    eBPF是什么以及eBPF能干什么

    規則使用基于寄存器的虛擬機來描述包過濾的行為。比較常用的功能是通過過濾來統計流量,tcpdump工具就是基于BPF實現的。而eBPF對它進行了擴展來實現更多的功能。 主要區別如下: 1)允許使用C 語言編寫
    的頭像 發表于 07-05 15:17 ?1.2w次閱讀
    <b class='flag-5'>eBPF</b>是什么以及<b class='flag-5'>eBPF</b>能干什么

    美光推出一系列優化解決方案應對智能邊緣復雜內存存儲需求

    內存存儲解決方案領先供應商 Micron Technology, Inc.(美光科技股份有限公司,納斯達克代碼:MU)近日宣布擴展旗下嵌入式產品組合與生態系統合作伙伴陣容,推出一系列功能強大的
    的頭像 發表于 06-27 15:31 ?1332次閱讀
    美光推出一系列<b class='flag-5'>優化</b>解決方案應對智能邊緣復雜<b class='flag-5'>內存</b>與<b class='flag-5'>存儲</b>需求

    openEuler倡議建立eBPF軟件發布標準

    擴展到了網絡、內核、安全、跟蹤等,而且它的功能特性還在快速發展中,早期的 BPF 被稱為經典 BPF,簡稱 cBPF,正是這種功能擴展,使得現在的 BPF 被稱為擴展 BPF,簡稱 eBPF
    的頭像 發表于 12-06 10:29 ?606次閱讀

    基于ebpf的性能工具-bpftrace

    運行情況對于診斷問題、優化性能以及進行安全監控至關重要。bpftrace作為一款強大的跟蹤工具,為開發人員和系統管理員提供了一種獨特的方式來監視和分析Linux系統的內部運行。本文描述bpftrace的原理和使用。 bpftrace 「bpftrace是基于eBPF和BB
    的頭像 發表于 09-04 16:02 ?724次閱讀
    基于<b class='flag-5'>ebpf</b>的性能工具-bpftrace

    ebpf的快速開發工具--libbpf-bootstrap

    基于ubuntu22.04-深入淺出 eBPF 基于ebpf的性能工具-bpftrace 基于ebpf的性能工具-bpftrace腳本語法 基于ebpf的性能工具-bpftrace實戰
    的頭像 發表于 09-25 09:04 ?1079次閱讀
    <b class='flag-5'>ebpf</b>的快速開發工具--libbpf-bootstrap

    eBPF動手實踐系列三:基于原生libbpf庫的eBPF編程改進方案簡析

    在上一篇文章《eBPF動手實踐系列二:構建基于純C語言的eBPF項目》中,我們初步實現了脫離內核源碼進行純C語言eBPF項目的構建。libbpf庫在早期和內核源碼結合的比較緊密,如今的libbpf庫更加成熟,已經完全脫離內核源碼
    的頭像 發表于 03-19 14:19 ?926次閱讀
    <b class='flag-5'>eBPF</b>動手實踐系列三:基于原生libbpf庫的<b class='flag-5'>eBPF</b>編程改進方案簡析
    主站蜘蛛池模板: 国产毛片农村妇女系列 | 视频在线观看一区 | 你懂的免费在线 | 国产一区二区三区乱码 | 狠狠色96视频 | 国模无水印一区二区三区 | 国产chinesetube| 四虎永久网址影院 | 午夜爽视频 | 日本三级香港三级人妇99视 | 欧美性极品xxxxx | 天天透天天干 | 日本aaaaa级片 | 亚洲天堂视频在线观看免费 | 人人上人人干 | 欧美性天天 | 性色xxx | 天天插天天干天天射 | 欧美三级久久 | 18满xo影院视频免费体验区 | 深夜福利一区 | 成人午夜影院在线观看 | 亚洲综合成人网 | www.男人的天堂 | 六月婷婷色 | 国产亚洲精品自在久久77 | 高清一区二区三区四区五区 | 激情六月婷婷 | 成人综合在线视频 | 狠狠色丁香久久婷婷 | 一本大道香蕉大vr在线吗视频 | 最新天堂网 | 久久久免费 | 4虎影视国产在线观看精品 4虎影院永久地址www | 午夜精品久久久久久毛片 | 欧美一区二区三区大片 | 三级黄色短视频 | xxxx欧美xxxx黑人 | 夜夜操伊人| 久久国产精品免费观看 | 亚洲午夜久久久久影院 |