Red Hat Training

A Red Hat training course is available for RHEL 8

21.4. Escala do lado da recepção

Receive-Side Scaling (RSS), também conhecido como recepção em várias filas, distribui o processamento de recepção da rede por várias filas de recepção baseadas em hardware, permitindo que o tráfego de entrada da rede seja processado por várias CPUs. RSS pode ser usado para aliviar gargalos no processamento de interrupção de recepção causados pela sobrecarga de uma única CPU e para reduzir a latência da rede. Por padrão, o RSS é ativado.

O número de filas ou CPUs que devem processar a atividade de rede para RSS são configuradas no driver do dispositivo de rede apropriado:

  • Para o motorista bnx2x, ele está configurado no parâmetro num_queues.
  • Para o motorista sfc, ele está configurado no parâmetro rss_cpus.

Independentemente disso, ela é tipicamente configurada no /sys/class/net/device/queues/rx-queue/ onde device é o nome do dispositivo de rede (como enp1s0) e rx-queue é o nome da fila de recepção apropriada.

O daemon irqbalance pode ser usado em conjunto com RSS para reduzir a probabilidade de transferência de memória entre nós e de salto de linha de cache. Isto reduz a latência do processamento de pacotes de rede.

21.4.1. Visualizando as filas de pedidos de interrupção

Ao configurar o RSS, a Red Hat recomenda limitar o número de filas a uma por núcleo físico da CPU. Hiperfilas são freqüentemente representadas como núcleos separados em ferramentas de análise, mas a configuração de filas para todos os núcleos, incluindo núcleos lógicos, tais como hiperfilas, não se mostrou benéfica para o desempenho da rede.

Quando ativado, o RSS distribui o processamento da rede igualmente entre as CPUs disponíveis com base na quantidade de processamento que cada CPU tem em fila de espera. Entretanto, use os parâmetros --show-rxfh-indir e --set-rxfh-indir do utilitário ethtool, para modificar como a RHEL distribui a atividade da rede, e pesar certos tipos de atividade de rede como mais importantes do que outros.

Este procedimento descreve como visualizar as filas de pedidos de interrupção.

Procedimento

  • Para determinar se sua placa de interface de rede suporta RSS, verifique se as filas de pedidos de interrupção múltipla estão associadas à interface em /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

    A saída mostra que o driver NIC criou 6 filas de recepção para a interface p1p1 (p1p1-0 até p1p1-5). Também mostra quantas interrupções foram processadas por cada fila, e qual CPU atendeu a interrupção. Neste caso, há 6 filas porque, por padrão, este driver NIC específico cria uma fila por CPU, e este sistema tem 6 CPUs. Este é um padrão bastante comum entre os drivers de DNIs.

  • Para listar a fila de pedidos de interrupção para um dispositivo PCI com o endereço 0000:01:00.0:

    # ls -1 /sys/devices/*/*/0000:01:00.0/msi_irqs
    101
    102
    103
    104
    105
    106
    107
    108
    109