配置服务器网卡
- 在客户端和服务端查看IB口信息。查看设备的名称以及当前的状态是否为Active状态。设备名称一般为hrn3_bond_0。
<# ibstat CA 'hrn3_bond_0' CA type: Number of ports: 1 Firmware version: Hardware version: Node GUID: 0xaedccafffe71b4ee System image GUID: 0xaedccafffe71b4ee Port 1: State: Active Physical state: LinkUp Rate: 100 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x00010000 Port GUID: 0xaedccafffe71b4ee Link layer: Ethernet
ibstat命令依赖于infiniband-diags包,请确认是否正确安装infiniband-diags包,若未安装请手动安装infiniband-diags或者重装OFED。
- 如果是首次使用,请为两个网口创建bond。
- 将下列配置写入“/etc/sysconfig/network-scripts/ifcfg-ens4f0”。
TYPE=Ethernet BOOTPROTO=none NAME=ens4f0 DEVICE=ens4f0 ONBOOT=yes MASTER=bond0 SLAVE=yes
- 将下列配置写入“/etc/sysconfig/network-scripts/ifcfg-ens4f1”。
TYPE=Ethernet BOOTPROTO=none NAME=ens4f1 DEVICE=ens4f1 ONBOOT=yes MASTER=bond0 SLAVE=yes
- 将下列配置写入“/etc/sysconfig/network-scripts/ifcfg-bond0”。
DEVICE=bond0 ONBOOT=yes BOOTPROTO=static BONDING_MASTER=yes BONDING_OPTS='mode=4 xmit_hash_policy=1 miimon=100 updelay=100 downdelay=100 lacp_rate=fast' BONDING_SLAVE0=ens4f0 BONDING_SLAVE1=ens4f1 USERCTL=no MTU=9000 #配置ipv4地址 IPADDR=xxx.xxx.xxx.xxx
- 重启网络服务。
systemctl restart NetworkManager.service
- 查看ib设备。一般为hrn3_bond_0。
ibv_devices device node GUID ------ ---------------- hrn3_bond_0 xxxxxxxxxxxxxxx
- 将下列配置写入“/etc/sysconfig/network-scripts/ifcfg-ens4f0”。
- 配置qos。
- 使能DCB。
hinicadm3 qos -i ens4f0 -t dcb -e 1 hinicadm3 qos -i ens4f1 -t dcb -e 1
- 队列1使能PFC。
hinicadm3 qos -i ens4f0 -t pfc -e 1 -f 1,1,0,0,0,0,0,0 hinicadm3 qos -i ens4f1 -t pfc -e 1 -f 1,1,0,0,0,0,0,0
- 使能DSCP。
hinicadm3 qos -i ens4f0 --dev_trust dscp hinicadm3 qos -i ens4f0 --port_trust dscp hinicadm3 qos -i ens4f1 --dev_trust dscp hinicadm3 qos -i ens4f1 --port_trust dscp
- 设置roce流量分配到队列1。
hinicadm3 qos -i ens4f0 --dev_defcos 1 hinicadm3 qos -i ens4f0 --port_defcos 1 hinicadm3 qos -i ens4f1 --dev_defcos 1 hinicadm3 qos -i ens4f1 --port_defcos 1
- 设置CNP流量分配到队列6。
echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_prio_enable echo 6 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_prio
- TCP和RDMA流量比为3:7。
hinicadm3 qos -i ens4f0 -t ets -c 0,1,2,3,4,5,6,7 -w 30,70,0,0,0,0,0,0 hinicadm3 qos -i ens4f1 -t ets -c 0,1,2,3,4,5,6,7 -w 30,70,0,0,0,0,0,0
- 开启qp affinity hash。
hinicadm3 bond_info -i hinic0 -n hrn3_bond_0 -t 1
- 开启快重传。
hinicadm3 roce_fast_retrans -i hinic0 -e 1
- 若一张网卡存在多个网口,每个网卡口都要配置qos,但是算法使能可能只有一个网口有效,出现no such file是正常的。例如2*100G卡,两个网口都要配,上述配置以ens4f0和ens4f1为例。
- 开启快重传后才能处理NACK报文。
- 使能DCB。
- 配置拥塞算法参数使能user_cc_6。
- 配置拥塞算法参数user_cc_6,以使能UCC HITCH为例。
echo user_cc_6 > /sys/class/net/ens4f0/ecn/cc_algo echo 1 > /sys/class/net/ens4f0/ecn/coal_ack_num echo 0 > /sys/class/net/ens4f0/ecn/algo_type
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param0”。
alpha:2:4 beta:9:4 gamma:3:4 eta:6:4 flag:1:1
参数说明如表1所示。
表1 参数说明 参数
说明
user_cc_6
UCC编程框架提供的一个拥塞算法名称。
coal_ack_num
ACK报文聚合参数,默认是6,即收到6个数据包回复1个ACK报文。在测试窗口类拥塞控制算法时,由于窗口类拥塞控制算法基于ACK调窗,需要将coal_ack_num设为1,以获得更好的稳定性。
algo_type
当前拥塞算法的类型。
- 0:表示窗口类型。
- 1:表示token类型。默认为1。测试HITCH算法时,设置为0。
alpha
窗口大于1个MTU增窗因子,默认是2。测试HITCH算法时,设置为推荐值2。
beta
窗口大于1个MTU减窗因子,默认是9。测试HITCH算法时,设置为推荐值9。
gamma
窗口小于1个MTU增窗因子,默认是6。测试HITCH算法时,设置为推荐值3。
eta
窗口小于1个MTU减窗因子,默认是6。测试HITCH算法时,设置为推荐值6。
flag
设置拥塞控制算法标志位,默认是0。
- 当标志位为0时,参数alpha、beta、gamma、eta取默认值。
- 当标志位为1时,参数alpha、beta、gamma、eta取所设置值。
- 测试HITCH算法时,设置为推荐值1。
- 配置拥塞算法参数user_cc_6,以使能UCC HITCH为例。
- 配置拥塞算法参数使能user_cc_5。
- 配置拥塞算法参数user_cc_5,以使能UCC DCQCN为例。
echo user_cc_5 > /sys/class/net/ens4f0/ecn/cc_algo echo 1 > /sys/class/net/ens4f0/ecn/algo_type echo 6 > /sys/class/net/ens4f0/ecn/coal_ack_num echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_enable
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param0”。
rsvd:0:18 flow_min_rate:1:6 token_period:16:8
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param1”。
rate_inc_period:480:10 rsvd:0:3 cnp_cnt_threshold:6:4 alpha_dec_period:160:10 alpha_threshold:31:5
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param2”。
rate_inc_ai:2:8 rate_inc_hai:8:8 rate_dec_period:32:8 min_cnp_period:16:8
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param3”。
factor_gita:7:4 rt_clamp:1:1 rsvd:0:1 initial_alpha:1023:10 rate_first_set:1024:16
参数说明如表2所示。
表2 参数说明 参数
说明
user_cc_5
UCC编程框架提供的一个拥塞算法名称。
coal_ack_num
ACK报文聚合参数,默认是6,即收到6个数据包回复1个ACK报文。测试DCQCN算法时,使用默认值。
algo_type
当前拥塞算法的类型。
- 0:表示窗口类型。
- 1:表示速率类型。默认为1。测试DCQCN算法时,设置为1。
cnp_enable
是否可发送CNP报文,默认值是0,即CNP报文不可发送。测试DCQCN算法时,需要将cnp_enable设为1,设置CNP报文可发送。
cnp_prio_enable
CNP流量设置开关,默认是0。设为1。
cnp_prio
设置CDP流量所走队列,默认是0。设为6。
flow_min_rate
最小发送速率,推荐值是1。测试DCQCN算法时,设置为推荐值。
token_period
token更新周期,推荐值是16纳秒,token表示可以发送的字节量。每生成一个token,发送方可以发送对应大小的数据包。测试DCQCN算法时,设置为推荐值。
rate_inc_period
速率增加周期,推荐值是480。测试DCQCN算法时,设置为推荐值。
cnp_cnt_threshold
阈值,推荐值是6。测试DCQCN算法时,设置为推荐值。
alpha_dec_period
速率降低因子α减小周期,推荐值是160。测试DCQCN算法时,设置为推荐值。
alpha_threshold
alpha阈值,推荐值是31。测试DCQCN算法时,设置为推荐值。
rate_inc_ai
加性升速阶段增速因子,推荐值是2。测试DCQCN算法时,设置为推荐值。
rate_inc_hai
超升速阶段增速因子,推荐值是8。测试DCQCN算法时,设置为推荐值。
rate_dec_period
速率减少周期,推荐值是32。测试DCQCN算法时,设置为推荐值。
min_cnp_period
最小发送CNP周期,推荐值是16。测试DCQCN算法时,设置为推荐值。
factor_gita
α更新因子,推荐值是7。测试DCQCN算法时,设置为推荐值。
rt_clamp
限制目标速率的参数,推荐值是1。测试DCQCN算法时,设置为推荐值。
initial_alpha
速率降低因子α初始化值,推荐值是1023。测试DCQCN算法时,设置为推荐值。
rate_first_set
初始发送速率,推荐值是1024。测试DCQCN算法时,设置为推荐值。
- 配置拥塞算法参数user_cc_5,以使能UCC DCQCN为例。
- 配置拥塞算法参数使能user_cc_7。
- user_cc_7配置拥塞算法参数,以使能UCC TIMELY为例。
echo user_cc_7 > /sys/class/net/ens4f0/ecn/cc_algo echo 1 > /sys/class/net/ens4f0/ecn/algo_type echo 6 > /sys/class/net/ens4f0/ecn/coal_ack_num echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_enable echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_prio_enable echo 6 > /sys/class/net/ens4f0/ecn/roce3_ucc/cnp_prio echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/rtt_enable echo 1 > /sys/class/net/ens4f0/ecn/roce3_ucc/rtt_rsp_prio_enable echo 6 > /sys/class/net/ens4f0/ecn/roce3_ucc/rtt_rsp_prio
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param0”。
min_rtt_shift:11:4 sigma:4:4 hai_sigma:15:4 alpha:256:10 beta:512:10
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param1”。
rtt_low:3500:12 rtt_high:7000:14 rtt_first_set:8:4 rvsd:0:2
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param2”。
rsvd:0:32
- 将下列配置写入“/sys/class/net/ens4f0/ecn/roce3_ucc/param3”。
rsvd:0:32
参数说明如表3所示。
表3 参数说明 参数
说明
user_cc_7
UCC编程框架提供的一个拥塞算法名称。
coal_ack_num
ACK报文聚合参数,默认是6,即收到6个数据包回复1个ACK报文。测试TIMELY算法时,使用默认值。
algo_type
当前拥塞算法的类型。
- 0:表示窗口类型。
- 1:表示速率类型。默认为1。
测试TIMELY算法时,设置为1。
rtt_enable
是否开启RTT功能,0:不开启,1:开启。默认是0。测试TIMELY算法时,设置为1。
rtt_rsp_prio_enable
RTT响应报文转发队列可配置使能,默认是0。测试TIMELY算法时,设为1。
rtt_rsp_prio
设置RTT响应报文所走队列,默认是0。测试TIMELY算法时,设为6。
cnp_prio
CNP报文转发队列可配置使能,默认是0。测试TIMELY算法时,设为1。
cnp_prio
设置CNP报文所走队列,默认是0。测试TIMELY算法时,设为6。
min_rtt_shift
理论最小时延,推荐值是11,即rtt梯度归一化时右移的位数。测试TIMELY算法时,使用推荐值。
sigma
加性升速阶段增速因子,推荐值是4。测试TIMELY算法时,使用推荐值。
hai_sigma
超升速阶段增速因子(CNP阶段降速因子),推荐值是15。测试TIMELY算法时,使用推荐值。
alpha
平滑RTT累计差值(rtt_diff)时的权重,推荐值是256。测试TIMELY算法时,使用推荐值。
beta
乘性降速阶段降速因子,推荐值是512。测试TIMELY算法时,使用推荐值。
rtt_low
表示burst流量的容忍RTT,推荐值是3500。测试TIMELY算法时,使用推荐值。
rtt_high
表示每条流量容忍的最大RTT,推荐值是7000。测试TIMELY算法时,使用推荐值。
rate_first_set
初始化算法时的速率,推荐值是8,即使用时将1左移8位。测试TIMELY算法时,使用推荐值。
- user_cc_7配置拥塞算法参数,以使能UCC TIMELY为例。
- 在服务端和客户端执行以下命令进行测试。
ib_send_bw -d hrn3_bond_0 -i 1 -s 64K --report_gbits --run_infinitely -D 5 #服务端 ib_send_bw -d hrn3_bond_0 -i 1 IP_Address -s 64K --report_gbits --run_infinitely -D 5 #客户端
参数说明如表4所示。
表4 参数说明 参数
说明
hrn3_bond_0
对应bond0的IB设备名称。
-i 1
对应ibstat命令打印信息中CA名称对应的Port。
IP_Address
服务端配置的IP地址。
-D 5
--duration=<sec>:以秒为单位每个测试间隔的持续时间,推荐5秒。
测试两端打印如下信息即表示成功。
--------------------------------------------------------------------------------------- Send BW Test Dual-port : OFF Device : hrn3_bond_0 Number of qps : 1 Transport type : IB Connection type : RC Using SRQ : OFF PCIe relax order: ON ibv_wr* API : OFF TX depth : 128 CQ Moderation : 1 Mtu : 4096[B] Link type : Ethernet GID index : 1 Max inline data : 0[B] rdma_cm QPs : OFF Data ex. method : Ethernet --------------------------------------------------------------------------------------- local address: LID 0000 QPN 0x0020 PSN 0x2b425 GID: 00:00:00:00:00:00:00:00:00:00:255:255:172:168:01:67 remote address: LID 0000 QPN 0x0020 PSN 0x42d017 GID: 00:00:00:00:00:00:00:00:00:00:255:255:172:168:01:69 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] 65536 749427 0.00 78.58 0.149884 65536 749438 0.00 78.58 0.149887 65536 749425 0.00 78.58 0.149884 65536 749435 0.00 78.58 0.149886 65536 749422 0.00 78.58 0.149884