本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文将介绍如何启用SMC,如何设置SMC加速范围以及如何配置SMC暴露出的各种接口以获得最佳的加速效果。
在阿里云ECS上使用SMC
Alibaba Cloud Linux 3提供并优化了SMC-R内核协议栈,您可以通过以下步骤使用SMC-R。
前期准备
创建支持ERI的ECS实例。
SMC-R基于RDMA实现,在阿里云上使用SMC-R需要创建支持ERI功能的ECS实例,以获得云上弹性RDMA(eRDMA)能力。具体操作,请参见在企业级实例上使用eRDMA。
阿里云eRDMA设备与SMC目前均不支持使用IPv6地址。如果应用层使用IPv6地址,会导致SMC回退到TCP协议栈。
加载
smc
和smc_diag
内核模块。sudo modprobe smc sudo modprobe smc_diag
通过
dmesg
命令查看内核打印信息。如果看到如下信息,说明加载成功。smc: smc: load SMC module with reserve_mode NET: Registered protocol family 43 smc: netns <netns ID> reserved ports [65500 ~ 65515] for eRDMA OOB smc: adding ib device erdma_0 with port count 1 smc: ib device erdma_0 port 1 has pnetid
(可选)不再使用SMC后可通过下述方式卸载SMC模块。
sudo rmmod smc_diag sudo rmmod smc
执行以下命令,安装
smc-tools
和aliyun-smc-extensions
运维工具。sudo yum install -y smc-tools sudo yum install -y aliyun-smc-extensions
将应用程序的TCP socket运行于SMC协议栈
Alibaba Cloud Linux 3 SMC-R支持两个维度的socket协议透明转换。
net namespace维度socket协议转换
Alibaba Cloud Linux 3提供了net namespace
维度的socket协议透明转换功能,可以通过sysctl net.smc.tcp2smc
开关将net namespace
中所有符合如下条件的TCP socket转换为SMC socket。
family
为AF_INETtype
为SOCK_STREAMprotocol
为IPPROTO_IP(0)或IPPROTO_TCP(6)
替换过程如下图所示。
在net namespace
维度开启透明转换的操作步骤如下。
执行以下命令,打开
net namespace
范围全局替换开关net.smc.tcp2smc
。此后新创建的TCP socket将被转变为SMC socket,而存量的TCP socket不受影响。
sudo sysctl net.smc.tcp2smc=1
默认情况下,
sysctl net.smc.tcp2smc=0
,处在禁用状态。执行以下命令,在当前
net namespace
中运行任意TCP socket应用程序。示例中的
foo
需替换为具体程序名。./<foo>
此时
foo
应用程序创建的TCP socket将被透明替换为SMC socket,由SMC-R协议栈处理应用程序网络行为。如原理概述中所述,如果通信对端同样支持SMC-R协议并协商成功,则两端将基于RDMA网络完成数据传输,否则将安全回退使用TCP网络传输。(可选)执行以下命令,关闭
net namespace
范围全局替换开关。此后新创建的TCP socket不再被转换,而存量已被转换的SMC socket不受影响。sudo sysctl net.smc.tcp2smc=0
进程维度socket协议转换
Alibaba Cloud Linux 3还提供了进程维度的协议透明转换功能,该功能的使用基于SMC运维工具smc-tools
。
使用smc-tools
工具中的脚本smc_run
运行应用程序,smc_run
通过环境变量LD_PRELOAD
将smc-tools
工具集中的libsmc-preload.so
定义为优先加载的动态库。libsmc-preload.so
将把应用程序及其子进程中符合如下条件的TCP socket转换为SMC socket。
family
为AF_INETtype
为SOCK_STREAMprotocol
为IPPROTO_IP(0)或IPPROTO_TCP(6)
smc_run
使用LD_PRELOAD
来拦截glibc
中的socket()
系统调用,因此对不使用glibc
或是静态链接的应用无效。
替换过程如下图所示。
在进程维度开启透明转换的操作步骤如下。
执行以下命令,在应用程序foo
执行命令前增加smc_run
前缀。
示例中foo
需替换为具体进程名。
smc_run ./<foo>
此时foo
应用程序创建的TCP socket将被透明替换为SMC socket,由SMC-R协议栈处理应用程序网络行为。如原理概述中所述,如果通信对端同样支持SMC-R协议并协商成功,则两端将基于RDMA网络完成数据传输,否则将安全回退使用TCP网络传输。
基于BPF策略的SMC协商控制
在实际使用中,net namespace
或进程维度的SMC使能有时粒度仍然过粗。例如,服务端在net namespace
中有多个网络监听端口,希望仅针对有性能加速诉求的端口上的连接使用SMC,对其余如管控端口上的连接安全回退到使用TCP通信。
为此,Alibaba Cloud Linux 3在上述维度开启SMC透明转换的基础上,支持进一步使用BPF技术控制连接是否使用SMC协商。典型流程为:
使能和配置BPF策略,设置细粒度的SMC协商控制。
开启
net namespace
或进程维度的SMC使能。具体操作,可参见将应用程序的TCP socket运行于SMC协议栈。
如原理概述中所述,通信双方在TCP连接握手过程中使用特殊的TCP选项标明自身支持SMC-R,并确认对端是否同样支持SMC-R。一旦协商成功,后续通信双方的网络传输将基于RDMA网络完成,否则将安全回退到使用TCP网络传输。
默认情况下,SMC socket总是会发起和响应这个特殊的TCP选项。但是可以通过BPF技术进一步基于端口或IPv4地址的策略来控制是否发起或响应这个特殊的TCP选项,从而实现更细粒度的SMC使能控制。
为此,Alibaba Cloud Linux 3在smc-tools
中提供smc-ebpf
工具来实现BPF策略的使能和配置。
执行下列命令,查看smc-ebpf
是否安装成功。
smc-ebpf policy help
结果如下所示,说明smc-ebpf
安装成功。
smc-ebpf policy help
Usage: smc-ebpf policy COMMAND [OPTIONS]
smc-ebpf policy load [OPTIONS] load policy
--init load policy with pre-defination config
smc-ebpf policy stop stop policy
smc-ebpf policy unload unload policy
smc-ebpf policy init init policy with default config
smc-ebpf policy clear clear all policy config
smc-ebpf policy dump display all policy config
smc-ebpf policy config [OPTIONS] config policy
smc-ebpf policy delete [OPTIONS] delete policy
--ip [IPv4] target IPv4 address
--port target port
--mode [auto|disable|enable] target mode
Examples:
smc-ebpf policy load
#disable port 80 to use smc
smc-ebpf policy config --port 80 --mode disable
#delete ip xxx.xxx.x.x/24 policy
smc-ebpf policy delete --ip xxx.xxx.x.x --mask 24
加载smc-ebpf
执行下列命令,加载smc-ebpf
。
sudo smc-ebpf policy load
smc-ebpf
需要在待配置的连接创建前完成加载,即smc-ebpf
对在其加载前创建的连接无效。smc-ebpf
配置的策略是系统全局的,无法针对特定的netns(容器)进行独立配置。smc-ebpf
相关功能仍在持续推进上游社区标准化中,未来存在接口的变动的可能,目前仅作为实验性功能。
结果如下所示,表示加载成功。
# sudo smc-ebpf policy load Registered smc_sock_negotiator_ops anolis_smc id xxx
否则,在当前环境中无法使用这项功能。原因排查方向包括:
确认操作系统内核版本在
ANCK 5.10.134-016
及以上。您可以通过uname -r
命令查看内核版本。确认您有权限加载BPF程序,一个常见的原因可能是您使用的POD容器没有加载BPF程序的能力或者您的用户特权等级不足,您可以向您环境的提供商咨询更多信息。
端口策略默认行为
smc-ebpf
加载后,若没有任何端口策略匹配目标端口时,默认禁止目标端口使用SMC协商。
例如:
smc-ebpf
加载后未配置任何端口策略,那么所有端口都被禁止使用SMC协商;smc-ebpf
加载后仅配置一条允许80端口使用SMC协商的策略。那么使用8080端口时,由于没有任何策略匹配到8080端口,则禁止8080端口使用SMC协商;
特别地,您可以通过执行以下命令,将端口0
配置为enable
来修改默认行为到:在没有任何端口策略匹配目标端口时,允许目标端口使用SMC协商。
sudo smc-ebpf policy config --port 0 --mode enable
同样地,您可以通过执行以下命令,将端口0
配置为disable
来再次改变默认行为到:在没有任何端口策略匹配目标端口时,禁止目标端口使用SMC协商。
sudo smc-ebpf policy config --port 0 --mode disable
配置基于端口的策略
在默认行为的基础上,可添加针对特定端口的策略。
例如:
示例一:只允许80端口使用SMC协商,其他端口均禁止使用SMC协商。
执行以下命令,添加允许80端口使用SMC协商的策略。
sudo smc-ebpf policy config --port 80 --mode enable
执行以下命令,查看端口策略配置结果。
sudo smc-ebpf policy dump
输出结果示例:
"key": 80
代表策略针对端口80。"mode":
代表禁止或允许使用SMC协商,2
代表允许,0
代表禁止。
# sudo smc-ebpf policy dump [{ "key": 80, "value": { "mode": 2, [其余字段普通使用者无需关注] } } ]
若不再需要此策略,执行以下命令,删除上述针对80端口的策略。
sudo smc-ebpf policy delete --port 80
再次执行
dump
命令,结果如下所示,说明配置被成功删除。# sudo smc-ebpf policy dump []
示例二:只禁止80端口使用SMC协商,其他端口均允许使用SMC协商。
执行以下命令,修改默认行为到:在没有任何端口策略匹配目标端口时,允许目标端口使用SMC协商。并添加禁止80端口使用SMC协商的策略。
sudo smc-ebpf policy config --port 0 --mode enable sudo smc-ebpf policy config --port 80 --mode disable
此后只有80端口被禁止使用SMC协商,其他没有匹配策略的端口则被允许使用SMC协商。
IPv4地址策略默认行为
与端口策略不同的是,IPv4地址策略仅对Client socket有效,用于在Client socket连接Server时根据Server IPv4地址控制Client是否使用SMC协商。
所有配置的端口和IPv4地址策略共同组成“与”逻辑,即连接匹配的所有策略均允许使用SMC协商时才会使用SMC协商,任意匹配条件禁止使用SMC协商时均不会使用SMC协商。
smc-ebpf
加载后,若没有任何IPv4地址策略匹配目标Server IP时,默认允许对目标Server IP使用SMC协商。
例如:
smc-ebpf
加载后未配置任何IPv4地址策略,那么Client socket连接所有Server IP时都被允许使用SMC协商;smc-ebpf
加载后仅配置一条禁止在访问192.168.1.0/24
时使用SMC协商的策略。那么在访问192.168.3.11
时,由于没有任何策略匹配到192.168.3.11
,则允许在访问192.168.3.11
时使用SMC协商;
特别地,您可以通过执行以下命令,将0.0.0.0/32
配置为disable
来修改默认行为到:在没有任何IPv4地址策略匹配目标Server IP时,禁止对目标Server IP使用SMC协商。
sudo smc-ebpf policy config --ip 0.0.0.0 --mask 32 --mode disable
同样地,您可以通过执行以下命令,将0.0.0.0/32
配置为enable
来恢复默认行为到:在没有任何IPv4地址策略匹配目标Server IP时,允许对目标Server IP使用SMC协商。
sudo smc-ebpf policy config --ip 0.0.0.0 --mask 32 --mode enable
配置基于IPv4地址的策略
在默认行为的基础上,可配置针对IPv4地址的策略,用于在Client socket连接特定Server IP时控制Client是否使用SMC协商。
设置的IPv4地址过滤规则只针对Client socket连接Server IPv4地址时控制Client是否使用SMC协商。Server socket是否使用SMC协商不受IPv4地址过滤规则的影响。
例如:
示例一:只允许Client在连接192.168.2.0/24时使用SMC协商,访问其他服务端时均禁止使用SMC协商。
执行以下指令,将
0.0.0.0/32
配置为disable
来修改默认行为到:在没有任何IPv4地址策略匹配目标Server IP时,禁止对目标Server IP使用SMC协商。并添加允许对192.168.2.0/24服务端地址使用SMC协商的策略。sudo smc-ebpf policy config --ip 0.0.0.0 --mask 32 --mode disable sudo smc-ebpf policy config --ip 192.168.2.0 --mask 24 --mode enable
执行以下指令,查看IPv4策略设置结果。
sudo smc-ebpf policy dump
输出结果示例:
key
:代表策略针对的IPv4地址;value
:代表禁止或允许使用SMC协商,pass
代表允许,denied
代表禁止。
# sudo smc-ebpf policy dump key: 0.0.0.0/32 value: "denied" key: 192.168.2.0/24 value: "pass"
若不再需要上述IPv4地址策略,执行以下命令,删除针对
0.0.0.0/32
和192.168.2.0/24
的策略。sudo smc-ebpf policy delete --ip 192.168.2.0 --mask 24 sudo smc-ebpf policy delete --ip 0.0.0.0 --mask 32
示例二:只禁止Client在连接
192.168.2.0/24
时使用SMC协商,访问其他服务端时均允许使用SMC协商。执行以下指令,添加禁止对
192.168.2.0/24
服务端地址使用SMC协商的策略。sudo smc-ebpf policy config --ip 192.168.2.0 --mask 24 --mode disable
无需其他操作,因为
smc-ebpf
加载后,若没有任何IPv4地址策略匹配目标Server IP时,默认允许对目标Server IP使用SMC协商。所以除192.168.2.0/24
以外的服务端地址均允许使用SMC协商。
清除策略
执行以下命令,清除所有配置的策略。
sudo smc-ebpf policy clear
执行后所有配置将会被删除,此时默认行为将恢复到:禁止协商SMC,即针对所有端口均禁止使用SMC协商,针对所有IPv4地址均允许使用SMC协商,两类策略共同组成“与”逻辑,最终禁止所有连接使用SMC协商。
在阿里云ACK上使用SMC
在阿里云容器服务ACK中,可以通过ACK eRDMA Controller组件启用SMC。eRDMA Controller提供了eRDMA网卡的管理、调度以及Pod的网络能力。具体操作,请参见使用SMC-R透明加速应用网络。
与在阿里云ECS上使用SMC类似,在阿里云ACK上使用SMC同样可以在Node上配置基于BPF的SMC细粒度使能策略。
参数配置说明
SMC协议栈通过sysfs
及用户态工具smc-tools
等方式提供多种配置接口,以下将介绍SMC的可配置功能。
通过sysfs配置参数
内核参数 | 参数说明 | 内核版本限制 | 配置建议 |
内核参数 | 参数说明 | 内核版本限制 | 配置建议 |
net.smc.autocorking_size | SMC-R提供autocork特性,功能上与TCP autocork类似,将多个小数据包聚合成更大的数据包一次性发送,在不影响乒乓时延性能的前提下,提高小包场景下的吞吐性能。 autocorking_size用于配置聚合数据包的上限大小。 默认值:65535。 有效值:0~4294967295,0表示关闭。 | 内核 | 在小包且注重带宽的场景中,可调整此参数至合适的数值,以实现最佳的带宽效果。 在 |
net.smc.autosplit_size | SMC提供autosplit特性,将一个大数据包拆分成多个小数据包分批发送,以提高大包场景下的时延性能。当数据包大小超过autosplit_size的1.3倍时,将被拆分。 默认值:131072。 有效值:32768~536870912。 | 内核:
| 在大包且注重时延的场景中,可以适当调整此参数,以达到最佳的时延效果。 |
net.smc.experiment_vendor_options | 阿里云实验特性选项。 默认值:4294967295(0xFFFFFFFF)。 | 内核 | 不建议修改。 |
net.smc.global_mem | SMC整机内存水位控制,当SMC协议栈所维持的收发缓冲区大小大于等于 默认值:[25%整机内存,50%整机内存,75%整机内存]。 | 内核:
| 可根据期望的内存水位配置 |
net.smc.limit_smc_hs | 控制是否在建连压力大时主动回退到TCP。 默认值:1。 有效值:
| 内核:
| 建议设置为1,开启。 在特定情况下,如不希望SMC协议栈根据连接压力自动回退,可将其设置为0。 |
net.smc.mem | SMC在当前 默认值:[25%整机内存,50%整机内存,75%整机内存]。 | 内核:
| 可根据期望的内存水位配置 |
net.smc.rmem | SMC socket默认接收缓冲区大小。没有使用 默认值:262144。 有效值:
| 内核 |
具体内容,请参见协议栈监控 |
net.smc.wmem | SMC socket默认发送缓冲区大小。没有使用 默认值:262144。 有效值:
| 内核 |
具体内容,请参见协议栈监控 |
net.smc.smcr_buf_type | SMC-R的收发缓冲区内存类型。使用物理连续内存能够拥有更优性能,但是通常物理连续内存难以获得,可能会导致缓冲区降级到比预期小。相反,虚拟连续内存较易获取,但性能会稍逊。 修改此值后,将在新创建的LGR所承载的SMC连接上生效,已有的LGR不受影响。 默认值:2。 有效值:
| 内核 | 不建议修改。 |
net.smc.smcr_max_conns_per_lgr | SMC-R中一个LGR能够承载的SMC连接数量上限。 默认值:32。 有效值:
| 内核 | 谨慎修改。
|
net.smc.smcr_max_links_per_lgr | SMC-R中一个LGR包含的RDMA RC连接(SMC Link)数量。 默认值:1。 有效值:1~2。 | 内核 | 不建议修改。 |
net.smc.smcr_testlink_time | SMC-R中RDMA RC连接(SMC Link)的心跳包间隔时间(单位:秒)。当SMC Link上没有数据传输时,每隔 默认值:30。 有效值:0~2147483647,0代表关闭心跳检查。 | 内核 | 不建议修改。 |
net.smc.tcp2smc | 当前 默认值:0。 有效值:
| 内核 |
|
配置EID参数
EID(Enterprise ID)是SMCv2协议中引入的概念,只有配置了相同EID的两个系统才能通过SMCv2通信,否则将回退到使用TCP通信。一个系统最多可以配置8个EID。
在Alibaba Cloud Linux 3上eRDMA设备只允许配合SMCv2协议使用。Alibaba Cloud Linux 3系统初始配置了SMCV2-DEFAULT-UEID
这一EID,因此初始状态下所有Alibaba Cloud Linux 3节点间均可以使用SMCv2配合eRDMA通信,无需额外手动配置。
若在特殊情况下需要通过修改EID控制通信范围,配置方式如下。
查看已有EID。
smcr ueid show
添加新的EID。
EID
最多可包含32个字符,允许使用大写字母(A-Z)、数字(0-9)、连字符(-)以及点(.)。第一个字符必须为字母或数字,且点(.)不可连续使用。sudo smcr ueid add <EID>
删除已有EID。
sudo smcr ueid del <EID>
实践案例:使用EID避免跨可用区的SMC-R通信
为了更好地发挥SMC-R的加速效果,推荐在同可用区内使用SMC-R加速,跨可用区仍使用TCP通信。通过将可用区ID添加为EID,实现在同可用区内使用SMC-R加速,跨可用区时自动回退到TCP通信。具体配置步骤如下。
方式一:分步配置EID
执行以下命令,通过阿里云ECS实例元数据获取可用区ID。详细内容,请参考实例元数据。
ZONE_ID=$(curl -s -m 1 100.100.100.200/latest/meta-data/zone-id | tr "[:lower:]" "[:upper:]")
执行以下命令,将可用区ID添加为EID。
sudo smcr ueid add $ZONE_ID
执行以下命令,删除默认的
SMCV2-DEFAULT-UEID
。smcr ueid | grep SMCV2-DEFAULT-UEID > /dev/null && sudo smcr ueid del SMCV2-DEFAULT-UEID
方式二:使用
aliyun-smc-extensions
工具的aliyunsmc-ueid
服务一键配置EID执行以下命令,启动
aliyunsmc-ueid
服务,此服务会自动将可用区ID添加为EID,同时删除默认EID。sudo systemctl start aliyunsmc-ueid
(可选)执行以下命令,配置开机自启动
aliyunsmc-ueid
服务。这是由于EID配置不具备持久化的功能,在OS重启时会恢复到默认状态。sudo systemctl enable aliyunsmc-ueid
配置PNET ID参数
在TCP通信中,网络流量通过以太网接口(ENI)进出。当透明转换TCP通信到SMC-R通信时,SMC-R协议栈将使用与此以太网接口相关联的RDMA网络接口(ERI)。
这种关联关系有以下两种形式。
目标ENI上直接开启eRDMA能力得到的ERI,SMC-R协议栈将自动关联此ENI与ERI。
查看ENI是否开启eRDMA能力,请参见查看弹性RDMA网卡。
创建ENI时开启eRDMA能力,请参见创建弹性RDMA网卡。
为现有ENI增加eRDMA能力,请参见修改已创建弹性网卡的RDMA接口。
这种情况下SMC-R协议栈能够自动识别并使用ENI关联的ERI,无需额外操作。
其他ENI上开启eRDMA能力得到的ERI,需要使用PNET ID将ERI与目标ENI关联。
以如下情况为例:
节点中存在以太网接口
eth0
和eth1
,其中仅eth0
开启RDMA接口erdma_0
。此时若TCP流量从
eth0
收发,切换为SMC-R后能够自动寻找到关联的erdma_0
,使用RDMA网络通信。即上述第一种自动关联的情况。若TCP流量从
eth1
收发,切换为SMC-R后则无法自动寻找到erdma_0
接口,进而回退到TCP。此时可以使用同一PNET ID关联eth1
与erdma_0
,以告知SMC-R可以使用erdma_0
接口承载eth1
的流量。使用PNET ID关联ENI和ERI步骤如下:
执行以下命令,将目标ENI和ERI配置上相同的PNET ID:
为以太网接口ENI配置PNET ID。
sudo smc_pnet -a <PNET ID> -I <eth_interface>
为eRDMA接口ERI配置PNET ID。
sudo smc_pnet -a <PNET ID> -D <rdma_interface>
PNET ID的合法格式为最多 16 个大写字母数字字符(不含空格)。
执行以下命令,检查配置的PNET ID参数。
# sudo smc_pnet
输出结果示例:
# sudo smc_pnet 00163E0CD751 n/a erdma_0 1 00163E0CD751 eth1 n/a 255
示例中
erdma_0
绑定了PNET ID:00163E0CD751,eth1
也绑定了PNET ID:00163E0CD751。这样一来,原本通过eth1
接口收发数据的TCP通信在启用SMC-R后就可以通过erdma_0
接口收发数据。
实践案例:在自建容器环境下使用PNET ID关联POD中的以太网接口和宿主机上的eRDMA接口
在共享宿主机ERI的自建容器场景中,多个POD共享宿主机上的一个或多个eRDMA网卡。通过为POD以太网接口veth和宿主机eRDMA接口设置相同的PNET ID,可使容器内开启SMC-R后,内核协议栈能够正确地寻找到宿主机上的eRDMA网络接口,进而使用RDMA网络加速容器veth接口上的网络流量。
具体配置步骤如下。
在容器
net namespace
下为容器以太网接口(以eth0
为例)配置PNET ID。sudo ip netns exec <pod netns> smc_pnet -a <PNET ID> -I eth0
在宿主机
net namespace
下为eRDMA接口(以erdma_0
为例)配置PNET ID。sudo smc_pnet -a <PNET ID> -D erdma_0
实践案例:在ECS Redis场景使用SMC
创建两台ECS实例,一台实例作为Redis客户端,另一台实例作为Redis服务端。具体参数说明,请参见自定义购买实例。
加载
smc
和smc_diag
内核模块。sudo modprobe smc sudo modprobe smc_diag
执行以下命令,分别为两台实例安装Redis。
sudo yum install redis -y
分别在两台实例上执行以下命令,使用EID避免跨可用区SMC-R通信。
sudo systemctl start aliyunsmc-ueid
分别在两台实例上执行以下命令,配置基于端口的BPF策略。只允许Server IP地址在
vswitch
网段内且服务端口为6379
的连接使用SMC协商。执行以下命令,加载
smc-ebpf
。sudo smc-ebpf policy load
配置针对端口的策略,只允许对
6379
端口使用SMC协商。sudo smc-ebpf policy config --port 6379 --mode enable
配置针对IPv4地址的策略,只允许对在
vswitch
网段内的Server IP使用SMC协商。sudo smc-ebpf policy config --ip 0.0.0.0 --mask 32 --mode disable cidr=$(curl -s -m 1 100.100.100.200/latest/meta-data/vswitch-cidr-block) sudo smc-ebpf policy config --ip \ $(echo ${cidr} | awk -F'/' '{print $1}') --mask \ $(echo ${cidr} | awk -F'/' '{print $2}') --enable;
分别在两台实例上执行以下命令,配置
net namespace
维度协议透明转换。sudo sysctl -w net.smc.tcp2smc=1
在Redis服务端实例上执行以下命令,启动Redis服务。
IP
需替换为服务端实例主网卡的私有IP地址。redis-server --bind <IP> --port 6379 --protected-mode no --save
在Redis客户端实例上连接或测试Redis服务端。
执行以下命令,连接Redis服务端。
redis-cli -h <IP> -p 6379
执行以下命令,使用
redis-benchmark
进行压测。redis-benchmark -h <IP> -p 6379 -n 1000000 -t set -c 100
- 本页导读 (1)
- 在阿里云ECS上使用SMC
- 前期准备
- 将应用程序的TCP socket运行于SMC协议栈
- 基于BPF策略的SMC协商控制
- 在阿里云ACK上使用SMC
- 参数配置说明
- 通过sysfs配置参数
- 配置EID参数
- 配置PNET ID参数
- 实践案例:在ECS Redis场景使用SMC