使用弹性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
本步骤需要分别创建两台ECS实例(实例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查看当前的流量路径。
步骤二:部署社区版Redis
在ECS实例上部署SMC后,您需要继续在实例上部署Redis。本步骤中以实例C作为Redis客户端、实例D作为Redis服务端介绍如何部署Redis。
- 远程连接实例C和实例D。
- 分别为实例C和实例D安装社区版Redis。
- 在实例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服务端。
您也可以在打开SMC-R后,启动多个压测进程进行混合压测,参考以上步骤再部署1个Redis客户端,在2个Redis客户端上分别启动多个压测进程,然后在Redis服务端上查看每秒的操作次数OPS(Peration 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
说明 请新打开一个远程连接窗口,然后输入查看命令。