全部產品
Search
文件中心

Elastic Compute Service:基於eRDMA增強型執行個體部署Redis

更新時間:Jun 19, 2024

使用彈性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

  1. 分別建立兩台eRDMA增強型ECS執行個體並遠端連線執行個體。

    具體操作,請參見在企業級執行個體上配置eRDMA

  2. 分別在執行個體C和執行個體D上執行以下命令,部署SMC-R模組。

    modprobe smc && modinfo smc
  3. 分別在執行個體C和執行個體D上執行以下命令關閉原生IPv6模式,確保ERI下可以正常建立eRDMA串連。

    sysctl net.ipv6.conf.all.disable_ipv6=1
  4. 分別在執行個體C和執行個體D上執行以下命令,開啟SMC eRDMA開關,使流量優先走eRDMA。

    sysctl net.smc.tcp2smc=1
  5. 分別在執行個體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命令查看當前的流量路徑。smcss查看

步驟二:部署社區版Redis

在ECS執行個體上部署SMC後,您需要繼續在執行個體上部署Redis。本步驟中以執行個體C作為Redis用戶端、執行個體D作為Redis服務端介紹如何部署Redis。

  1. 遠端連線執行個體C和執行個體D

  2. 分別為執行個體C和執行個體D安裝社區版Redis。

    1. 執行以下命令,下載社區版Redis的安裝包。

      wget https://github.com/redis/redis/archive/refs/tags/6.2.5.zip

      更多版本,請參見Redis Github專案地址

    2. 執行以下命令,解壓安裝包並進入檔案目錄。

      unzip 6.2.5.zip && cd redis-6.2.5 
      說明

      請確保您的Linux系統已經安裝了unzip命令。如果您的系統沒有安裝該命令,您可以通過執行yum install -y unzip zip命令進行安裝。

    3. 執行以下命令,編譯安裝Redis。

      make -j
  3. 在執行個體D上執行以下命令,啟動Redis服務端。

    ./src/redis-server --bind 192.168.5.49 --port 6379 --protected-mode no --save
    說明

    192.168.5.49為執行個體D主網卡的主私人IP,6379為需要監聽的連接埠,請您在自行測試時按實際情況替換。

    community-redis-server

  4. 在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
    說明

    請新開啟一個遠端連線視窗,然後輸入查看命令。