基於 eBPF 技術加速 redis 數據庫

eBPF 總體框架

eBPF 是一項革命性技術,它能在內核中運行沙箱程序,來運行用戶態編寫的代碼。基於現有的(而 非增加新的)抽象層來打造更加智能、 功能更加豐富的基礎設施軟件,而不會增加系統的複雜度, 也不會犧牲執行效率和安全性。

XDP 技術框架

XDP(eXpress Data Path)是一個 linux 內核數據包處理組件,該組件在網卡驅動中直接對收到的報文執行 BPF 程序,然後根據 BPF 程序的返回值對報文執行不同的操作。BPF 程序執行數據包解析、表查找、創建 / 管理有狀態過濾器、封裝 / 解封數據包等處理。

內核協議棧消耗大量 cpu 資源

大量的 overhead 消耗在內核協議棧以及系統調用上。

基於 eBPF 的 kernel memory cache【KMC】

用 Kernel memory cache 加速 redis 數據庫

與 TCP socket 交互

全景視圖

性能對比

理想情況下,redis 數據庫上吞吐提升至少 337%, redis 數據庫上 get 命令平均時延減少 84%。比直接上 DPDK 效果更優。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ad1QbpljED0FuCX3hlowww