Logotipo de IntelIntel® Ethernet serie 700
Guía de ajuste del rendimiento de Linux
Grupo de redes en la nube NEX (NCNG)
Rev. 1.2
Diciembre de 2024

Historial de revisiones

Revisión Fecha Comentarios
1.2 Diciembre de 2024 · Se agregó guía adicional sobre administración de energía.
· Se agregó Intel* Turbo Boost.
· Se agregó la lista de dispositivos de red.
· Se agregaron configuraciones y ajustes específicos de la plataforma.
· Se agregaron procesadores escalables Intel* %eon* de cuarta generación.
· Se agregó AMD EPYC.
· Se actualizaron las capacidades del hardware del sistema de verificación.
· iPerf2 actualizado.
· iPerf3 actualizado.
· Colas Tx/Rx actualizadas.
· Moderación de interrupciones actualizada.
· Talla de anillo actualizada.
· Ajuste de plataforma actualizado (i40e no específico).
· Configuración del BIOS actualizada.
· Control de estado C actualizado.
· Escala de frecuencia de CPU actualizada.
· Configuración de la aplicación actualizada.
· Configuración actualizada del sistema operativo/kernel.
· Reenvío de IP actualizado.
· Baja latencia actualizada.
Agosto de 2023 Los cambios a este documento incluyen:
· Se agregaron referencias relacionadas.
· Se agregó la opción Asegurarse de que el paquete DDP se esté cargando correctamente.
· Se agregó iPerf2.
· Se agregó iPerf3.
· Se agregó netperf.
· Afinidad de IRQ actualizada.
· Se agregaron colas Tx/Rx.
· Talla de anillo actualizada.
· Se agregaron fotogramas gigantes.
· Se agregó enlace de adaptador.
· Se agregó la herramienta Intel svr-info.
1.0 Marzo de 2016 Versión inicial (Intel Public).

Introducción

Esta guía ofrece orientación para optimizar el rendimiento de la red mediante tarjetas de red Intel® Ethernet serie 700 en entornos Linux. Se centra en las condiciones y configuraciones de hardware, controladores y sistema operativo que podrían mejorar el rendimiento de la red. Cabe destacar que el rendimiento de la red puede verse afectado por diversas influencias externas; en esta guía solo se abordan las más comunes y significativas.
1.1 Referencias relacionadas

Lista de verificación inicial

2.1 Actualizar versiones de controlador/firmware
Compruebe las versiones del controlador/firmware usando ethtool -i ethx.
Actualice lo siguiente según sea necesario:

2.2 Leer el archivo README
Compruebe los problemas conocidos y obtenga las últimas instrucciones de configuración del archivo README file incluido en el paquete fuente i40e.
2.3 Compruebe que su ranura PCI Express (PCIe) sea x8
Algunas ranuras PCIe x8 están configuradas como ranuras x4. Estas ranuras tienen un ancho de banda insuficiente para la velocidad de línea completa con dispositivos de dos y cuatro puertos. Además, si se conecta un adaptador compatible con PCIe v3.0 a una ranura PCIe v2.x, no se puede obtener el ancho de banda completo. El controlador del dispositivo detecta esta situación y escribe el siguiente mensaje en el registro del sistema:
El ancho de banda PCI-Express disponible para esta tarjeta no es suficiente para un rendimiento óptimo. Para un rendimiento óptimo, se requiere una ranura PCI-Express x8.
Si ocurre este error, mueva el adaptador a una ranura PCIe v3.0 x8 real para resolver el problema.
2.4 Verificar las capacidades del hardware del sistema
A 10 Gbps, 25 Gbps y 40 Gbps Ethernet, existen requisitos mínimos de CPU y del sistema. En general, un procesador de servidor moderno y una configuración de memoria óptima para su plataforma deberían ser suficientes, pero las necesidades varían según la carga de trabajo. Todos los canales de memoria deben estar ocupados y el modo de rendimiento de memoria debe estar habilitado en la BIOS. Verifique que la configuración de CPU y memoria sea compatible con el nivel de rendimiento de red requerido para su carga de trabajo.
NOTA
El XL710 es un controlador de 40 GbE. El adaptador de 2 x 40 GbE que utiliza este controlador no está diseñado para ser de 2 x 40 GbE, sino de 1 x 40 GbE con un puerto de respaldo activo. Al intentar usar tráfico de velocidad de línea entre ambos puertos, el conmutador interno se satura y el ancho de banda combinado entre ambos puertos se limita a un total de XNUMX Gbps.
2.4.1 Parámetros de arranque del kernel
Si la Tecnología de Virtualización Intel® para E/S Dirigida (Intel® VT-d) está habilitada en el BIOS, Intel recomienda que IOMMU esté en modo de paso a través para un rendimiento óptimo de la red del host. Esto elimina la sobrecarga de DMA en el tráfico del host y permite que las máquinas virtuales (VM) sigan disfrutando de las ventajas de Intel® VT-d. Esto se logra añadiendo la siguiente línea a los parámetros de arranque del kernel: fommu-pt.
2.5 Asegúrese de que el paquete DDP se esté cargando correctamente
Los controladores base 140ea y 140eb no son compatibles directamente con la personalización dinámica de dispositivos (DDP). Para usar DDP con dispositivos de la serie 700, se requiere un controlador DDP.file Se puede aplicar con la aplicación testpmd.
Para obtener más detalles sobre DDP profiles, y cómo aplicar un DDP profile con testpmd en dispositivos de la serie 700, consulte la Guía de tecnología de personalización dinámica de dispositivos (DDP) Intel® Ethernet serie 700.
Para verificar si un profesional DDPfile se cargó exitosamente:
testpmd> ddp obtener lista 0 Profile el número es: 1
NOTA
Si el profile Si el número es 0, no se ha cargado ningún paquete DDP. En caso de un error al cargar el paquete DDP, el dispositivo pasa al modo seguro y muchas funciones de rendimiento no están disponibles. Si se producen errores al cargar el paquete DDP, se producirán problemas de rendimiento. Para obtener información sobre la solución de problemas, consulte la Guía de la tecnología de personalización dinámica de dispositivos (DDP) de la serie Ethernet 700 de Intel/*.

Mediciones de rendimiento de referencia y metodología de ajuste

3.1 Puntos de referencia del rendimiento de la red
Antes de comenzar un ejercicio de ajuste, es importante contar con una buena medición de referencia del rendimiento de su red. Por lo general, además de obtener una medición inicial del rendimiento de su aplicación/carga de trabajo específica, conviene usar una referencia estándar de rendimiento de red para verificar que su dispositivo de red esté en buen estado.
Para la optimización de un solo sistema, netperf o iperf y NetPIPE son herramientas sólidas y gratuitas de código abierto que le permiten estresar una conexión y diagnosticar problemas de rendimiento.
Netperf es eficaz tanto para pruebas de rendimiento como de latencia. NetPIPE es una herramienta específica para latencia, pero se puede compilar para cualquier tipo de entorno.
NOTA
La prueba TCP_RR en netperf devuelve la latencia en un valor de transacciones/s. Este es un número de ida y vuelta. La latencia unidireccional se puede calcular mediante la siguiente ecuación:
Latencia (usec) = (1⁄2) / [Transacciones/seg] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel recomienda iperf2 en lugar de iperf3 para la mayoría de las pruebas de rendimiento debido a su facilidad de uso y la compatibilidad con múltiples subprocesos en una sola instancia de aplicación. Intel recomienda ejecutar con la opción -P con 2-4 subprocesos para conexiones de 25 GB y entre 4 y 6 subprocesos para conexiones de 40 GB.

  • Para ejecutar tráfico unidireccional del cliente al servidor: Comando de servidor exampel: iperf2 -s
    Comando de cliente exampel: iperf2 -c -PAG
  • Para ejecutar tráfico bidireccional del cliente al servidor (y viceversa): Comando de servidor exampel: iperf2 –s –p
    Comando de cliente exampen:
    iperf2 -c -pag -PAG -–dúplex completo O
    iperf2 -c -pag -PAG -d

NOTA
Las opciones -full-duplex y -d de iperf2 permiten realizar pruebas bidireccionales. Sin embargo, la opción -full-duplex se centra específicamente en las pruebas full-duplex.
NOTA
Al probar iperf2 en varios puertos de servidor, se puede añadir el indicador -d al comando del servidor para ejecutar todas las sesiones en segundo plano desde la misma ventana de terminal. El indicador -d también se puede usar cuando el comando del servidor está incrustado en un bucle for de un script.
NOTA
Al ejecutar la prueba de rendimiento de la red con un solo flujo/subproceso (p. ej.,amp(ej.: P1), es posible que los procesadores AMD no alcancen el rendimiento esperado, especialmente las tarjetas de red (NIC) con mayor ancho de banda (si la velocidad es >= 25 Gb de ancho de banda). Por lo tanto, es necesario asignar aplicaciones a núcleos específicos para lograr un mayor rendimiento. Consulte Configuración de la aplicación en la página 22.
3.1.2 iPerf3
Si se utiliza iperf3, se requieren varias instancias de la aplicación para aprovechartage de los multihilos, RSS y colas de hardware. Intel recomienda ejecutar de 2 a 4 sesiones de aplicación para conexiones de 25G y de 4 a 6 sesiones para conexiones de 40G. Cada sesión debe especificar un valor de puerto TCP único mediante la opción -p.

  • Para ejecutar tráfico unidireccional del cliente al servidor:
    Comando de servidor exampen:
    iperf3 -s -p
    Comando de cliente exampen:
    iperf3 -c -pag
  • Para ejecutar tráfico bidireccional del cliente al servidor (y viceversa):
    Comando de servidor exampen:
    iperf3 –s –p
    Comando de cliente exampel: iperf3 -c -pag -PAG –-bidir
  • Para iniciar varias instancias (subprocesos) de iperf3, la recomendación es utilizar un bucle for para asignar subprocesos a puertos TCP y ejecutar iperf3 en segundo plano utilizando & para crear múltiples procesos en paralelo.
    Comando de servidor example, inicia 4 subprocesos: puerto=""; para i en {0..3}; hacer puerto=520$i; bash -c "iperf3 -s -p $puerto &"; hecho; Comando de cliente example, iniciar 4 subprocesos – Transmitir puerto de prueba=””; para i en {0..3}; hacer puerto=520$i; bash -c “iperf3 -c $serverIP -p $port &”; hecho; Comando de cliente example, inicie 4 subprocesos: puerto de prueba de recepción = ""; para i en {0..3}; hacer puerto = 520 $i; bash -c "iperf3 -R -c $serverIP -p $port &"; hecho; Para conexiones de 40 G, aumente el bucle for para crear hasta 6 instancias/subprocesos.

NOTA
Al ejecutar la prueba de rendimiento de la red con un solo flujo/subproceso (p. ej.,ample: P1), los procesadores AMD pueden no proporcionar el rendimiento esperado, particularmente un mayor ancho de banda
NIC (si la velocidad es >= 25 G de ancho de banda). Por lo tanto, se requiere la fijación de aplicaciones a núcleos específicos para lograr un mayor rendimiento. Consulte Configuración de la aplicación en la página 22 y AMD EPYC en la página 26.
3.1.3 rendimiento de red
La herramienta netperf es una excelente opción tanto para pruebas de rendimiento como de latencia.

  • La prueba TCP_STREAM en netperf mide la capacidad de rendimiento del dispositivo. Comando de servidor examparchivo: comando de cliente netserver exampes: netperf -t TCP_STREAM -l 30 -H
  • La prueba TCP_RR en netperf devuelve la latencia en un valor de transacciones por segundo. Este es un número de ida y vuelta. Se recomienda usar la opción -T x,x, donde x es la CPU local del dispositivo. La latencia unidireccional se puede calcular con: Latencia(usec)=(1⁄2)/[Transacciones/s]*1,000,\ Comando del servidor ej.ampel: servidor de red
    Comando de cliente exampes: netperf -t TCP_RR -l 30 -H -T x,x
  • Para iniciar varias instancias (subprocesos) de netperf, la recomendación es utilizar un bucle for para asignar subprocesos a puertos TCP y ejecutar netperf en segundo plano utilizando & para crear múltiples procesos en paralelo.
    Comando de servidor example, inicia 8 hilos:
    puerto=””; para i en {0..7}; hacer puerto=520$i; bash -c “netserver -L $IPservidor -p $puerto &”; hecho;
    Comando de cliente example, inicia 8 subprocesos: puerto=””; para i en {0..7}; hacer puerto=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; hecho;

3.2 Metodología de ajuste
Concéntrese en un cambio de ajuste a la vez para saber qué impacto tiene cada uno en su prueba. Cuanto más metódico sea en el proceso de ajuste, más fácil será identificar y abordar las causas de los cuellos de botella en el rendimiento.

Ajuste de la configuración del controlador i40e

4.1 Afinidad de IRQ
Configurar la afinidad de IRQ de modo que las interrupciones de diferentes colas de red estén afines a diferentes núcleos de CPU puede tener un gran impacto en el rendimiento, en particular en las pruebas de rendimiento de múltiples subprocesos.
Para configurar la afinidad de IRQ, detenga irqbalance y luego use el script set_irq_affinity del paquete fuente i40e o fije las colas manualmente. Desactive el balanceador de IRQ en el espacio de usuario para habilitar la fijación de colas:

  • systemctl deshabilitar irqbalance
  • systemctl detener irqbalance
    Usando el script set_irq_affinity del paquete fuente i40e (recomendado):
  • Para utilizar todos los núcleos:
    [ruta-al-paquete-i40e]/scripts/set_irq_affinity -X all ethX
  • Para utilizar solo núcleos en el socket NUMA local: [ruta-al-paquete-i40e]/scripts/set_irq_affinity -X local ethX
  • También puede seleccionar un rango de núcleos. Evite usar cpu0, ya que ejecuta tareas del temporizador. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

NOTA
El script de afinidad habilita el Direccionamiento de Paquetes de Transmisión (XPS) como parte del proceso de fijación cuando se especifica la opción -x. Cuando XPS está habilitado, Intel recomienda deshabilitar irqbalance, ya que el balanceador de kernel con XPS puede causar un rendimiento impredecible. El script de afinidad deshabilita XPS cuando se especifica la opción -X. Deshabilitar XPS y habilitar colas simétricas es beneficioso para cargas de trabajo donde el mejor rendimiento se logra cuando el tráfico de Tx y Rx se atiende en el mismo par de colas.
La configuración de colas simétricas en Linux implica ajustar los parámetros del controlador de la interfaz de red para habilitar colas de recepción simétricas (Rx) y colas de transmisión simétricas (Tx) para los adaptadores de red compatibles.
NOTA

  • Las colas simétricas son una característica de red avanzada y no todos los adaptadores o controladores de red de la serie 700 las admiten.
  • Asegúrese de tener el controlador y el soporte de hardware necesarios antes de intentar configurar colas simétricas.

Para configurar colas simétricas, siga estos pasos generales:

  1. Editar la configuración de la interfaz de red File: Utilice un editor de texto (por ejemploample, vi, nano o gedit) para editar la configuración de la interfaz de red file. El file normalmente se encuentra en el directorio /etc/sysconfig/network-scripts/ y tiene un nombre como ifcfg-ethX, donde ethX es el nombre de su interfaz de red.
  2. Agregue parámetros de cola simétrica. Agregue las siguientes líneas a la configuración de la interfaz de red. file: ETHTOOL_OPTS=”colas rx 8 colas tx 8″
  3. Reiniciar el servicio de red.
    Después de realizar los cambios, reinicie el servicio de red para aplicar la nueva configuración. sudo systemctl restart network

A mano:

  • Encuentre los procesadores conectados a cada nodo usando: numactl –hardware lscpu
  • Encuentre las máscaras de bits para cada uno de los procesadores:
  • Suponiendo los núcleos 0-11 para el nodo 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Encuentre las IRQ asignadas al puerto que se está asignando: grep ethX /proc/interrupts y anote los valores de IRQ. Por ejemploample, 181-192 para los 12 vectores cargados.
  • Reproducir el valor de afinidad de SMP en la entrada IRQ correspondiente. Tenga en cuenta que esto debe hacerse para cada entrada IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Mostrar afinidad IRQ:
  • Para mostrar la afinidad de IRQ para todos los núcleos: /scripts/set_irq_affinity -s ethX
  • Para mostrar solo los núcleos en el socket NUMA local: /scripts/set_irq_affinity -s ethX local
  • También puede seleccionar un rango de núcleos: /scripts/set_irq_affinity -s 40-0-8,16 ethX

NOTA
El script set_irq_affinity admite el indicador -s en la versión 40 y posteriores del controlador i2.16.11e.
4.2 Colas de Tx/Rx
El número predeterminado de colas habilitadas por el controlador para cada puerto Ethernet durante la inicialización es igual al número total de CPU disponibles en la plataforma. Esto funciona bien en diversas plataformas y configuraciones de carga de trabajo. Sin embargo, en plataformas con un alto número de núcleos o una alta densidad de puertos Ethernet, esta configuración puede causar contención de recursos. Por lo tanto, en algunos casos podría ser necesario modificar el valor predeterminado para cada puerto del sistema.
El número predeterminado de colas de Tx/Rx puede variar según el modelo y la versión del controlador. El número de colas se puede ajustar con el comando ethtool -L que se indica a continuación.
NOTA
En estos casos, Intel recomienda reducir el número de colas predeterminado para cada puerto a un máximo del número de CPU disponibles en el nodo NUMA local del puerto del adaptador. En algunos casos, al intentar equilibrar los recursos en implementaciones con un alto número de puertos, podría ser necesario reducir este número aún más.
Para modificar la configuración de la cola:
El siguiente ejemploample establece el puerto a 32 colas Tx/Rx: ethtool -L ethX combined 32
Examparchivo de salida:
ethtool -l ethX
Parámetros del canal para ethX: Máximos preestablecidos:
RX: 96
TX: 96
Otro: 1
Combinado: 96
Configuración actual del hardware:
RX: 0
TX: 0
Otro: 1
Combinado: 32
4.3 Moderación de interrupciones
La moderación adaptativa de interrupciones está activada por defecto y está diseñada para ofrecer un equilibrio entre un bajo consumo de CPU y un alto rendimiento. Sin embargo, puede intentar ajustar la configuración de interrupciones manualmente para adaptarla a su caso de uso.
El rango de 0 a 235 microsegundos proporciona un rango efectivo de 4,310 a 250,000 2 interrupciones por segundo. El valor de rx-μsecs-high puede configurarse independientemente de rx-μsecs y tx-μsecs en el mismo comando ethtool, y también es independiente del algoritmo de moderación adaptativa de interrupciones. El hardware subyacente admite granularidad en intervalos de XNUMX microsegundos, por lo que valores adyacentes podrían resultar en la misma tasa de interrupciones.

  • Para desactivar la moderación de interrupciones adaptativas: ethtool -C ethX adaptive-rx off adaptive-tx off
  • Para activar la moderación de interrupciones adaptativa: ethtool -C ethX adaptive-rx on adaptive-tx on

Un buen punto de partida para el ajuste general es 84 μs, o ~12000 84 interrupciones/s. Si observa que los contadores rx_dropped se ejecutan durante el tráfico (usando ethtool -S ethX), probablemente tenga una CPU demasiado lenta, búferes insuficientes del tamaño del anillo del adaptador (ethtool -G) para almacenar paquetes durante XNUMX μs o una tasa de interrupciones demasiado baja.

  • Para establecer la moderación de interrupciones a una tasa fija de 84 μs entre interrupciones (12000 interrupciones/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84. El siguiente valor que puede probar, si no ha alcanzado el máximo uso de CPU, es 62 μs. Esto consume más CPU, pero gestiona los búferes más rápido y requiere menos descriptores (tamaño de anillo, ethtool -G).
  • Para establecer la moderación de interrupciones a una tasa de interrupción fija de 62 usecs entre interrupciones (16000 interrupciones/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    Si los contadores rx_dropped aumentan durante el tráfico (usando ethtool -S ethX), probablemente la CPU sea demasiado lenta, el tamaño del anillo del adaptador no tenga suficientes búferes (ethtool -G) o la tasa de interrupciones sea demasiado baja. Si no ha alcanzado el máximo uso de la CPU, puede aumentar la tasa de interrupciones reduciendo el valor de ITR. Esto consume más CPU, pero los búferes de los servicios se almacenan más rápido y requiere menos descriptores (tamaño del anillo, ethtool -G).
    Si su CPU está al 100 %, no se recomienda aumentar la tasa de interrupciones. En ciertas circunstancias, como una carga de trabajo limitada por la CPU, podría ser conveniente aumentar el valor de μs para disponer de más tiempo de CPU para otras aplicaciones.
    Si necesita un rendimiento de baja latencia y/o tiene suficiente CPU para dedicar al procesamiento de red, puede deshabilitar la moderación de interrupciones por completo, lo que permite que las interrupciones se activen lo más rápido posible.
  • Para deshabilitar la moderación de interrupciones ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

NOTA
Al ejecutar con la moderación de interrupciones deshabilitada, la tasa de interrupciones en cada cola puede ser muy alta. Considere incluir el parámetro rx-usec-high para establecer un límite superior en la tasa de interrupciones. El siguiente comando deshabilita la moderación de interrupciones adaptativa y permite un máximo de 5 microsegundos antes de indicar que una recepción o transmisión se completó. En lugar de generar hasta 200,000 50,000 interrupciones por segundo, limita el total de interrupciones por segundo a 20 5 mediante el parámetro rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 5 rx-usecs 80 txusecs 100 Intente ajustar el temporizador de fusión de transmisión/recepción/alta prioridad a un valor superior (150/200/25/20) o inferior (10/5/XNUMX/XNUMX) para encontrar el valor óptimo para la carga de trabajo.
4.4 Tamaño del anillo
Si ve contadores rx_dropped en ethtool -S ethX (rx_dropped, rx_dropped.nic) o sospecha que hay presión de caché con varias colas activas, puede intentar ajustar el tamaño del anillo a un valor predeterminado. El valor predeterminado es 512 y el máximo es 4096.

  • Para comprobar los valores actuales: ethtool -g ethX
    Si se sospecha que la falta de almacenamiento en búfer está provocando caídas en la tasa de interrupción actual, puede probar primero con el máximo, luego con el mínimo y luego continuar con una búsqueda binaria hasta ver un rendimiento óptimo.
    Si se sospecha presión de caché (muchas colas activas), reducir los búferes predeterminados puede ayudar a que Intel® Data Direct I/O (Intel® DDIO) funcione con mayor eficiencia. Intel recomienda probar con 128 o 256 por cola, teniendo en cuenta que podría ser necesario aumentar la tasa de interrupciones mediante ethtool -C para evitar un aumento en rx_dropped.
  • Para establecer el tamaño del anillo en un valor fijo: ethtool -G eth12 rx 256 tx 256

NOTA
Para solucionar las pérdidas de paquetes Rx detectadas con ethtool -S ethX|grep drop, considere aumentar el tamaño del anillo a 4096. Experimente para encontrar la mejor configuración para la carga de trabajo, pero tenga cuidado con el uso excesivo de memoria con valores más altos.
4.5 Control de flujo
El control de flujo de capa 2 puede afectar considerablemente el rendimiento de TCP y se recomienda deshabilitarlo para la mayoría de las cargas de trabajo. Una posible excepción es el tráfico con ráfagas, donde estas no son de larga duración.
El control de flujo está deshabilitado de forma predeterminada.

  • Para habilitar el control de flujo: ethtool -A ethX rx on tx on
  • Para deshabilitar el control de flujo: ethtool -A ethX rx off tx off

NOTA
Debe tener un socio de enlace con capacidad de control de flujo para habilitar exitosamente el control de flujo.
4.6 Tramas gigantes
Cuando el entorno de tráfico previsto consiste en la transferencia de grandes bloques de datos, puede ser beneficioso habilitar la función de tramas jumbo. La compatibilidad con tramas jumbo se habilita modificando la Unidad Máxima de Transmisión (MTU) a un valor superior al predeterminado de 1500. Esto permite que el dispositivo transfiera datos en paquetes más grandes dentro del entorno de red. Esta configuración puede mejorar el rendimiento y reducir el uso de la CPU para grandes cargas de trabajo de E/S. Sin embargo, puede afectar a las cargas de trabajo de paquetes pequeños o sensibles a la latencia.
NOTA
Los marcos gigantes o configuraciones de MTU mayores deben configurarse correctamente en todo el entorno de red.
Utilice el comando ifconfig para aumentar el tamaño de MTU. Por ejemplo:ample, ingrese lo siguiente, donde es el número de interfaz: ifconfig mtu 9000 arriba
Alternativamente, puede utilizar el comando ip de la siguiente manera: ip link set mtu 9000 dev configuración del enlace IP dev

Ajuste de la plataforma (i40e no específico)

5.1 Configuración del BIOS

  • Habilite Intel® VT-d para cargas de trabajo de virtualización.
  • El hiperprocesamiento (procesadores lógicos) puede afectar el rendimiento. Experimente con él, ya sea activado o desactivado, según su carga de trabajo.
  • Intel® Turbo Boost permite que los núcleos de la CPU funcionen a una frecuencia superior a la frecuencia base. Activar Intel® Turbo Boost puede mejorar el rendimiento en muchas cargas de trabajo, pero consume más energía para mantener los núcleos a una frecuencia más alta. Experimente con Turbo Boost activado o desactivado según su carga de trabajo.

NOTA
Las frecuencias turbo no están garantizadas si la plataforma experimenta un alto uso general de la CPU. Las frecuencias turbo de núcleo más altas se reducen a medida que aumenta el uso general de la CPU.
5.2 Gestión de energía
La administración de energía puede afectar el rendimiento, especialmente en cargas de trabajo de baja latencia. Si prioriza el rendimiento sobre la reducción del consumo de energía, Intel recomienda experimentar limitando los efectos de la administración de energía. Existen muchas maneras de limitar la administración de energía, mediante herramientas del sistema operativo, la configuración del BIOS y los parámetros de arranque del kernel. Elija el método y el nivel que mejor se adapten a su entorno.
5.2.1 Control del estado C
Limitar la entrada del estado C a CO o C1 mejora el rendimiento y aumenta el uso de energía.
Deshabilitar la entrada de estado del paquete C6 de la CPU puede mejorar el rendimiento de la red. Sin embargo, esto aumenta el consumo de energía.
Las siguientes opciones están disponibles:

  • Controlar dinámicamente la entrada del estado C:
    Abierto
    /dev/cpu_dma_latency y escriba en él la latencia máxima permitida.

NOTA
Hay un pequeño programa llamado cpudmalatency.c que puede descargarse de la comunidad de código abierto, compilarse y ejecutarse desde la línea de comandos para hacer exactamente esto.
El siguiente ejemploample permite cinco μs de tiempo de activación y, por lo tanto, permite la entrada a C1: cpudmalatency 5 &

  • Limite el estado C máximo en la configuración de arranque del kernel:
    Para CPU Intel: intel_idle.max_cstates=1
    Para CPU que no sean Intel: processor.max_cstates=1
  • Utilice el comando cpupower para verificar y deshabilitar el estado C6 de la CPU: Verifique: cpupower monitor o cpupower idle-info
    Deshabilitar C6: cpupower idle-set -d3 o
    Deshabilitar estados C: cpupower idle-set -D0

Notas:

  1. Deshabilite los estados C en la CPU si el servidor cuenta con procesadores escalables Intel® Xeon® de 4.ª generación. Al habilitar o deshabilitar Hyper-Threading, deshabilitar los estados inactivos (-D0) evita que los núcleos entren en estados de bajo consumo durante los periodos de inactividad y reduce la latencia de la CPU para la transición entre los estados inactivo y activo.
  2. La gestión energética del procesador escalable Intel® Xeon® de 4.ª generación es extremadamente exigente. Para evitar que los núcleos entren en estados de bajo consumo, intente reducir el número de núcleos en uso para mantenerlos activos durante más tiempo (ethtool -L) conjunto Además, vincule interrupciones a núcleos específicos mediante la afinidad de IRQ establecida (generalmente con -x local o la lista de núcleos de CPU) y asegúrese de que la carga de trabajo se ejecute en esos mismos núcleos con tasket o numactl. Esto mejora el rendimiento al mantener los núcleos activos y optimizar la gestión de interrupciones.

Habilitar C6:
potencia de CPU inactiva-set -d3
Habilitar estados C:
potencia de CPU inactiva-set -E

  • Otro método es utilizar la herramienta tuned (incluida con muchas distribuciones de Linux) para establecer un perfil de rendimiento.file. Estos profesionalesfileModificar varias configuraciones del sistema operativo que pueden afectar el rendimiento de muchas aplicaciones. Se ha descubierto que el rendimiento de la red...file Proporciona mejoras para la mayoría de las cargas de trabajo.
    Controlar:
    tuned-adm activo
    Colocar:
    tuned-adm profile rendimiento de la red
    NOTA
    El servicio Tuned debe estar ejecutándose para los comandos anteriores. Para comprobar/reiniciar, tuned: systemctl status tuned systemctl restart tuned
    También puedes anular cualquier entrada de estado C agregando lo siguiente a la línea de arranque del kernel:
    inactivo=encuesta
  • Limite el estado C a través de la configuración de administración de energía del BIOS del sistema, lo que podría tener un impacto negativo en el rendimiento.file disponible.
    Se pueden utilizar herramientas como turbostat o x86_energy_perf_policy para comprobar o establecer configuraciones de administración de energía.

5.2.2 Administración de energía PCIe
La Administración de Energía en Estado Activo (ASPM) permite un estado de menor consumo de energía para los enlaces PCIe cuando no están en uso. Esto puede causar una mayor latencia en los dispositivos de red PCIe, por lo que Intel recomienda desactivar ASPM para cargas de trabajo sensibles a la latencia. Para desactivar ASPM, añada lo siguiente a la línea de arranque del kernel: pcie_aspm=off
5.2.3 Escala de frecuencia de la CPU
El escalado de frecuencia de CPU (o escalado de velocidad de CPU) es una técnica de gestión energética de Linux que ajusta la velocidad del reloj del sistema sobre la marcha para ahorrar energía y calor. Al igual que los estados C, esto puede causar latencia no deseada en las conexiones de red.
La herramienta cpupower también se puede utilizar para comprobar y modificar los valores predeterminados y los límites de rendimiento de la CPU:

  • Comprobar: monitor de potencia de la CPU o
  • Establecer las CPU en modo de rendimiento: cpupower frecuencia-set -g rendimiento

NOTA
Las modificaciones a los límites de frecuencia de la CPU pueden tener un impacto en muchas cargas de trabajo y podrían deshabilitar otras funciones, como el modo turbo de la CPU.
Para deshabilitar el escalado de frecuencia de la CPU, deshabilite el servicio de energía de la CPU con los siguientes comandos:
systemctl detiene cpupower.service
systemctl deshabilitar cpupower.service
5.2.4 Guía adicional de administración de energía
Se proporcionan detalles adicionales en este informe de alto nivel.view de muchas de las funciones de administración de energía en los procesadores escalables Intel® Xeon® de tercera generación, así como orientación sobre cómo se pueden integrar estas funciones a nivel de plataforma: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost acelera el procesador cuando es necesario, pero puede consumir energía adicional. Desactivar Turbo Boost mantiene el procesador a una velocidad constante, lo que proporciona un rendimiento constante para cargas de trabajo específicas.
5.4 Cortafuegos
Los firewalls pueden afectar el rendimiento, particularmente el rendimiento de latencia.
Deshabilite iptables/firewalld si no es necesario.
5.5 Configuración de la aplicación
A menudo, un solo hilo (que corresponde a una sola cola de red) no es suficiente para alcanzar el máximo ancho de banda. Algunas arquitecturas de plataforma, como AMD, tienden a descartar más paquetes Rx con un solo hilo que las plataformas con procesadores Intel.
Considere usar herramientas como tasket o numactl para anclar aplicaciones al nodo NUMA o a los núcleos de CPU locales del dispositivo de red. Para algunas cargas de trabajo, como la E/S de almacenamiento, es beneficioso mover la aplicación a un nodo no local.
Experimente aumentando el número de subprocesos utilizados por su aplicación, si es posible.
Versión del kernel 5.6
La mayoría de los kernels preinstalados modernos están bastante bien optimizados para el rendimiento, pero, según el caso de uso, actualizar el kernel podría mejorarlo. Descargar el código fuente también permite habilitar o deshabilitar ciertas funciones antes de compilar el kernel.
5.7 Configuración del sistema operativo/kernel
Consulte las guías de ajuste del sistema operativo, como la Guía de ajuste del rendimiento de red de Red Hat Enterprise Linux, para obtener más información sobre el ajuste general del sistema operativo.
En la siguiente tabla se enumeran algunos parámetros comunes para ajustar. Tenga en cuenta que estos son solo puntos de partida sugeridos, y modificarlos podría aumentar el uso de recursos del sistema. Si bien aumentar los valores puede ayudar a mejorar el rendimiento, es necesario experimentar con diferentes valores para determinar cuál funciona mejor para un sistema, una carga de trabajo y un tipo de tráfico determinados.
Los parámetros del kernel se pueden configurar mediante la utilidad sysctl en Linux como se indica a continuación.
A view Los valores predeterminados para rmem y wmem en el sistema:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Establezca los valores al máximo (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Los tamaños de búfer de socket, también conocidos como búfer de recepción (rmem) y búfer de transmisión (wmem), son parámetros del sistema que especifican la cantidad de memoria reservada para el tráfico de red entrante y saliente.
Al ejecutar sysctl sin el argumento -w se enumera el parámetro con su configuración actual.

Configuración de pila Descripción
net.core.rmem_default Tamaño de ventana de recepción predeterminado
net.core.wmem_default Tamaño de ventana de transmisión predeterminado
net.core.rmem_max Tamaño máximo de la ventana de recepción
net.core.wmem_max Tamaño máximo de la ventana de transmisión
net.core.optmem_max Búferes de memoria de opción máxima
registro de retrasos de net.core.netdev_max Acumulación de paquetes sin procesar antes de que el kernel comience a descartarse
net.ipv4.tcp_rmem Reservador de memoria para búferes de lectura TCP
net.ipv4.tcp_wmem Reservador de memoria para buffers de envío TCP

El kernel, la pila de red, el controlador de memoria, la velocidad de la CPU y los parámetros de administración de energía pueden tener un gran impacto en el rendimiento de la red. Una recomendación común es aplicar al rendimiento de la red...file Usando el comando tuned. Esto modifica algunas configuraciones del sistema operativo para dar preferencia a las aplicaciones de red.
Controlar:
tuned-adm activo
Colocar:
tuned-adm profile rendimiento de la red
5.8 Atraso en el dispositivo de red
Esta función ayuda a mejorar el rendimiento de la red gestionando eficazmente el tráfico entrante, reduciendo la pérdida de paquetes, la latencia y el rendimiento. Esto se traduce en una mejor experiencia de usuario y una respuesta más rápida del sistema.
Está habilitado de forma predeterminada en la mayoría de los sistemas operativos Linux. Para comprobar el valor predeterminado:
registro de tareas pendientes de sysctl net.core.netdev_max
El valor máximo de netdev_max_backlog puede variar según factores como la versión del kernel, el hardware, la memoria y la carga de trabajo. En muchos casos, 8192 se considera un buen valor. sysctl -w net.core.netdev_max_backlog=8192
5.9 Configuraciones y ajustes específicos de la plataforma
5.9.1 Procesadores escalables Intel® Xeon® de cuarta generación

La gestión energética del procesador escalable Intel® Xeon® de 4.ª generación es extremadamente agresiva en comparación con los procesadores escalables Intel® Xeon® de 3.ª generación. Para evitar que los núcleos entren en estados de bajo consumo, intente reducir el número de núcleos en uso para mantenerlos activos durante más tiempo.
Configuración del BIOS recomendada para obtener el máximo rendimiento

  1. Habilitar o deshabilitar Hyper-Threading (según los requisitos de carga de trabajo y los objetivos de rendimiento) en la CPU.
  2. Configurar el sistema profile Al Rendimiento para el máximo rendimiento.
    NOTA
    Esto da como resultado un mayor consumo de energía.
  3. Configure la administración de energía de la CPU en Rendimiento máximo para priorizar el máximo rendimiento de la CPU sobre la eficiencia energética.
  4. Activar Turbo Boost. Desactivar Turbo Boost en la configuración del BIOS del sistema generalmente impide que la CPU aumente dinámicamente su velocidad de reloj por encima de su frecuencia base.
  5. NOTA
    Deshabilitar Turbo Boost puede ser adecuado para ciertos casos de uso donde el rendimiento constante, la eficiencia energética o la gestión térmica se priorizan por sobre el rendimiento máximo.
  6. Desactive la función de virtualización de E/S de raíz única (SR-IOV) si el sistema no utiliza tecnologías de virtualización.
  7. Deshabilite los estados C para indicarle a la CPU que permanezca activa y evitar entrar en estados inactivos más profundos.
  8. Deshabilite C1E para garantizar que la CPU permanezca activa y no ingrese al estado inactivo C1E.
  9. Establezca la frecuencia sin núcleo al máximo para indicarle al sistema que opere a la frecuencia más alta disponible.
  10. En las plataformas Dell, configure la emulación de núcleo de tabla de descripción de APIC múltiple (MADT) en lineal (o round-robin según el BIOS) para proporcionar un mapeo claro y predecible de los núcleos de CPU.

Ajustes recomendados a nivel de sistema operativo para un rendimiento optimizado

  1. Establezca el regulador de escala de frecuencia de la CPU en rendimiento. cpupower frecuencia-set -g rendimiento cpupower frecuencia-info
  2. Deshabilitar los estados C. cpupower idle-set -D0
  3. Establezca los buffers Rx (rmem) y Tx (wmem) del núcleo al valor máximo. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. Establecer el registro de dispositivos de red. sysctl -w net.core.netdev_max_backlog=8192
  5. Establecer profesional sintonizadofile (depende de la carga de trabajo para el rendimiento/latencia).
    tuned-adm profile rendimiento de la red

Ajustes de nivel de adaptador recomendados para un rendimiento optimizado

  1. Limite el número de colas para el tráfico de la aplicación. Utilice el número mínimo de colas necesario para mantener activos los núcleos de CPU asociados y evitar que entren en estados de inactividad más profundos (ajuste según la carga de trabajo): ethtool -L combinado 32
  2. Establecer tasas de moderación de interrupciones. ethtool -C rx adaptativo desactivado tx adaptativo desactivado rx-usecs-alto 50 rx-usecs 50 tx-usecs 50
    Intente ajustar el temporizador de transmisión/recepción/coalescencia de alta prioridad a un valor más alto (80/100/150/200) o más bajo (25/20/10/5) para encontrar el valor óptimo para la carga de trabajo.
  3. Establezca los tamaños de anillo Rx/Tx. ethtool -G recepción 4096 transmisión 4096
    NOTA
    Si observa pérdidas de paquetes Rx con ethtool -S| grep drop, intente reducir el tamaño del anillo a <4096. Intente encontrar el valor óptimo para la carga de trabajo donde no se pierdan paquetes.
  4. Establezca la afinidad de IRQ. Use núcleos locales para la NIC o una asignación de núcleos específica (donde el número de núcleos es igual al número de colas establecido en 1 en la página 26). systemctl stop irqbalance set_irq_affinity -X local O establecer_afinidad_irq -X

5.9.2 AMD EPYC
Los procesadores AMD EPYC son potentes CPU diseñadas para servidores y centros de datos, basadas en la arquitectura Zen de AMD. Las siguientes configuraciones corresponden a la serie EPYC de 4.ª generación de AMD.
Configuración de BIOS recomendada para obtener el máximo rendimiento

  1. Habilite el modo personalizado para que los usuarios puedan ajustar el rendimiento de la CPU, el consumo de energía y otras configuraciones. Esto ayuda a optimizar el sistema para lograr el equilibrio perfecto entre rendimiento y eficiencia energética.
  2. Habilite la mejora del rendimiento del núcleo para permitir que la CPU aumente automáticamente su velocidad para manejar tareas más intensivas, mejorando el rendimiento general.
  3. Deshabilite el control global del estado C para evitar que la CPU ingrese a estados de ahorro de energía más profundos, conocidos como estados C, que pueden mantener la capacidad de respuesta.
    NOTA
    Deshabilitar los estados C puede generar un mayor consumo de energía y aumentar la temperatura. Supervise ambos para la carga de trabajo.
  4. Habilite o deshabilite el multihilo simultáneo (SMT) en la CPU, según los requisitos de la carga de trabajo y los objetivos de rendimiento. SMT es equivalente a Hyper-Threading en las CPU Intel.
    NOTA
    Para obtener un rendimiento optimizado, consulte Ajuste de la configuración del controlador i40e en la página 13 y Ajuste de la plataforma (i40e no específico) en la página 19 para obtener el ajuste recomendado a nivel de adaptador y sistema operativo.

Conexión del adaptador

La vinculación de Linux es una potente función que puede mejorar significativamente el rendimiento de la red, la redundancia y la tolerancia a fallos en entornos de servidor. Sin embargo, es importante tener en cuenta que requiere hardware de red compatible y una configuración adecuada tanto en el servidor como en el conmutador para su correcto funcionamiento.
El controlador de enlace de Linux permite agregar múltiples interfaces de red físicas en una interfaz enlazada. Esta interfaz enlazada se presenta como una única interfaz de red virtual para el sistema operativo y las aplicaciones.
NOTA
El enlace es una interfaz lógica, por lo que no es posible establecer la afinidad de la CPU directamente en la interfaz del enlace (por ejemplo,ample, bond0). Es decir, no tiene control directo sobre el manejo de interrupciones ni la afinidad de la CPU. La afinidad de la CPU debe configurarse para las interfaces subyacentes que forman parte del enlace.
La unión ofrece varios modos de operación, cada uno con sus propias características.

Modo  Tipo
0 Partido de ida y vuelta
1 Copia de seguridad activa
2 O-X
3 Transmisión
4 LACP
5 Equilibrio de carga de transmisión
6 Equilibrio de carga adaptativo

Existen diferentes métodos para crear un enlace en Linux. Uno de los más comunes es mediante la configuración de red. files (por ejemploampes decir, /etc/network/interfaces o /etc/sysconfig/network-scripts/ifcfg-bondX).
Configuración mediante configuración de red Files
Los siguientes pasos crean enlaces a través de la configuración de la red. files.

  1. Seleccione dos o más puertos NIC para vincular (por ejemplo,ample, ethX y ethY)
  2. Abrir configuración de NIC Files en /etc/sysconfig/network-scripts/ para la interfaz NIC requerida (por ejemploample, vi ifcfg-ethX y vi ifcfg-ethY) y agregue el siguiente texto:
    MASTER=bondN [Nota: N es un número entero para indicar el número de enlace.] SLAVE=yes
  3. Crear un script de red de enlaces file usando vi /etc/sysconfig/networkscripts/ifcfg-bondN e ingrese el siguiente texto:
    DEVICE=bondN [Nota: N es un entero para mencionar el número de enlace] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (o) ninguno
    IPADDR=200.20.2.4 [obligatorio si BOOTPROTO=ninguno] NETMASK=255.255.255.0 [obligatorio si BOOTPROTO=ninguno] NETWORK=200.20.2.0 [obligatorio si BOOTPROTO=ninguno] BROADCAST=200.20.2.255 [obligatorio si BOOTPROTO=ninguno] BONDING_OPTS=”mode=1 miimon=100″
    NOTA
    El modo puede ser cualquier número entero entre 0 y 6 según el requisito.
  4. Reinicie los servicios de red utilizando service network restart o systemctl restart NetworkManager.service

Solución de problemas de rendimiento

7.1 Utilización de la CPU
Verifique la utilización de la CPU por núcleo mientras se ejecuta la carga de trabajo.
Tenga en cuenta que la utilización por núcleo es más relevante para el rendimiento que la utilización general de la CPU, ya que proporciona una idea de la utilización de la CPU por cola de red. Si solo tiene unos pocos subprocesos ejecutando tráfico de red, es posible que solo tenga unos pocos núcleos en uso. Sin embargo, si esos núcleos están al 100 %, es probable que el rendimiento de su red esté limitado por la utilización de la CPU, por lo que es momento de realizar lo siguiente:

  1. Ajuste la moderación de IRQ/tamaño del anillo como se detalla en Moderación de interrupciones.
  2. Aumente el número de subprocesos de la aplicación para distribuir la carga de la CPU entre más núcleos. Si todos los núcleos funcionan al 100 %, es posible que su aplicación esté limitada por la CPU en lugar de por la red.

Herramientas comúnmente disponibles:

  • arriba
    — Presione 1 para expandir la lista de CPU y verificar cuáles están siendo utilizadas.
    — Observe el nivel de utilización.
    — Observe qué procesos aparecen como más activos (en la parte superior de la lista).
  • Estadísticas de MP
    El siguiente ejemploampLa línea de comandos se probó en Red Hat Enterprise Linux 7.x.
    Muestra la utilización de la CPU por núcleo (al encontrar el porcentaje total inactivo y restarlo de 100) y resalta los valores superiores al 80 % en rojo. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column
  • perf top Busque dónde se están gastando los ciclos.

7.2 Contadores i40e
El controlador i40e proporciona una larga lista de contadores para la depuración y monitorización de la interfaz mediante el comando ethtool -S ethX. Puede ser útil observar la salida mientras se ejecuta una carga de trabajo o comparar los valores de los contadores antes y después de ejecutarla.

  • Para obtener un volcado completo de los contadores i40e: ethtool -S ethX
  • Para observar solo los contadores distintos de cero: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    Algunas cosas a tener en cuenta:
  • rx_dropped significa que la CPU no está dando servicio a los buffers con la suficiente rapidez.
  • port.rx_dropped significa que algo no es lo suficientemente rápido en la ranura/memoria/sistema.

7.3 Contadores de red
Compruebe netstat -s antes/después de ejecutar una carga de trabajo.
Netstat recopila información de red de todos los dispositivos del sistema. Por lo tanto, los resultados podrían verse afectados por redes distintas a la red bajo prueba. El resultado de netstat -s puede ser un buen indicador de problemas de rendimiento en el sistema operativo o el kernel de Linux. Consulte las guías de ajuste del sistema operativo, como la Guía de ajuste del rendimiento de red de Red Hat Enterprise Linux, para obtener más información sobre el ajuste general del sistema operativo.
7.4 Registros del sistema
Compruebe los registros del sistema en busca de errores y advertencias (/var/log/messages, dmesg).
7.5 Herramienta Intel svr-info
Intel proporciona una herramienta svr-info (ver https://github.com/intel/svr-info) para Linux que captura detalles relevantes de hardware y software de un servidor. La salida de svr-info puede ser extremadamente útil para identificar cuellos de botella del sistema o configuraciones/ajustes que no están optimizados para la carga de trabajo. Al abrir un caso de soporte con Intel por problemas de rendimiento relacionados con Ethernet, asegúrese de incluir la salida de svr-info (texto). file) para cada servidor Linux en la configuración de prueba.

  1. Descargue e instale svr-info:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
    ./svr-info
    > nombredehost.txt
  2. Recoger la salida:
    ./svr-info > nombredehost.txt
  3. Adjuntar un texto (.txt) file para cada servidor según su caso de soporte de Intel para su análisis.

Recomendaciones para escenarios de rendimiento comunes

8.1 Reenvío de IP

  • Actualizar el kernel.
    Algunos kernels recientes de la distribución han reducido el rendimiento del enrutamiento debido a cambios en el código de enrutamiento, comenzando con la eliminación de la caché de enrutamiento por motivos de seguridad. Los kernels recientes de otras distribuciones deberían contar con parches que alivien el impacto de estos cambios en el rendimiento y podrían proporcionar un rendimiento mejorado.
  • Deshabilitar hyper-threading (núcleos lógicos).
  • Editar los parámetros de arranque del kernel.
    — Fuerza la desactivación de iommu (intel_iommu=off o iommu=off) desde la línea de arranque del kernel a menos que sea necesario para la virtualización
    — Desactivar la administración de energía: procesador.max_cstates=1 idle=poll pcie_aspm=off
  • Limite la cantidad de colas para que sea igual a la cantidad de núcleos en el socket local (12 en este ejemplo).ample). ethtool -L ethX combinado 12
  • Las interrupciones del pin solo se asignan al socket local. set_irq_affinity -X local ethX O set_irq_affinity -X local ethX
    NOTA
    Se puede utilizar -X o -x dependiendo de la carga de trabajo.
  • Cambie los tamaños de los anillos de Tx y Rx según sea necesario. Un valor mayor consume más recursos, pero puede proporcionar mejores velocidades de reenvío. ethtool -G ethX rx 4096 tx 4096
  • Deshabilite GRO al enrutar.
    Debido a un problema conocido del kernel, GRO debe desactivarse durante el enrutamiento o reenvío. ethtool -K ethX gro off donde ethX es la interfaz Ethernet que se modificará.
  • Deshabilite la moderación de interrupciones adaptativas y establezca un valor estático. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

NOTA
Dependiendo del tipo de procesador y carga de trabajo, los parámetros de fusión para RX y TX se pueden ajustar para lograr un mejor rendimiento (o menor pérdida de cuadros).

  • Desactivar el firewall. sudo systemctl disabled firewalld sudo systemctl stop firewalld
  • Habilitar el reenvío de IP. sysctl -w net.ipv4.ip_forward=1
  • Configure valores máximos para los tamaños de búfer del socket de recepción y envío. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

NOTA
Dependiendo de la carga de trabajo o el requisito, estos valores pueden modificarse con respecto a los predeterminados.
8.2 Baja latencia

  • Desactive el hyper-threading (núcleos lógicos).
  • Asegúrese de que el dispositivo de red sea local para numa core 0.
  • Fije el punto de referencia al núcleo 0 usando tasket -c 0.
  • Desactive irqbalance usando systemctl stop irqbalance o systemctl disabled irqbalance
  • Ejecute el script de afinidad para distribuirlo entre los núcleos. Pruebe con la opción local o con todos.
  • Desactivar la moderación de interrupciones. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
  • Limite el número de colas para que sea igual al número de núcleos en el socket local (32 en este ejemplo)ample). ethtool -L ethX combinado 32
  • Las interrupciones del pin se asignan solo al socket local (script incluido con el código fuente del controlador i40e). set_irq_affinity -X local ethX
  • Utilice un punto de referencia establecido como netperf -t TCP_RR, netperf -t UDP_RR o NetPipe. netperf -t TCP_RR o netperf -t UDP_RR
  • Fije el punto de referencia a un solo núcleo en el nodo NUMA local. tasket -c

Intel® Ethernet serie 700
Guía de ajuste del rendimiento de Linux
Diciembre de 2024
Doc. Núm.: 334019, Rev.: 1.2

Documentos / Recursos

Ajuste del rendimiento de Linux de la serie Intel Ethernet 700 [pdf] Guía del usuario
334019, Ajuste del rendimiento de Linux de la serie Ethernet 700, Ethernet 700, Ajuste del rendimiento de Linux, Ajuste del rendimiento, Ajuste

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *