Este artículo es compartido por Huawei Cloud Community "Agregación de enlaces de dos tarjetas de red RoCE para lograr un ancho de banda X2" , autor: tsjsdbd.
Sabemos que en el sistema operativo, se pueden combinar dos tarjetas de red físicas reales para formar una "tarjeta de red lógica" para lograr propósitos como ancho de banda principal y de respaldo/aumentado. Pero, ¿la tarjeta de red RoCE también admite capacidades Bond como las tarjetas de red normales? La respuesta es sí, RoCE también puede formar un Bond, pero tiene más restricciones que las tarjetas de red normales.
Hoy practicaremos este proceso y comprenderemos a qué se debe prestar atención. También puedes intercambiar y aprender juntos.
1. Agregación de enlaces de tarjetas de red (LAG) RoCE
Según la información encontrada: https://mellanox.my.site.com/mellanoxcommunity/s/article/How-to-Configure-RoCE-over-LAG-ConnectX-4-ConnectX-5-ConnectX-6, The Bond de la tarjeta de red RoCE solo admite 3 modos:
- Modo 1 (activo y de respaldo)
- Modo 2 (equilibrio de carga)
- Modo 4 (agregación de enlaces)
En comparación con el total de siete modos del 0 al 6 de las tarjetas de red normales, es un gran descuento. Afortunadamente, el modelo de "mayor ancho de banda" que queremos todavía existe.
2. El servidor realiza una operación de agregación de tarjetas de red dual (Bond)
Diferentes sistemas operativos tienen diferentes comandos para ejecutar Bond. Lo que realmente opero aquí es Ubuntu 22.04. Utilizando la herramienta netplan incorporada, el proceso de ejecución del enlace es el siguiente:
Revisar:
vi /etc/netplan/00-installer-config.yaml red: ethernets: ens3f0np0 dhcp4: no ens3f1np1 dhcp4: no versión: 2 renderer: networkd bonds: bond0: interfaces: [ens3f0np0, ens3f1np1] parámetros: modo: 802.3ad mii- intervalo de monitor: 1 lacp-rate: faset transmit-hash-policy: capas 3+4 direcciones: [10.10.2.20/24]
implementar:
aplicar netplan
Después de eso, podrá ver una tarjeta de red llamada "bond0".
Aquí, hay dos parámetros importantes en el enlace que configuramos:
(1) Seleccione el modo de enlace 4, que es 802.3ad (agregación de enlaces)
(2) política de hash de transmisión, política de equilibrio de carga, tiene los siguientes tres valores:
Aquí, debido a la comunicación RDMA punto a punto, la dirección IP+MAC no cambiará. Entonces elegimos la capa 3 + 4. Después de todo, al enviar un mensaje, el puerto de origen sigue siendo aleatorio.
Adjunto se encuentra la operación de CentOS como referencia:
Crear un nuevo puerto de bonos
nmcli con agregar tipo bond ifname tsjbond0 bond.options "mode=2,miimon=100,updelay=100,downdelay=100"
Agregar tarjeta de subred
nmcli con agregar tipo ethernet ifname enp80s0f0 maestro tsjbond0 nmcli con agregar tipo ethernet ifname enp80s0f1 maestro tsjbond0
Activar tarjeta de subred
nmcli con bond-slave-enp80s0f0 nmcli con bond-slave-enp80s0f1
Modificó la configuración de la tarjeta de bonos.
vi /etc/sysconfig/network-scripts/ifcfg-bond-tsjbond0 IPADDR=29.28.195.228 NETMASK=255.255.240.0
Modificar la configuración de 2 tarjetas de subred
vi /etc/sysconfig/network-scripts/ifcfg-enp80s0f0 DEVICE=enp80s0f0 TYPE=Ethernet ONBOOT=sí MASTER= tsjbond0 SLAVE=sí BOOTPROTO=none
Activar tarjeta de bonos
ifup bond-esclavo-enp80s0f0 ifup bond-esclavo-enp80s0f1 ifdown bond-tsjbond0 ifup bond-tsjbond0
3. El servidor habilita el control de flujo PFC para la nueva tarjeta de red.
Ejecute el siguiente comando para configurar primero la MTU:
ifconfig bond0 hombre 4200
Luego habilite la política de control de flujo pfc de la cola 4:
mlnx_qos -i ens3f0np0 --pfc=0,0,0,0,1,0,0,0 --turst=dscp mlnx_qos -i ens3f1np1 --pfc=0,0,0,0,1,0,0, 0 --turst=dscp cma_roce_mode -d mlx5_bond_0 -p 1 -m 2 echo 128 > /sys/class/infiniband/mlx5_bond_0/tc/1/traffic_class
Entre ellos, los dos primeros comandos deben habilitar pfc para cada tarjeta de subred bajo vínculo.
Luego, se puede consultar mlx5_bond_0 mediante el comando ibdev2netdev.
El último comando echo 128 es forzar que la clase de tráfico de los paquetes enviados por la tarjeta de red sea 128, es decir, que coincida con la cola de envío 4 de la tarjeta de red. Está bien si no lo configura. Puede lograr el mismo propósito configurando NCCL_IB_TC=128. Para obtener más información, consulte el artículo "Por qué se debe configurar NCCL_IB_TC=128 para el entrenamiento de IA en Huawei Cloud".
4. El conmutador realiza una agregación de puertos de red dual (LACP)
Diferentes interruptores tienen diferentes comandos para habilitar el modo LACP. El modelo aquí es CE9860. Ejecute de la siguiente manera:
Abra el puerto eth-trunk.
interfaz Eth-Trunk1 puerto tipo enlace modo troncal lacp-static
Luego cambie al puerto de red correspondiente y agréguelo a este puerto troncal.
interfaz GigabitEthernet0/0/1 eth-trunk 1 interfaz GigabitEthernet0/0/2 eth-trunk 1
La operación del comando se basa en esta idea. Además, la política LACP LB se completa modificando la configuración predeterminada del perfil de equilibrio de carga:
eth-trunk hash-mode ? INTEGER<1-9> Diferentes modos hash proporcionan diferentes resultados de distribución de carga para los flujos de tráfico de salida desde una troncal, el valor predeterminado es 1 Para Eth-Trunk, se sugiere el modo 1 Para el cambio de SMAC, modo 1/2 Se sugiere /6/7 Para cambio SIP, se sugiere el modo 1/5/7/9 Para cambio DIP, se sugiere el modo 5/6 Para cambio DMAC y SMAC, se sugiere el modo 9 Para cambio SMAC+SIP, se sugiere el modo 5/6
El valor predeterminado es 1.
5. El conmutador habilita el control de flujo PFC para el puerto correspondiente.
Ejecutar en el switch:
Tamaño del grupo de espacio libre del buffer qos 20164 celdas ranura 1 interfaz 400 x/x/x confianza dscp dcb pfc modo de habilitación manual dcb pfc buffer 4 xoff dinámico 4 hdrm 3000 celdas confirmadas
En realidad, el comando anterior no solo activa pfc, sino que también establece el tamaño del búfer correspondiente al puerto de red. Los valores de los parámetros específicos dependen de usted.
6. Prueba de ancho de banda de tráfico RDMA
Este es el comando de prueba de ancho de banda que usamos frecuentemente:
Primero, en el lado del servidor, inicie el servidor.
ib_write_bw -s 8388608 -F --run_infinitely -x 3 -q 8 --report_gbits
Luego el Cliente comienza a transmitir al servidor:
ib_write_bw -s 8388608 -F --run_infinitely -x 3 10.10.2.20 -q 8 --report_gbits
El parámetro -x está establecido en 3, lo que significa que se utiliza el protocolo RoCE V2.
El parámetro --run_infinitely permite que la prueba continúe sin detenerse.
-q indica el uso de múltiples secuencias QPS (pares de colas). Correspondiente a NCCL_IB_QPS_PER_CONNECTION, puede intentar configurarlo más grande para probar el efecto.
Un ejemplo del resultado es el siguiente:
7. Estadísticas del lado del servidor
Consulta la cantidad de paquetes en la cola 4:
reloj -n 2 “ethtool -S ens3f0np0 | grepprio4”
Este número de paquetes no se reducirá y es inconveniente borrarlo. Parece que el número no se borrará a 0 incluso si se reinicia el servidor.
Solo encontré el propósito de borrar las estadísticas desinstalando el módulo IB (si es necesario):
rmmod mlx5_ib rmmod mlx5_core modprob mlx5_core
Consultar la temperatura de la tarjeta de red:
mget_temp -d mlx5_bond_0
Se puede ver la temperatura, que generalmente ronda los 62/63 grados.
8. Resumen
Este artículo es solo un registro de operaciones para la comunicación mutua. No es necesariamente la mejor práctica. Puede leerlo si lo desea.
Porque el sitio web oficial https://mellanox.my.site.com/mellanoxcommunity/s/article/How-to-Configure-RoCE-over-LAG-ConnectX-4-ConnectX-5-ConnectX-6
Está escrito así:
Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~
El autor del marco de código abierto NanUI pasó a vender acero y el proyecto fue suspendido. La primera lista gratuita en la App Store de Apple es el software pornográfico TypeScript. Acaba de hacerse popular, ¿por qué los grandes empiezan a abandonarlo? Lista de octubre de TIOBE: Java tiene la mayor caída, C# se acerca Java Rust 1.73.0 lanzado Un hombre fue alentado por su novia AI a asesinar a la Reina de Inglaterra y fue sentenciado a nueve años de prisión Qt 6.6 publicado oficialmente Reuters: RISC-V La tecnología se convierte en la clave de la guerra tecnológica entre China y Estados Unidos. Nuevo campo de batalla RISC-V: no controlado por ninguna empresa o país, Lenovo planea lanzar una PC con Android.