Nuevas ideas para la optimización del ancho de banda: la agregación de tarjetas de red RoCE logra un crecimiento X2

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.

10001.png

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:

10002.png

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:

10003.png

7. Estadísticas del lado del servidor

Consulta la cantidad de paquetes en la cola 4:

reloj -n 2 “ethtool -S ens3f0np0 | grepprio4”

1695889454470488453.png

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.

1695889477679879869.png

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í:

10005.png

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.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10115827
Recomendado
Clasificación