Red Hat Training

A Red Hat training course is available for RHEL 8

21.3. Configurar el sondeo de ocupado

Si el análisis revela una alta latencia, su sistema puede beneficiarse de la recepción de paquetes basada en el sondeo en lugar de en la interrupción.

El sondeo ocupado ayuda a reducir la latencia en la ruta de recepción de la red al permitir que el código de la capa de socket sondee la cola de recepción de un dispositivo de red, y desactiva las interrupciones de la red. Esto elimina los retrasos causados por la interrupción y el cambio de contexto resultante. Sin embargo, también aumenta la utilización de la CPU. El sondeo ocupado también evita que la CPU entre en reposo, lo que puede suponer un consumo adicional de energía. El comportamiento de sondeo ocupado es soportado por todos los controladores de dispositivos.

21.3.1. Habilitación del sondeo ocupado

Por defecto, el sondeo de ocupado está desactivado. Este procedimiento describe cómo habilitar el sondeo de ocupado.

Procedimiento

  1. Asegúrese de que la opción de compilación CONFIG_NET_RX_BUSY_POLL está activada:

    # cat /boot/config-$(uname -r) | grep CONFIG_NET_RX_BUSY_POLL
    CONFIG_NET_RX_BUSY_POLL=y
  2. Habilitar el sondeo de ocupado

    1. Para habilitar el sondeo de ocupado en sockets específicos, establezca el valor del kernel sysctl.net.core.busy_poll a un valor distinto de 0:

      # echo "net.core.busy_poll=50" > /etc/sysctl.d/95-enable-busy-polling-for-sockets.conf
      # sysctl -p /etc/sysctl.d/95-enable-busy-polling-for-sockets.conf

      Este parámetro controla el número de microsegundos de espera de los paquetes en el sondeo del socket y selecciona syscalls. Red Hat recomienda un valor de 50.

    2. Añade la opción de enchufe SO_BUSY_POLL al enchufe.
    3. Para habilitar el sondeo de ocupado de forma global, establezca en sysctl.net.core.busy_read un valor distinto de 0:

      # echo "net.core.busy_read=50" > /etc/sysctl.d/95-enable-busy-polling-globally.conf
      # sysctl -p /etc/sysctl.d/95-enable-busy-polling-globally.conf

      El parámetro net.core.busy_read controla el número de microsegundos de espera de los paquetes en la cola del dispositivo para las lecturas de socket. También establece el valor por defecto de SO_BUSY_POLL option. Red Hat recomienda un valor de 50 para un pequeño número de sockets y un valor de 100 para un gran número de sockets. Para números extremadamente grandes de sockets, por ejemplo más de varios cientos, utilice la llamada al sistema epoll en su lugar.

Pasos de verificación

  • Verificar si el sondeo de ocupación está activado

    # ethtool -k device | grep "busy-poll"
    busy-poll: on [fixed]
    
    # cat /proc/sys/net/core/busy_read
    50

Recursos adicionales