Red Hat Training
A Red Hat training course is available for RHEL 8
21.4. Escalado del lado de la recepción
El Receive-Side Scaling (RSS), también conocido como recepción multicola, distribuye el procesamiento de la recepción de la red entre varias colas de recepción basadas en hardware, lo que permite que el tráfico de red entrante sea procesado por varias CPU. El RSS puede utilizarse para aliviar los cuellos de botella en el procesamiento de las interrupciones de recepción causados por la sobrecarga de una sola CPU, y para reducir la latencia de la red. Por defecto, el RSS está activado.
El número de colas o las CPUs que deben procesar la actividad de la red para el RSS se configuran en el controlador del dispositivo de red correspondiente:
-
Para el controlador
bnx2x
, se configura en el parámetronum_queues
. -
Para el controlador
sfc
, se configura en el parámetrorss_cpus
.
En cualquier caso, se suele configurar en el directorio /sys/class/net/device/queues/rx-queue/
donde device es el nombre del dispositivo de red (como enp1s0
) y rx-queue es el nombre de la cola de recepción correspondiente.
El demonio irqbalance
puede utilizarse junto con RSS para reducir la probabilidad de transferencias de memoria entre nodos y el rebote de líneas de caché. Esto disminuye la latencia del procesamiento de paquetes de red.
21.4.1. Visualización de las colas de peticiones de interrupción
Al configurar el RSS, Red Hat recomienda limitar el número de colas a una por núcleo físico de CPU. Los hiperhilos suelen representarse como núcleos separados en las herramientas de análisis, pero la configuración de colas para todos los núcleos, incluidos los núcleos lógicos como los hiperhilos, no ha demostrado ser beneficiosa para el rendimiento de la red.
Cuando está activado, el RSS distribuye el procesamiento de red de forma equitativa entre las CPUs disponibles, basándose en la cantidad de procesamiento que cada CPU tiene en cola. Sin embargo, utilice los parámetros --show-rxfh-indir
y --set-rxfh-indir
de la utilidad ethtool
, para modificar la forma en que RHEL distribuye la actividad de red, y ponderar ciertos tipos de actividad de red como más importantes que otros.
Este procedimiento describe cómo ver las colas de peticiones de interrupción.
Procedimiento
Para determinar si su tarjeta de interfaz de red es compatible con RSS, compruebe si hay varias colas de solicitud de interrupción asociadas a la interfaz en
/proc/interrupts
:# egrep 'CPU|p1p1' /proc/interrupts CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 89: 40187 0 0 0 0 0 IR-PCI-MSI-edge p1p1-0 90: 0 790 0 0 0 0 IR-PCI-MSI-edge p1p1-1 91: 0 0 959 0 0 0 IR-PCI-MSI-edge p1p1-2 92: 0 0 0 3310 0 0 IR-PCI-MSI-edge p1p1-3 93: 0 0 0 0 622 0 IR-PCI-MSI-edge p1p1-4 94: 0 0 0 0 0 2475 IR-PCI-MSI-edge p1p1-5
La salida muestra que el controlador NIC creó 6 colas de recepción para la interfaz
p1p1
(p1p1-0
hastap1p1-5
). También muestra cuántas interrupciones fueron procesadas por cada cola, y qué CPU atendió la interrupción. En este caso, hay 6 colas porque por defecto, este controlador NIC en particular crea una cola por CPU, y este sistema tiene 6 CPUs. Este es un patrón bastante común entre los controladores NIC.Para listar la cola de peticiones de interrupción de un dispositivo PCI con la dirección
0000:01:00.0
:# ls -1 /sys/devices/*/*/0000:01:00.0/msi_irqs 101 102 103 104 105 106 107 108 109