使用彈性eRDMA可以獲得超低的延遲,更快地處理請求。本文介紹如何在eRDMA增強型執行個體上部署共用記憶體通訊SMC(Shared Memory Communication)和Redis,然後基於SMC測試Redis處理請求的能力。
背景資訊
共用記憶體通訊SMC是一種相容socket層、使用共用記憶體技術實現的高效能核心網路通訊協定棧。根據共用記憶體技術的不同,SMC又可以細分為基於Internal Shared Memory(ISM)技術的SMC over DMA(SMC-D)和基於Remote Direct Memory Access(RDMA)技術的SMC over RDMA(SMC-R)。本文將為您介紹如何部署SMC-R並基於SMC-R進行測試。
步驟一:部署SMC
本步驟需要分別建立執行個體C(用戶端)和執行個體D(服務端)兩台執行個體,執行個體配置樣本如下:
規格:ecs.c7re.8xlarge
鏡像:Alibaba Cloud Linux 3.2104 LTS 64位
執行個體屬於同一安全性群組,預設內網互連
執行個體D主網卡的主私人IP:192.168.5.49
分別建立兩台eRDMA增強型ECS執行個體並遠端連線執行個體。
具體操作,請參見在企業級執行個體上配置eRDMA。
分別在執行個體C和執行個體D上執行以下命令,部署SMC-R模組。
modprobe smc && modinfo smc
分別在執行個體C和執行個體D上執行以下命令關閉原生IPv6模式,確保ERI下可以正常建立eRDMA串連。
sysctl net.ipv6.conf.all.disable_ipv6=1
分別在執行個體C和執行個體D上執行以下命令,開啟SMC eRDMA開關,使流量優先走eRDMA。
sysctl net.smc.tcp2smc=1
分別在執行個體C和執行個體D上執行以下命令,安裝SMC的監控診斷工具集smc-tools。
smc-tools是IBM開發的SMC-R監控診斷工具,為您提供了多個維度SMC-R跟蹤診斷,主要包括:
smcr:提供SMC-R相關資源統計資訊。
smcss:提供SMC socket相關資訊。
yum install -y smc-tools
安裝完成後,可以執行
smcss -a
命令查看當前的流量路徑。
步驟二:部署社區版Redis
在ECS執行個體上部署SMC後,您需要繼續在執行個體上部署Redis。本步驟中以執行個體C作為Redis用戶端、執行個體D作為Redis服務端介紹如何部署Redis。
分別為執行個體C和執行個體D安裝社區版Redis。
執行以下命令,下載社區版Redis的安裝包。
wget https://github.com/redis/redis/archive/refs/tags/6.2.5.zip
更多版本,請參見Redis Github專案地址。
執行以下命令,解壓安裝包並進入檔案目錄。
unzip 6.2.5.zip && cd redis-6.2.5
說明請確保您的Linux系統已經安裝了
unzip
命令。如果您的系統沒有安裝該命令,您可以通過執行yum install -y unzip zip
命令進行安裝。執行以下命令,編譯安裝Redis。
make -j
在執行個體D上執行以下命令,啟動Redis服務端。
./src/redis-server --bind 192.168.5.49 --port 6379 --protected-mode no --save
說明192.168.5.49為執行個體D主網卡的主私人IP,6379為需要監聽的連接埠,請您在自行測試時按實際情況替換。
在Redis用戶端上串連和測試Redis服務端。
執行以下命令,串連Redis服務端。
./src/redis-cli -h 192.168.5.49 -p 6379
執行以下命令,使用redis-benchmark進行壓測。
以下命令類比從100個用戶端向服務端發送1,000,000次SET命令的請求:
./src/redis-benchmark -h 192.168.5.49 -p 6379 -n 1000000 -t set -c 100
您也可以在開啟SMC-R後,啟動多個壓測進程進行混合壓測,參考以上步驟再部署1個Redis用戶端,在2個Redis用戶端上分別啟動多個壓測進程,然後在Redis服務端上查看每秒的操作次數OPS(Operation Per Second)。
在Redis用戶端上同時啟動8個SET壓測進程的樣本命令:
./src/redis-benchmark -h 192.168.5.49 -p 6379 -n 100000000 -t set --threads 8 -c 100
在Redis用戶端上同時啟動8個GET壓測進程的樣本命令:
./src/redis-benchmark -h 192.168.5.49 -p 6379 -n 1000000 -t get --threads 8 -c 100
在Redis服務端上查看OPS的樣本命令:
./src/redis-cli -h 192.168.5.49 -p 6379 info | grep instantaneous_ops_per_sec
說明請新開啟一個遠端連線視窗,然後輸入查看命令。