使能网络多路径RPS增强特性
- 关闭irqbalance。
systemctl stop irqbalance
- 网络多路径模块依赖hisi_l3t.ko,需要确认该模块是否已加载。
lsmod | grep hisi_l3t
若上述命令输出为空,则需要加载hisi_l3t.ko。
modprobe hisi_l3t
- 配置网卡信息,启用网络多路径RPS增强优化特性。
insmod /lib/modules/5.10.0-301.0.0.204.aarch64/kernel/net/oenetcls/oenetcls.ko mode=0 appname="redis-server" ifname="eth0#eth1" strategy=1 debug=0 match_ip_flag=1 rxq_multiplex_limit=1 lo_rps_policy=2 rps_policy=2
mode:参数为优化模式,mode=0表示ntuple模式;mode=1表示flow模式,取值范围为0,1,默认值为0。中断核负载相对低时可以与分域调度特性配合实现cluster亲和。
appname:生效多路径特性的进程名称,进程名称最大长度是16个字符,支持输入多进程名,进程名之间通过#间隔,如进程的进程名称为IO_Context和redis-server,appname="IO_Con#redis-server",默认值为redis-server。
ifname:ifname参数为生效多路径特性的网卡接口名称,支持输入多接口名,网卡接口名称之间通过#间隔,如ifname="eth1#eth2"。
strategy:中断绑核亲和策略,取值范围为0、1、2、3,其他,默认值为0,传入其他时使用默认策略0。
取值说明:
- 0:缺省策略,将网卡队列中断均分到不同NUMA上,不同网卡使用不同核。
- 1:Cluster均分策略,将网卡队列中断均分到不同Cluster上。
- 2:NUMA均分策略,将网卡队列中断均分到不同NUMA上,与缺省策略的区别是不同网卡可能使用相同核。
- 3:用户自定义网卡中断绑核后,加载多路径模块后自动读取中断信息。
debug:调试开关,debug=1后输出调试日志,支持动态修改,取值范围0或1,默认值为0。
match_ip_flag:参数为网卡接收数据包时,是否匹配数据包的目的IP来决定放入指定队列,取值范围为0或1。支持动态修改,修改后只对新拉起的进程有效。
rxq_multiplex_limit:仅用于模式0,在配置网卡接收规则时,每个队列可以被多少tcp数据流复用,如rxq_multiplex_limit=4则表示单个队列可配置4条规则,适用于网卡队列小于tcp流的场景,取值范围为1~64,默认值为1。
lo_rps_policy:本地回环口loopback rps打散开关。RPS的目的是把网卡收到的数据包,“分发”给多个CPU核心去处理,从而利用多核优势,避免单个CPU成为瓶颈,默认值为0。
取值说明:
- 0:关闭本地回环口loopback rps打散功能。
- 1:将软中断分散在当前流所在的NUMA节点内。
- 2:将软中断分散在当前流所在的cluster节点内。
rps_policy:网卡口rps打散开关。RPS的目的是把网卡收到的数据包,“分发”给多个CPU核心去处理,从而利用多核优势,避免单个CPU成为瓶颈,默认值为0。
取值说明:
- 0:关闭网卡口rps打散功能。
- 1:将软中断分散在当前流所在的NUMA节点内。
- 2:将软中断分散在当前流所在的cluster节点内。