基於 eBPF 技術加速 redis 數據庫
-
eBPF 總體框架
-
XDP 技術框架
-
內核協議棧消耗大量 cpu 資源
-
基於 eBPF 的 kernel memory cache【KMC】
-
用 Kernel memory cache 加速 redis 數據庫
-
與 TCP socket 交互
-
全景視圖
-
性能對比
eBPF 總體框架
eBPF 是一項革命性技術,它能在內核中運行沙箱程序,來運行用戶態編寫的代碼。基於現有的(而 非增加新的)抽象層來打造更加智能、 功能更加豐富的基礎設施軟件,而不會增加系統的複雜度, 也不會犧牲執行效率和安全性。
XDP 技術框架
XDP(eXpress Data Path)是一個 linux 內核數據包處理組件,該組件在網卡驅動中直接對收到的報文執行 BPF 程序,然後根據 BPF 程序的返回值對報文執行不同的操作。BPF 程序執行數據包解析、表查找、創建 / 管理有狀態過濾器、封裝 / 解封數據包等處理。
內核協議棧消耗大量 cpu 資源
大量的 overhead 消耗在內核協議棧以及系統調用上。
基於 eBPF 的 kernel memory cache【KMC】
用 Kernel memory cache 加速 redis 數據庫
-
1、get 命令,cache 中命中,直接回復 client 端
-
2、set 命令,更新 cache,然後送到協議棧處理
-
3、get 命令,cache 中 miss,從 redis server 中查找,回覆 client 端
與 TCP socket 交互
全景視圖
性能對比
理想情況下,redis 數據庫上吞吐提升至少 337%, redis 數據庫上 get 命令平均時延減少 84%。比直接上 DPDK 效果更優。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ad1QbpljED0FuCX3hlowww