配置无损网络
介绍
在各种 HPC 高性能计算场景中,对网络的诉求基本上是高吞吐和低时延这两个重要特性,为了实现高吞吐和低时延,业界一般采用 RDMA(Remote Direct Memory Access,远程直接内存访问)替代 TCP 协议。但是 RDMA 网络对于丢包非常敏感,一旦发生丢包重传,性能会急剧下降。因此要使得 RDMA 吞吐不受影响,丢包率必须保证在 1e-05(十万分之一)以下,最好为丢包率为 0。
RoCE (RDMA over Converged Ethernet)网络通过 PFC+ECN 特性来保障网络传输过程不丢包。
- PFC: 优先级流量控制 (Priority Flow Control),IEEE 802.1Qbb,基于优先级的流量控制。
- ECN: 显式拥塞通知(Explicit Congestion Notification),通过在 IP 头部的特定位上设置标志实现:在不丢弃数据包的情况下指示网络拥塞。
本文将介绍如何在主机侧配置 Roce 的无损网络。注: 不涉及交换机配置。
如何配置
本文档提供一个脚本以 Systemd 方式帮助配置主机侧的 Roce 无损网络。
-
下载脚本到本地文件路径,并添加脚本权限执行:
wget https://raw.githubusercontent.com/spidernet-io/spiderpool/refs/heads/main/docs/example/qos/rdma-qos.sh chmod +x rdma-qos.sh
为节点上所有 RDMA 网卡设置相同的 QOS 和 CNP ,使用如下命令:
- GPU_RDMA_PRIORITY: 指定 Roce 流量的优先级队列,配置范围为 0~7,默认为 5。
- GPU_CNP_PRIORITY: 指定 CNP 报文的优先级队列,配置范围为 0~7,默认为 6。
- GPU_RDMA_QOS: 指定 Roce 流量的 dscp。默认值 = GPU_RDMA_PRIORITY * 8 = 40。
- GPU_CNP_QOS: 指定 CNP 报文的 dscp。默认值 = GPU_CNP_PRIORITY * 8 = 48。
-
检查执行结果,查看 Systemd 服务运行状态
执行完毕后,可通过如下查询配置结果, 是否符合预期。
./set-rdma-qos.sh q ======== show configuration for device eth0 / mlx5_0======== Priority trust state: dscp PFC configuration: priority 0 1 2 3 4 5 6 7 enabled 0 0 0 0 0 1 0 0 buffer 0 0 0 0 0 1 0 0 ECN Enabled for priority 0: /sys/class/net/eth0/ecn/roce_np/enable/0 = 1 ECN Enabled for priority 0: /sys/class/net/eth0/ecn/roce_rp/enable/0 = 1 ECN Enabled for priority 1: /sys/class/net/eth0/ecn/roce_np/enable/1 = 1 ECN Enabled for priority 1: /sys/class/net/eth0/ecn/roce_rp/enable/1 = 1 ECN Enabled for priority 2: /sys/class/net/eth0/ecn/roce_np/enable/2 = 1 ECN Enabled for priority 2: /sys/class/net/eth0/ecn/roce_rp/enable/2 = 1 ECN Enabled for priority 3: /sys/class/net/eth0/ecn/roce_np/enable/3 = 1 ECN Enabled for priority 3: /sys/class/net/eth0/ecn/roce_rp/enable/3 = 1 ECN Enabled for priority 4: /sys/class/net/eth0/ecn/roce_np/enable/4 = 1 ECN Enabled for priority 4: /sys/class/net/eth0/ecn/roce_rp/enable/4 = 1 ECN Enabled for priority 5: /sys/class/net/eth0/ecn/roce_np/enable/5 = 1 ECN Enabled for priority 5: /sys/class/net/eth0/ecn/roce_rp/enable/5 = 1 ECN Enabled for priority 6: /sys/class/net/eth0/ecn/roce_np/enable/6 = 1 ECN Enabled for priority 6: /sys/class/net/eth0/ecn/roce_rp/enable/6 = 1 ECN Enabled for priority 7: /sys/class/net/eth0/ecn/roce_np/enable/7 = 1 ECN Enabled for priority 7: /sys/class/net/eth0/ecn/roce_rp/enable/7 = 1 QOS for CNP: /sys/class/net/eth0/ecn/roce_np/cnp_dscp = 48 cma_roce_tos: 160 QOS for rdma: /sys/class/infiniband/mlx5_0/tc/1/traffic_class = Global tclass=160
检查 Systedm 运行状态: