動態

詳情 返回 返回

SMC-R 透明加速 TCP 技術,在 Redis 場景下的應用實踐 | 乾貨推薦 - 動態 詳情

編者按:SMC-R 作為一套與 TCP/IP 協議平行、向上兼容 socket 接口、底層使用 RDMA 完成共享內存通信的內核協議棧,其設計意圖是為 TCP 應用提供透明的 RDMA 服務,同時保留了 TCP/IP 生態系統中的關鍵功能。本文轉自浪潮信息操作系統公眾號,介紹了在龍蜥操作系統衍生版 KeyarchOS (浪潮信息雲巒服務器操作系統)環境下,使用 SMC-R 透明加速 TCP 技術在 Redis 場景下進行應用驗證。

圖片

背景

當前 Linux 網絡協議棧是在性能(吞吐、CPU 使用率)、時延和通用性權衡下的實現。在真實場景中,常常需要高性能但是並不通用的用户態協議棧,亦或是通用、更高性能更低時延的方案,但是基於傳統以太網卡的方案很難有大幅度的提升,更多是基於硬件的紅利,例如 100G/400G 網絡。

在大規模數據中心內部,如何為跨服務器之間的數據傳輸,提供高性能、低延遲的通信,從而加速數據中心內不同服務器之間的數據共享、數據備份、容災等;在分佈式存儲系統中,如何為節點之間的數據傳輸,提供高帶寬、低延遲的存儲訪問,加速數據的讀寫操作,提高存儲系統的性能等;這些都成為新型網絡協議棧的應用場景。

簡介

共享內存通信(Shared Memory Communication,SMC)是一種兼容 socket 層,利用共享內存操作實現高性能通信的內核網絡協議棧。當共享內存通信基於遠程內存直接訪問(Remote Direct Memory Access,RDMA)技術實現時,稱為 SMC over RDMA(SMC-R)。

SMC-R 兼容 socket 接口的特點使得 TCP 應用程序無需任何改造即可運行在 SMC 協議棧上,底層使用的 RDMA 網絡使 SMC 擁有相較於 TCP 更好的網絡性能。SMC 協議棧通過 TCP 連接自主發現對側 SMC 能力,協商成功後使用 SMC 協議棧承載應用數據流量,協商失敗則安全回退至 TCP/IP 協議棧,保證數據正常傳輸。

協議透明替換

使用 SMC-R 協議有兩種方法。其一,是在應用程序中顯式創建 AF_SMC 族的 socket;
其二,是利用 LD_PRELOAD 或 ULP + eBPF 的方式透明的將應用程序中的 AF_INET 族 socket 替換為 AF_SMC 族 socket。我們默認使用 SMC-R 通信的節點已經加載了SMC 內核模塊,並通過這種方法將應用程序運行在 SMC-R 協議上。
對於第二種方法:
使用 LD_PRELOAD 實現協議棧透明替換,在運行 TCP 應用程序時預加載一個動態庫,在動態庫中實現自定義 socket() 函數,將 TCP應用程序創建的 AF_INET 類型 socket 轉換為 AF_SMC 類型的 socket,再調用標準 socket 創建流程,從而將 TCP 應用流量引入 SMC-R 協議棧。開源用户態工具集 smc-tools 中的 smc_run 指令即實現上述功能。

圖片
(圖/SMC-R 在高性能數據查詢和處理中的應用)

SMC-R 作為一套與 TCP/IP 協議平行、向上兼容 socket 接口、底層使用 RDMA 完成共享內存通信的內核協議棧,其設計意圖是為 TCP 應用提供透明的 RDMA 服務,同時保留了 TCP/IP 生態系統中的關鍵功能。基於此,本文針對 redis 數據庫應用場景,在無需對 redis 進行任何改造的情況下,測試使用 SMC-R 前後吞吐性能對比,結果如下:

圖片

測試結果:redis-banchmarh 測試中,SET 方法在使用 TCP 協議下,無論線程數或數據包大小場景下均比較穩定,在使用 SMC 協議下,提升幅度較大,達到 40% 以上,在線程數 8、數據包大小 64 情況下提升 60%。GET 方法測試結果與 SET 方法相近,性能提升趨勢也基本一致。

總結

基於 SMC-R 的高性能、透明替換等優勢,適用於網絡通信佔比高的場景,在 Redis 等高性能數據查詢與處理的場景,SMC-R 為應用提供無侵入式透明替換 TCP 協議棧的能力,無需應用二次開發和適配,即可為應用提升 QPS(Queries Per Second),在 Redis 應用場景下(64 字節、8 線程)可提升至 60%。

—— 完 ——

user avatar ting_61d6d9790dee8 頭像 iex365 頭像 aipaobudexiangjiao_cktinz 頭像
點贊 3 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.