Red Hat Training

A Red Hat training course is available for RHEL 8

21.3. Configuração de pesquisas de opinião pública ocupadas

Se a análise revelar alta latência, seu sistema pode se beneficiar do recebimento de pacotes baseado em pesquisas e não em interrupções.

A pesquisa ocupada ajuda a reduzir a latência no caminho de recepção da rede, permitindo que o código da camada do soquete faça a pesquisa da fila de recepção de um dispositivo de rede, e desativa as interrupções da rede. Isto elimina os atrasos causados pela interrupção e a mudança de contexto resultante. Entretanto, também aumenta a utilização da CPU. A pesquisa ocupada também impede a CPU de dormir, o que pode acarretar consumo adicional de energia. O comportamento de pesquisas ocupadas é suportado por todos os drivers do dispositivo.

21.3.1. Possibilitando pesquisas de opinião pública ocupadas

Por padrão, a votação ocupada está desativada. Este procedimento descreve como habilitar as pesquisas de opinião pública ocupadas.

Procedimento

  1. Certifique-se de que a opção de compilação CONFIG_NET_RX_BUSY_POLL esteja habilitada:

    # cat /boot/config-$(uname -r) | grep CONFIG_NET_RX_BUSY_POLL
    CONFIG_NET_RX_BUSY_POLL=y
  2. Possibilitar pesquisas de opinião pública ocupadas

    1. Para permitir uma votação ocupada em tomadas específicas, defina o valor do kernel sysctl.net.core.busy_poll para um valor diferente 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 o número de microssegundos para esperar por pacotes na sondagem do soquete e selecionar syscalls. A Red Hat recomenda um valor de 50.

    2. Adicione a opção de soquete SO_BUSY_POLL ao soquete.
    3. Para permitir pesquisas de opinião em todo o mundo, defina o sysctl.net.core.busy_read para um valor diferente 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

      O parâmetro net.core.busy_read controla o número de microssegundos para esperar por pacotes na fila do dispositivo para leituras de soquetes. Ele também define o valor padrão do SO_BUSY_POLL option. A Red Hat recomenda um valor de 50 para um pequeno número de soquetes, e um valor de 100 para um grande número de soquetes. Para números extremamente grandes de soquetes, por exemplo, mais de várias centenas, use ao invés disso a chamada ao sistema epoll.

Etapas de verificação

  • Verificar se a pesquisa está habilitada

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

Recursos adicionais